11 Brian Paul
, Tungsten Graphics
, Inc.
(brian '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
in the YCbCr format. There is
35 no support
for converting YCbCr images to RGB or vice versa. The
36 intention is
for YCbCr image data to be directly sent to the renderer
37 without any pixel transfer operations. Only
2D texture images are
38 supported
(not glDrawPixels
, glReadPixels
, etc
).
40 A YCbCr pixel
(texel
) is a
16-bit unsigned short with two components.
41 The first component is luminance
(Y
). For pixels
in even
-numbered
42 image columns
, the second component is Cb. For pixels
in odd
-numbered
43 image columns
, the second component is Cr. If one were to convert the
44 data to RGB one would need to examine two pixels from columns N and N
+1
45 (where N is even
) to deduce the RGB color.
55 New Procedures and Functions
61 Accepted by the
<internalFormat
> and
<format
> parameters of
62 TexImage2D and TexSubImage2D
:
66 Accepted by the
<type> parameter of TexImage2D and TexSubImage2D
:
68 GL_UNSIGNED_SHORT_8_8_MESA
0x85BA /* same as Apple's
*/
69 GL_UNSIGNED_SHORT_8_8_REV_MESA
0x85BB /* same as Apple's
*/
71 Additions to Chapter
2 of the OpenGL
1.4 Specification
(OpenGL Operation
)
75 Additions to Chapter
3 of the OpenGL
1.4 Specification
(Rasterization
)
77 In section
3.6.4, Rasterization of Pixel Rectangles
, on page
102,
78 add the following to Table
3.8 (Packed pixel formats
):
80 type Parameter GL Data Number of Matching
81 Token
Name Type Components Pixel Formats
82 -------------- ------- ---------- -------------
83 UNSIGNED_SHORT_8_8_MESA ushort
3 YCBCR_422_MESA
84 UNSIGNED_SHORT_8_8_REV_MESA ushort
3 YCBCR_422_MESA
87 In section
3.6.4, Rasterization of Pixel Rectangles
, on page
102,
88 add the following to Table
3.10 (UNSIGNED_SHORT formats
):
90 UNSIGNED_SHORT_8_8_MESA
:
92 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
93 +-------------------------------+-------------------------------+
95 +-------------------------------+-------------------------------+
97 UNSIGNED_SHORT_8_8_REV_MESA
:
99 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
100 +-------------------------------+-------------------------------+
102 +-------------------------------+-------------------------------+
105 In section
3.6.4, Rasterization of Pixel Rectangles
, on page
102,
106 add the following to Table
3.12 (Packed pixel fiedl assignments
):
108 First Second Third Fourth
109 Format Element Element Element Element
110 ------ ------- ------- ------- -------
111 YCBCR_422_MESA luminance chroma
114 In section
3.8.1, Texture Image Specification
, on page
125, add
115 another item to the list of TexImage2D and TexImage3D equivalence
118 * The value of internalformat and format may be YCBCR_MESA to
119 indicate that the image data is
in YCbCr format.
type must
120 be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA
121 as seen
in tables
3.8 and
3.10. Table
3.12 describes the mapping
122 between Y and Cb
/Cr to the components.
123 If NV_texture_rectangle is supported target may also be
124 TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV.
125 All pixel transfer operations are bypassed. The texture is stored as
126 YCbCr
, not RGB. Queries of the texture's red
, green and blue component
127 sizes will
return zero.
130 In section
3.8.1, Texture Image Specification
, on page
126, add
131 another item to the list of TexImage1D and TexImage2D equivalence
134 * The value of internalformat and format can not be YCBCR_MESA.
137 In section
3.8.2, Alternate Texture Image Specification Commands
, on
138 page
129, insert this paragraph after the first full paragraph on the
141 "If the internal storage format of the image being updated by
142 TexSubImage2D is YCBCR_MESA
then format must be YCBCR_MESA.
143 The error INVALID_OPERATION will be generated otherwise."
146 Additions to Chapter
4 of the OpenGL
1.4 Specification
(Per
-Fragment
147 Operations and the Frame Buffer
)
151 Additions to Chapter
5 of the OpenGL
1.4 Specification
(Special Functions
)
155 Additions to Chapter
6 of the OpenGL
1.4 Specification
(State and
160 Additions to Appendix A of the OpenGL
1.4 Specification
(Invariance
)
164 Additions to the AGL
/GLX
/WGL Specifications
174 INVALID_ENUM is generated by TexImage2D
if <internalFormat
> is
175 MESA_YCBCR but
<format
> is not MESA_YCBCR.
177 INVALID_ENUM is generated by TexImage2D
if <format
> is MESA_YCBCR but
178 <internalFormat
> is not MESA_YCBCR.
180 INVALID_VALUE is generated by TexImage2D
if <format
> is MESA_YCBCR and
181 <internalFormat
> is MESA_YCBCR and
<border
> is not zero.
183 INVALID_OPERATION is generated by TexSubImage2D
if the internal image
184 format is YCBCR_MESA and format is not YCBCR_MESA.
186 INVALID_OPERATION is generated by CopyTexSubImage2D
if the internal
191 Edit table
6.16 on page
231: change the
type of TEXTURE_INTERNAL_FORMAT
192 from n x Z42 to n x Z43 to indicate that internal format may also be
197 20 September
2002 - Initial draft