Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 Name
3 ANGLE_depth_texture
5 Name Strings
7 GL_ANGLE_depth_texture
9 Contributors
11 Nicolas Capens, TransGaming
12 Daniel Koch, TransGaming
13 Shannon Woods, TransGaming
14 Kenneth Russell, Google
15 Vangelis Kokkevis, Google
16 Gregg Tavares, Google
17 Contributors to OES_depth_texture
18 Contributors to OES_packed_depth_stencil
20 Contact
22 Shannon Woods, TransGaming (shannon 'dot' woods 'at' transgaming.com)
24 Status
26 Implemented in ANGLE.
28 Version
30 Last Modified Date: February 25, 2013
31 Revision: #4
33 Number
35 TBD
37 Dependencies
39 OpenGL ES 2.0 is required.
40 This extension is written against the OpenGL ES 2.0.25 specification
42 OES_packed_depth_stencil affects the definition of this extension.
44 EXT_texture_storage affects the definition of this extension.
46 Overview
48 This extension defines support for 2D depth and depth-stencil
49 textures in an OpenGL ES implementation.
51 This extension incorporates the depth texturing functionality of
52 OES_depth_texture and OES_packed_depth_stencil, but does not
53 provide the ability to load existing data via TexImage2D or
54 TexSubImage2D. This extension also allows implementation
55 variability in which components from a sampled depth texture
56 contain the depth data. Depth textures created with this
57 extension only support 1 level.
59 New Procedures and Functions
61 None
63 New Tokens
65 Accepted by the <format> parameter of TexImage2D and TexSubImage2D and
66 <internalformat> parameter of TexImage2D:
68 DEPTH_COMPONENT 0x1902
69 DEPTH_STENCIL_OES 0x84F9
71 Accepted by the <type> parameter of TexImage2D, TexSubImage2D:
73 UNSIGNED_SHORT 0x1403
74 UNSIGNED_INT 0x1405
75 UNSIGNED_INT_24_8_OES 0x84FA
77 Accepted by the <internalformat> parameter of TexStorage2DEXT:
79 DEPTH_COMPONENT16 0x81A5
80 DEPTH_COMPONENT32_OES 0x81A7
81 DEPTH24_STENCIL8_OES 0x88F0
83 Additions to Chapter 2 of the OpenGL ES 2.0 Specification (OpenGL Operation)
85 Update Section 2.10.5 "Shader Execution" in the subsection titled
86 "Texture Access" add a new paragraph before the last paragraph add
87 this line:
89 "The stencil index texture internal component is ignored if the base
90 internal format is DEPTH_STENCIL_OES.
92 If a vertex shader uses..."
94 Additions to Chapter 3 of the OpenGL ES 2.0 specification (Rasterization)
96 Add the following rows to Table 3.2 (page 62):
98 type Parameter GL Data Type Special
99 ------------------------------------------------
100 ... ... ...
101 UNSIGNED_SHORT ushort No
102 UNSIGNED_INT uint No
103 UNSIGNED_INT_24_8_OES uint Yes
105 Add the following rows to Table 3.3 (page 62):
107 Format Name Element Meaning and Order Target Buffer
108 ------------------------------------------------------------------
109 ... ... ...
110 DEPTH_COMPONENT Depth Depth
111 DEPTH_STENCIL_OES Depth and Stencil Index Depth and Stencil
112 ... ... ...
114 Add a row to Table 3.5 "Packed pixel formats" (page 64):
116 type Parameter GL Type Components Pixel Formats
117 ------------------------------------------------------------------
118 ... ... ... ...
119 UNSIGNED_INT_24_8_OES uint 2 DEPTH_STENCIL_OES
121 Add a new table after Table 3.6 (page 64):
123 UNSIGNED_INT_24_8_OES
125 31 30 29 28 27 26 ... 12 11 10 9 8 7 6 5 4 3 2 1 0
126 +----------------------------------+---------------+
127 | 1st Component | 2nd Component |
128 +----------------------------------+---------------+
130 Table 3.6.B: UNSIGNED_INT formats
132 Add a row to Table 3.7 "Packed pixel field assignments" (page 65):
134 Format | 1st 2nd 3rd 4th
135 ------------------+-------------------------------
136 ... | ... ... ... ...
137 DEPTH_STENCIL_OES | depth stencil N/A N/A
139 Add the following paragraph to the end of the section "Conversion to
140 floating-point" (page 65):
142 "For groups of components that contain both standard components and index
143 elements, such as DEPTH_STENCIL_OES, the index elements are not converted."
145 In section 3.7.1 "Texture Image Specification", update page 67 to
146 say:
148 "The selected groups are processed as described in section 3.6.2, stopping
149 just before final conversion. Each R, G, B, A, or depth value so generated
150 is clamped to [0, 1], while the stencil index values are masked by 2^n-1,
151 where n is the number of stencil bits in the internal format resolution
152 (see below).
154 Components are then selected from the resulting R, G, B, A, depth, or
155 stencil index values to obtain a texture with the base internal format
156 specified by <internalformat>. Table 3.8 summarizes the mapping of R, G,
157 B, A, depth, or stencil values to texture components, as a function of the
158 base internal format of the texture image. <internalformat> may be
159 specified as one of the internal format symbolic constants listed in
160 table 3.8. Specifying a value for <internalformat> that is not one of the
161 above values generates the error INVALID_VALUE. If <internalformat> does
162 not match <format>, the error INVALID_OPERATION is generated.
164 Textures with a base internal format of DEPTH_COMPONENT or
165 DEPTH_STENCIL_OES are supported by texture image specification commands
166 only if <target> is TEXTURE_2D. Using these formats in conjunction with
167 any other <target> will result in an INVALID_OPERATION error.
169 Textures with a base internal format of DEPTH_COMPONENT or
170 DEPTH_STENCIL_OES only support one level of image data. Specifying a
171 non-zero value for <level> will result in an INVALID_OPERATION error.
173 Textures with a base internal format of DEPTH_COMPONENT or DEPTH_STENCIL_OES
174 require either depth component data or depth/stencil component data.
175 Textures with other base internal formats require RGBA component data. The
176 error INVALID_OPERATION is generated if the base internal format is
177 DEPTH_COMPONENT or DEPTH_STENCIL_OES and <format> is not DEPTH_COMPONENT or
178 DEPTH_STENCIL_OES, or if the base internal format is not DEPTH_COMPONENT or
179 DEPTH_STENCIL_OES and <format> is DEPTH_COMPONENT or DEPTH_STENCIL_OES.
181 Textures with a base internal format of DEPTH_COMPONENT or
182 DEPTH_STENCIL_OES do not support loading image data via the TexImage
183 commands. They can only have their contents specified by rendering
184 to them. The INVALID_OPERATION error is generated by the TexImage2D
185 command if <data> is not NULL for such textures."
187 Add a row to table 3.8 (page 68), and update the title of the
188 second column:
190 Base Internal Format RGBA, Depth and Stencil Values Internal Components
191 -------------------------------------------------------------------------
192 ... ... ...
193 DEPTH_COMPONENT Depth D
194 DEPTH_STENCIL_OES Depth,Stencil D,S
195 ... ... ...
197 Update the caption for table 3.8 (page 68)
199 "Table 3.8: Conversion from RGBA, depth, and stencil pixel components to
200 internal texture components. Texture components R, G, B, A, and L are
201 converted back to RGBA colors during filtering as shown in table 3.12.
202 Texture components D are converted to RGBA colors as described in
203 section 3.7.8-1/2."
205 Add the following to section 3.7.2 "Alternate Texture Image Specification
206 Commands":
208 "CopyTexImage2D and CopyTexSubImage2D generate the INVALID_OPERATION
209 error if the base internal format of the destination texture is
210 DEPTH_COMPONENT or DEPTH_STENCIL_OES.
212 TexSubImage2D generates the INVALID_OPERATION error if the base internal
213 format of the texture is DEPTH_COMPONENT or DEPTH_STENCIL_OES."
215 Add a new section between sections 3.7.8 and 3.7.9:
217 "3.7.8-1/2 Depth/Stencil Textures
219 If the currently bound texture's base internal format is DEPTH_COMPONENT or
220 DEPTH_STENCIL_OES, then the output of the texture unit is as described
221 below. Otherwise, the texture unit operates in the normal manner.
223 Let <D_t> be the depth texture value, provided by the shader's texture lookup
224 function. Then the effective texture value is computed as follows:
225 <Tau> = <D_t>
227 If the texture image has a base internal format of DEPTH_STENCIL_OES, then
228 the stencil index texture component is ignored. The texture value <Tau> does
229 not include a stencil index component, but includes only the depth
230 component.
232 The resulting <Tau> is assigned to <R_t>. In some implementations, <Tau> is
233 also assigned to <G_t>, <B_t>, or <A_t>. Thus in table 3.12, textures with
234 depth component data behave as if their base internal format is RGBA, with
235 values in <G_t>, <B_t>, and <A_t> being implementation dependent."
237 Add the following to section 3.7.11 "Mipmap Generation":
239 "If the level zero array contains depth or depth-stencil data, the
240 error INVALID_OPERATION is generated."
242 Insert a new paragraph after the first paragraph of the "Texture Access"
243 subsection of section 3.8.2 on page 87, which says:
245 "Texture lookups involving textures with depth component data generate
246 a texture source color by using depth data directly, as described in
247 section 3.7.8-1/2. The stencil texture internal component is ignored
248 if the base internal format is DEPTH_STENCIL_OES."
250 Additions to Chapter 4 of the OpenGL ES 2.0 specification (Per-Fragment
251 Operations and the Framebuffer)
253 In section 4.4.5 "Framebuffer Completeness", replace the the 3rd
254 paragraph with the following text:
256 "* An internal format is color-renderable if it is one of the formats
257 from table 4.5 noted as color-renderable or if it is unsized format
258 RGBA or RGB. No other formats, including compressed internal formats,
259 are color-renderable.
261 * An internal format is depth-renderable if it is one of the sized
262 internal formats from table 4.5 noted as depth-renderable, if it
263 is the unsized format DEPTH_COMPONENT or if it is the internal
264 format value of DEPTH24_STENCIL8_OES. No other formats are
265 depth-renderable.
267 * An internal format is stencil-renderable if it is one of the sized
268 internal formats from table 4.5 noted as stencil-renderable or if it
269 is DEPTH24_STENCIL8_OES. No other formats are stencil-renderable."
271 Additions to Chapter 5 of the OpenGL ES 2.0 Specification (Special
272 Functions)
274 None.
276 Additions to Chapter 6 of the OpenGL ES 2.0 Specification (State and State
277 Requests)
279 None.
281 Interactions with OES_packed_depth_stencil
283 If OES_packed_depth_stencil is not supported, mentions of
284 DEPTH_STENCIL_OES and UNSIGNED_INT_24_8_OES as a format/type combinations
285 for TexImage2D and TexSubImage2D are omitted. Mentions of
286 the internal format DEPTH24_STENCIL8_OES are also omitted.
288 Interactions with EXT_texture_storage
290 If EXT_texture_storage is supported the following internalformat
291 to format/type mappings are used:
293 <internalformat> <format> <type>
294 ---------------- -------- ------
295 DEPTH_COMPONENT16 DEPTH_COMPONENT UNSIGNED_SHORT
296 DEPTH_COMPONENT32_OES DEPTH_COMPONENT UNSIGNED_INT
297 DEPTH24_STENCIL8_OES DEPTH_STENCIL_OES UNSIGNED_INT
299 Textures with the above <internalformats> only support one level of
300 image data. Specifying a value other than one for the <levels> parameter
301 to TexStorage2DEXT will result in an INVALID_OPERATION error.
303 If EXT_texture_storage is not supported, ignore any references
304 to TexStorage2DEXT.
306 Errors
308 The error INVALID_OPERATION is generated by TexImage2D if <format> and
309 <internalformat> are DEPTH_COMPONENT and <type> is not UNSIGNED_SHORT,
310 or UNSIGNED_INT.
312 The error INVALID_OPERATION is generated by TexSubImage2D if <format> is
313 DEPTH_COMPONENT and <type> is not UNSIGNED_SHORT, or UNSIGNED_INT.
315 The error INVALID_OPERATION is generated by TexImage2D if <format> and
316 <internalformat> are not DEPTH_COMPONENT and <type> is UNSIGNED_SHORT,
317 or UNSIGNED_INT.
319 The error INVALID_OPERATION is generated by TexSubImage2D if <format> is
320 not DEPTH_COMPONENT and <type> is UNSIGNED_SHORT, or UNSIGNED_INT.
322 The error INVALID_OPERATION is generated by TexImage2D if <format> and
323 <internalformat> are DEPTH_STENCIL_OES and <type> is not
324 UNSIGNED_INT_24_8_OES.
326 The error INVALID_OPERATION is generated by TexSubImage2D if <format>
327 is DEPTH_STENCIL_OES and <type> is not UNSIGNED_INT_24_8_OES.
329 The error INVALID_OPERATION is generated by TexImage2D if <format> and
330 <internalformat> is not DEPTH_STENCIL_OES and <type> is
331 UNSIGNED_INT_24_8_OES.
333 The error INVALID_OPERATION is generated by TexSubImage2D if <format>
334 is not DEPTH_STENCIL_OES and <type> is UNSIGNED_INT_24_8_OES.
336 The error INVALID_OPERATION is generated in the following situations:
337 - TexImage2D is called with <format> and <internalformat> of
338 DEPTH_COMPONENT or DEPTH_STENCIL_OES and
339 - <target> is not TEXTURE_2D,
340 - <data> is not NULL, or
341 - <level> is not zero.
342 - TexSubImage2D is called with <format> of DEPTH_COMPONENT or
343 DEPTH_STENCIL_OES.
344 - TexStorage2DEXT is called with <internalformat> of DEPTH_COMPONENT16,
345 DEPTH_COMPONENT32_OES, or DEPTH24_STENCIL8_OES, and
346 - <target> is not TEXTURE_2D, or
347 - <levels> is not one.
348 - CopyTexImage2D is called with an <internalformat> that has a base
349 internal format of DEPTH_COMPONENT or DEPTH_STENCIL_OES.
350 - CopyTexSubImage2D is called with a target texture that has a base
351 internal format of DEPTH_COMPONENT or DEPTH_STENCIL_OES.
352 - GenerateMipmap is called on a texture that has a base internal format
353 of DEPTH_COMPONENT or DEPTH_STENCIL_OES.
355 New State
357 None.
359 Issues
361 1) What are the differences between this extension and OES_depth_texture
362 and OES_packed_depth_stencil?
364 RESOLVED: This extension:
365 - does not support loading pre-baked depth stencil data via
366 TexImage2D or TexSubImage2D.
367 - allows variability in the y-, z-, and w-components of the sample
368 results from depth textures.
369 - only supports one level textures.
370 - explicitly lists the errors for unsupported functionality.
371 Since these were not clearly specified in the OES_depth_texture
372 extension there may be differences in error values between
373 implementations of OES_depth_texture and ANGLE_depth_texture.
374 This specification was also rebased to apply against the OpenGL ES 2.0
375 specification instead of the OpenGL specification, making it more
376 obvious what all the functionality changes are.
378 2) Why does TexSubImage2D accept the new format/type combinations even
379 though it does not actually support loading data?
381 RESOLVED: This was done to be more consistent with the OES_depth_texture
382 extension and to make it easier to add support for loading texture
383 data if it is possible to support in the future.
385 3) Why are only 1-level depth textures supported?
387 RESOLVED: The only use for multiple levels of depth textures would
388 be for fitlered texturing. However since it is not possible to
389 render to non-zero-level texture levels in OpenGL ES 2.0, and since
390 this extension forbids loading existing data and GenerateMipmap on
391 depth textures, it is impossible to initialize or specify contents
392 for non-zero levels of depth textures.
394 Revision History
396 02/25/2013 swoods revise to allow texture lookup to guarantee depth values
397 only in red channel of sample result.
398 06/04/2012 dgkoch fix errors, disallow multi-level depth textures.
399 05/30/2012 dgkoch minor updates and add issues.
400 05/23/2012 dgkoch intial revision based on OES_depth_texture and
401 OES_packed_depth_stencil and rebased against the ES 2.0 spec