| Name |
| |
| OES_texture_stencil8 |
| |
| Name Strings |
| |
| GL_OES_texture_stencil8 |
| |
| Contact |
| |
| Mathias Heyer, NVIDIA Corporation (mheyer 'at' nvidia.com) |
| |
| Contributors |
| |
| Jeff Bolz, NVIDIA |
| Piers Daniell, NVIDIA |
| Daniel Koch, NVIDIA |
| Mathias Heyer, NVIDIA |
| Jon Leech |
| |
| Notice |
| |
| Copyright (c) 2012-2015 The Khronos Group Inc. Copyright terms at |
| http://www.khronos.org/registry/speccopyright.html |
| |
| Specification Update Policy |
| |
| Khronos-approved extension specifications are updated in response to |
| issues and bugs prioritized by the Khronos OpenGL ES Working Group. For |
| extensions which have been promoted to a core Specification, fixes will |
| first appear in the latest version of that core Specification, and will |
| eventually be backported to the extension document. This policy is |
| described in more detail at |
| https://www.khronos.org/registry/OpenGL/docs/update_policy.php |
| |
| Status |
| |
| Complete. |
| Ratified by the Khronos Board of Promoters on 2014/03/14. |
| |
| Version |
| |
| Last Modified Date: May 13, 2015 |
| Revision: 10 |
| |
| Number |
| |
| OpenGL ES Extension #173 |
| |
| Dependencies |
| |
| OpenGL ES 3.1 is required. |
| |
| This extension is written against the OpenGL ES 3.1 (April 29, 2015) |
| Specification. |
| |
| Overview |
| |
| This extension accepts STENCIL_INDEX8 as a texture internal format, and |
| adds STENCIL_INDEX8 to the required internal format list. This removes the |
| need to use renderbuffers if a stencil-only format is desired. |
| |
| New Procedures and Functions |
| |
| None. |
| |
| New Tokens |
| |
| Accepted by the <format> parameter of TexImage3D, TexImage2D |
| TexSubImage3D and TexSubImage2D: |
| |
| STENCIL_INDEX 0x1901 /* existing enum */ |
| |
| Accepted by the <internalformat> parameter of TexImage3D, TexImage2D, |
| TexStorage3D, TexStorage2D, TexStorage3DMultisample |
| and TexStorage2DMultisample: |
| |
| STENCIL_INDEX8 0x8D48 /* existing enum */ |
| |
| Additions to Section 8.4.2 of the OpenGL ES 3.1 Specification |
| (Transfer of Pixel Rectangles) |
| |
| Add to table 8.2 "Valid combinations of <format>, <type> and sized |
| <internalformat>": |
| |
| Format Type External Bytes Internal Format |
| per Pixel |
| --------------- --------------- --------------- --------------- |
| STENCIL_INDEX UNSIGNED_BYTE 1 STENCIL_INDEX8 |
| |
| Add to table 8.5 "Pixel data formats": |
| |
| Format Name | Element Meaning and Order | Target buffer |
| ---------------------------------------------------------- |
| STENCIL_INDEX | Stencil Index | Stencil |
| |
| Additions to Section 8.5 of the OpenGL ES 3.1 Specification |
| (Texture Image Specification) |
| |
| Modify the third paragraph from the bottom of p. 150 to include |
| STENCIL_INDEX: |
| |
| "Textures with a base internal format of DEPTH_COMPONENT, DEPTH_STENCIL, |
| or STENCIL_INDEX are supported by texture image specification commands |
| only if <target> is..." |
| |
| Additions to Section 8.6 of the OpenGL ES 3.1 Specification |
| (Alternate Texture Image Specification Commands) |
| |
| In table 8.16 "Valid CopyTexImage source framebuffer/destination texture |
| base internal format combinations)", add row 'S' and column 'S' and |
| leave all the format combinations involving 'S' marked unsupported. |
| |
| Additions to Section 8.16 of the OpenGL ES 3.1 Specification |
| (Texture Completeness) |
| |
| Add a bullet to the list of reasons a texture would be incomplete, on p, |
| 189: |
| |
| - The internal format of the texture is STENCIL_INDEX and either the |
| magnification filter is not NEAREST, or the minification filter is |
| neither NEAREST nor NEAREST_MIPMAP_NEAREST. |
| |
| Additions to Section 8.19.1 of the OpenGL ES 3.1 Specification |
| (Depth Texture Comparison Mode) |
| |
| Modify the description of computing R_t on p. 195: |
| |
| "Then the effective texture value is computed as follows: |
| |
| - If the base internal format is STENCIL_INDEX, then r = St |
| - If the base internal format is DEPTH_STENCIL and ..." |
| |
| Changes to Section 11.1.3.5 of the OpenGL ES 3.1 Specification |
| (Texture Access) |
| |
| Change the next-to-last paragraph of the section (at the bottom of p. |
| 272) to: |
| |
| "Texture lookups involving texture objects with an internal format of |
| DEPTH_STENCIL can read the stencil value as described in section 8.19 by |
| setting the value of DEPTH_STENCIL_TEXTURE_MODE to STENCIL_INDEX. |
| Textures with a STENCIL_INDEX base internal format may also be used to |
| read stencil data. The stencil value is read as an integer and assigned |
| to R_t. An unsigned integer sampler should be used to lookup the stencil |
| component, otherwise the results are undefined. |
| |
| If a sampler is used in a shader..." |
| |
| Additions to Section 16.1.2 of the OpenGL ES 3.1 Specification |
| (ReadPixels): |
| |
| Add STENCIL_INDEX to the third paragraph following the prototype |
| for ReadPixels on p. 338: |
| |
| "The second is an implementation-chosen format from among those defined |
| in table 8.2, excluding formats DEPTH_COMPONENT, DEPTH_STENCIL and |
| STENCIL_INDEX. The values of <format> ..." |
| |
| New Implementation Dependent State |
| |
| None. |
| |
| New State |
| |
| None. |
| |
| Modifications to the OpenGL ES Shading Language Specification, Version 3.10 |
| |
| None. |
| |
| Errors |
| |
| An INVALID_OPERATION error is generated by TexImage3D, TexImage2D, |
| TexSubImage3D, TexSubImage2D if <format> is STENCIL_INDEX and the |
| base internal format is not <STENCIL_INDEX>. |
| |
| An INVALID_OPERATION error is generated by TexImage3D, TexImage2D, |
| TexSubImage3D or TexSubImage2D, if <format> is STENCIL_INDEX and |
| <target> is not one of TEXTURE_2D, TEXTURE_2D_ARRAY and TEXTURE_CUBE_MAP_*. |
| |
| An INVALID_OPERATION error is generated by TexImage3D, TexImage2D, |
| TexSubImage3D or TexSubImage2D, if <format> is STENCIL_INDEX and |
| <type> is not <UNSIGNED_BYTE> |
| |
| An INVALID_OPERATION error is generated by TexImage3D and TexImage2D, |
| if <format> is <STENCIL_INDEX> and internal format is not <STENCIL_INDEX8> |
| |
| Issues |
| |
| (1) What is the interaction with OpenGL ES 3.1's |
| DEPTH_STENCIL_TEXTURE_MODE? |
| |
| RESOLVED: That piece of state is ignored because the base internal format |
| of a STENCIL_INDEX texture is not DEPTH_STENCIL. |
| |
| (2) Does the presence of this extension imply that the implementation |
| supports a true 8-bit stencil buffer? |
| |
| RESOLVED: No, some OpenGL implementations may internally expand a |
| format like STENCIL_INDEX8 to DEPTH24_STENCIL8, but will make such a format |
| behave as if there were no depth bits. Additionally, implementations may |
| not support independent depth and stencil attachments; a framebuffer with a |
| STENCIL_INDEX8 stencil attachment and a DEPTH_COMPONENT24 depth attachment |
| may be treated as unsupported (FRAMEBUFFER_UNSUPPORTED). |
| |
| (3) Should we support stencil formats that have a number of bits that is |
| not exactly supported in the implementation? 8-bits is universally |
| supported, but 1/4/16-bits are not. |
| |
| RESOLVED: Only accept STENCIL_INDEX8, which is universally supported. |
| |
| Revision History |
| |
| Rev. Date Author Changes |
| ---- -------- -------- ----------------------------------------------- |
| 1 03/20/12 jbolz Internal revisions. |
| 2 05/30/12 dgkoch Add tokens and errors section. |
| Update errors for GetTexImage. |
| 3 07/23/13 mheyer Take ARB_texture_stencil8 and reword it for |
| ES 3.0 |
| 4 08/06/13 mheyer Allow NEAREST_MIPMAP_NEAREST as filter. |
| 5 08/30/13 mheyer Add interactions with multisample textures. |
| 6 09/03/13 mheyer CopyTexImage2D does not support stencil textures |
| 7 10/16/13 mheyer Add entry to Table 3.5, added modification to |
| section 2.11.9 and extended Errors section. |
| 8 01/20/14 dkoch Fix name of interacting extension. |
| Remove trailing whitespace. |
| 9 01/30/14 dkoch Rename to OES. |
| 10 05/13/15 Jon Leech Rebase on OpenGL ES 3.1, which is required |
| in any case. |