Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5564 | serge | 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 extension 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 |
||
63 | TexImage2D and TexSubImage2D: |
||
64 | |||
65 | YCBCR_MESA 0x8757 |
||
66 | |||
67 | Accepted by the |
||
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 field 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 |
||
177 | MESA_YCBCR but |
||
178 | |||
179 | INVALID_ENUM is generated by TexImage2D if |
||
180 |
|
||
181 | |||
182 | INVALID_VALUE is generated by TexImage2D if |
||
183 |
|
||
184 | |||
185 | INVALID_OPERATION is generated by TexSubImage2D if the internal image |
||
186 | format is YCBCR_MESA and |
||
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 |