OSDN Git Service

egl: Add support for EGL_KHR_image_base.
[android-x86/external-mesa.git] / docs / MESA_ycbcr_texture.spec
1 Name
2
3     MESA_ycbcr_texture
4
5 Name Strings
6
7     GL_MESA_ycbcr_texture
8
9 Contact
10
11     Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com)
12     Keith Whitwell, Tungsten Graphics, Inc.  (keith 'at' tungstengraphics.com)
13
14 Status
15
16     Shipping (Mesa 4.0.4 and later)
17
18 Version
19
20     1.0
21
22 Number
23
24     TBD
25
26 Dependencies
27
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.
31
32 Overview
33
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).
40
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.
47
48 IP Status
49
50     None
51
52 Issues
53
54     None
55
56 New Procedures and Functions
57
58     None
59
60 New Tokens
61
62     Accepted by the <internalFormat> and <format> parameters of
63     TexImage2D and TexSubImage2D:
64
65         YCBCR_MESA                   0x8757
66
67     Accepted by the <type> parameter of TexImage2D and TexSubImage2D:
68
69         UNSIGNED_SHORT_8_8_MESA      0x85BA /* same as Apple's */
70         UNSIGNED_SHORT_8_8_REV_MESA  0x85BB /* same as Apple's */
71
72 Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
73
74     None
75
76 Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
77
78     In section 3.6.4, Rasterization of Pixel Rectangles, on page 101,
79     add the following to Table 3.8 (Packed pixel formats):
80     
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
86
87
88     In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
89     add the following to Table 3.10 (UNSIGNED_SHORT formats):
90
91     UNSIGNED_SHORT_8_8_MESA:
92
93       15  14  13  12  11  10  9   8   7   6   5   4   3   2   1   0
94     +-------------------------------+-------------------------------+
95     |              1st              |              2nd              |
96     +-------------------------------+-------------------------------+
97                         
98     UNSIGNED_SHORT_8_8_REV_MESA:
99
100       15  14  13  12  11  10  9   8   7   6   5   4   3   2   1   0
101     +-------------------------------+-------------------------------+
102     |              2nd              |              1st              |
103     +-------------------------------+-------------------------------+
104
105
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):
108
109                        First       Second     Third      Fourth
110     Format             Element     Element    Element    Element
111     ------             -------     -------    -------    -------
112     YCBCR_MESA         luminance   chroma
113
114
115     In section 3.8.1, Texture Image Specification, on page 125, add
116     another item to the list of TexImage2D and TexImage3D equivalence
117     exceptions:
118
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.
130
131
132     In section 3.8.1, Texture Image Specification, on page 126, add
133     another item to the list of TexImage1D and TexImage2D equivalence
134     exceptions:
135
136     * The value of internalformat and format can not be YCBCR_MESA.
137
138
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
141     page:
142
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."
146
147
148 Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
149 Operations and the Frame Buffer)
150
151     None
152
153 Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
154
155     None
156
157 Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
158 State Requests)
159
160     None
161
162 Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
163
164     None
165
166 Additions to the AGL/GLX/WGL Specifications
167
168     None
169
170 GLX Protocol
171
172     None
173
174 Errors
175
176     INVALID_ENUM is generated by TexImage2D if <internalFormat> is
177     MESA_YCBCR but <format> is not MESA_YCBCR.
178
179     INVALID_ENUM is generated by TexImage2D if <format> is MESA_YCBCR but
180     <internalFormat> is not MESA_YCBCR.
181
182     INVALID_VALUE is generated by TexImage2D if <format> is MESA_YCBCR and
183     <internalFormat> is MESA_YCBCR and <border> is not zero.
184
185     INVALID_OPERATION is generated by TexSubImage2D if the internal image
186     format is YCBCR_MESA and <format> is not YCBCR_MESA.
187
188     INVALID_OPERATION is generated by CopyTexSubImage2D if the internal
189     image is YCBCR_MESA.
190     
191 New State
192
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
195     YCBCR_MESA.
196
197 Revision History
198
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
203                         registry.
204      3 April 2004 - fix assorted inaccuracies