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 extension 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 field 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