11 Brian Paul
, Tungsten Graphics
, Inc.
(brian.paul 'at' tungstengraphics.com
)
12 Keith Whitwell
, Tungsten Graphics
, Inc.
(keith 'at' tungstengraphics.com
)
16 Shipping
(Mesa
4.0.4 and later
)
28 OpenGL
1.0 or later is required
29 This extensions is written against the OpenGL
1.4 Specification.
30 NV_texture_rectangle effects the definition of this extension.
34 This extension supports texture images stored
in the YCbCr format.
35 There is no support
for converting YCbCr images to RGB or vice versa
36 during pixel transfer. The texture's YCbCr colors are converted to
37 RGB during texture sampling
, after
-which
, all the usual per
-fragment
38 operations take place. Only
2D texture images are supported
(not
39 glDrawPixels
, glReadPixels
, etc
).
41 A YCbCr pixel
(texel
) is a
16-bit unsigned short with two components.
42 The first component is luminance
(Y
). For pixels
in even
-numbered
43 image columns
, the second component is Cb. For pixels
in odd
-numbered
44 image columns
, the second component is Cr. If one were to convert the
45 data to RGB one would need to examine two pixels from columns N and N
+1
46 (where N is even
) to deduce the RGB color.
56 New Procedures and Functions
62 Accepted by the
<internalFormat
> and
<format
> parameters of
63 TexImage2D and TexSubImage2D
:
67 Accepted by the
<type> parameter of TexImage2D and TexSubImage2D
:
69 UNSIGNED_SHORT_8_8_MESA
0x85BA /* same as Apple's
*/
70 UNSIGNED_SHORT_8_8_REV_MESA
0x85BB /* same as Apple's
*/
72 Additions to Chapter
2 of the OpenGL
1.4 Specification
(OpenGL Operation
)
76 Additions to Chapter
3 of the OpenGL
1.4 Specification
(Rasterization
)
78 In section
3.6.4, Rasterization of Pixel Rectangles
, on page
101,
79 add the following to Table
3.8 (Packed pixel formats
):
81 type Parameter GL Data Number of Matching
82 Token
Name Type Components Pixel Formats
83 -------------- ------- ---------- -------------
84 UNSIGNED_SHORT_8_8_MESA ushort
2 YCBCR_MESA
85 UNSIGNED_SHORT_8_8_REV_MESA ushort
2 YCBCR_MESA
88 In section
3.6.4, Rasterization of Pixel Rectangles
, on page
102,
89 add the following to Table
3.10 (UNSIGNED_SHORT formats
):
91 UNSIGNED_SHORT_8_8_MESA
:
93 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
94 +-------------------------------+-------------------------------+
96 +-------------------------------+-------------------------------+
98 UNSIGNED_SHORT_8_8_REV_MESA
:
100 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
101 +-------------------------------+-------------------------------+
103 +-------------------------------+-------------------------------+
106 In section
3.6.4, Rasterization of Pixel Rectangles
, on page
104,
107 add the following to Table
3.12 (Packed pixel fiedl assignments
):
109 First Second Third Fourth
110 Format Element Element Element Element
111 ------ ------- ------- ------- -------
112 YCBCR_MESA luminance chroma
115 In section
3.8.1, Texture Image Specification
, on page
125, add
116 another item to the list of TexImage2D and TexImage3D equivalence
119 * The value of internalformat and format may be YCBCR_MESA to
120 indicate that the image data is
in YCbCr format.
type must
121 be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA
122 as seen
in tables
3.8 and
3.10. Table
3.12 describes the mapping
123 between Y and Cb
/Cr to the components.
124 If NV_texture_rectangle is supported target may also be
125 TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV.
126 All pixel transfer operations are bypassed. The texture is stored as
127 YCbCr
, not RGB. Queries of the texture's red
, green and blue component
128 sizes will
return zero. The YCbCr colors are converted to RGB during
129 texture sampling using an implementation dependent conversion.
132 In section
3.8.1, Texture Image Specification
, on page
126, add
133 another item to the list of TexImage1D and TexImage2D equivalence
136 * The value of internalformat and format can not be YCBCR_MESA.
139 In section
3.8.2, Alternate Texture Image Specification Commands
, on
140 page
129, insert this paragraph after the first full paragraph on the
143 "If the internal storage format of the image being updated by
144 TexSubImage2D is YCBCR_MESA
then format must be YCBCR_MESA.
145 The error INVALID_OPERATION will be generated otherwise."
148 Additions to Chapter
4 of the OpenGL
1.4 Specification
(Per
-Fragment
149 Operations and the Frame Buffer
)
153 Additions to Chapter
5 of the OpenGL
1.4 Specification
(Special Functions
)
157 Additions to Chapter
6 of the OpenGL
1.4 Specification
(State and
162 Additions to Appendix A of the OpenGL
1.4 Specification
(Invariance
)
166 Additions to the AGL
/GLX
/WGL Specifications
176 INVALID_ENUM is generated by TexImage2D
if <internalFormat
> is
177 MESA_YCBCR but
<format
> is not MESA_YCBCR.
179 INVALID_ENUM is generated by TexImage2D
if <format
> is MESA_YCBCR but
180 <internalFormat
> is not MESA_YCBCR.
182 INVALID_VALUE is generated by TexImage2D
if <format
> is MESA_YCBCR and
183 <internalFormat
> is MESA_YCBCR and
<border
> is not zero.
185 INVALID_OPERATION is generated by TexSubImage2D
if the internal image
186 format is YCBCR_MESA and
<format
> is not YCBCR_MESA.
188 INVALID_OPERATION is generated by CopyTexSubImage2D
if the internal
193 Edit table
6.16 on page
231: change the
type of TEXTURE_INTERNAL_FORMAT
194 from n x Z42 to n x Z43 to indicate that internal format may also be
199 20 September
2002 - Initial draft
200 29 April
2003 - minor updates
201 3 September
2003 - further clarify when YCbCr
->RGB conversion takes place
202 19 September
2003 - a few more updates prior to submitting to extension
204 3 April
2004 - fix assorted inaccuracies