Name EXT_texture_norm16 Name Strings GL_EXT_texture_norm16 Contributors Contributors to EXT_texture_snorm Daniel Koch, NVIDIA Jan-Harald Fredriksen, ARM Contact Mathias Heyer, NVIDIA (mheyer [at] nvidia.com) Status Complete Version Last Modified Date: 2014-10-24 Revision: 5 Number OpenGL ES Extension #207 Dependencies OpenGL ES 3.1 is required. This extension is written against the OpenGL ES 3.1 (June 4, 2014) specification. This extension interacts with EXT_texture_buffer. This extension interacts with EXT_texture_view. This extension interacts with OES_texture_storage_multisample_2d_array. This extension interacts with EXT_copy_image. This extension interacts with EXT_texture_compression_s3tc. This extension interacts with EXT_texture_compression_rgtc. This extension interacts with NV_texture_compression_s3tc. This extension interacts with NV_sRGB_formats. Overview OpenGL ES 3.1 supports 8-bit (signed) normalized textures. This extension provides a set of new 16 bit signed normalized and unsigned normalized fixed point texture, renderbuffer and texture buffer formats. New Procedures and Functions None New Tokens Accepted by the parameter of TexImage2D,TexImage3D, TexStorage2D, TexStorage3D and TexStorage2DMultisample, TexStorage3DMultisampleOES, TexBufferEXT, TexBufferRangeEXT, TextureViewEXT, RenderbufferStorage and RenderbufferStorageMultisample: R16_EXT 0x822A RG16_EXT 0x822C RGBA16_EXT 0x805B Accepted by the parameter of TexImage2D,TexImage3D, TexStorage2D, TexStorage3D, TexStorage2DMultisample, TexStorage3DMultisampleOES and TextureViewEXT: RGB16_EXT 0x8054 R16_SNORM_EXT 0x8F98 RG16_SNORM_EXT 0x8F99 RGB16_SNORM_EXT 0x8F9A RGBA16_SNORM_EXT 0x8F9B Additions to Chapter 8 of the OpenGL ES 3.1 Specification (Textures and Samplers) Add to Table 4.X.1 (introduced by EXT_copy_image) "Compatible internal Formats for copying between compressed and uncompressed...." ------------------------------------------------------------------------------ | 64-bit | RGBA16_EXT, | COMPRESSED_RGB_S3TC_DXT1_EXT, | | | RGBA16_SNORM_EXT | COMPRESSED_SRGB_S3TC_DXT1_NV, | | | | COMPRESSED_RGBA_S3TC_DXT1_EXT, | | | | COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV, | | | | COMPRESSED_RED_RGTC1_EXT, | | | | COMPRESSED_SIGNED_RED_RGTC1_EXT, | | | | COMPRESSED_RGB8_ETC2, | | | | COMPRESSED_SRGB8_ETC2, | | | | COMPRESSED_R11_EAC, | | | | COMPRESSED_SIGNED_R11_EAC, | | | | COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, | | | | COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 | ------------------------------------------------------------------------------ Add a row to Table 8.2 "Valid combinations of format, type and sized internal formats": Format Type External Bytes Internal Format per Pixel --------------- --------------- --------------- --------------- RED UNSIGNED_SHORT 2 R16_EXT RG UNSIGNED_SHORT 4 RG16_EXT RGB UNSIGNED_SHORT 6 RGB16_EXT RGBA UNSIGNED_SHORT 8 RGBA16_EXT RED SHORT 2 R16_SNORM_EXT RG SHORT 4 RG16_SNORM_EXT RGB SHORT 6 RGB16_SNORM_EXT RGBA SHORT 8 RGBA16_SNORM_EXT Add to Table 8.13 "Correspondence of sized internal formats to base internal formats,...": Sized Base Bits/component CR TF Req. Req. Internal Internal S are shared bits rend. tex. Format Format R G B A S ------------ ----------- ---- ---- ---- --- ---- --- --- ---- --- R16_EXT RED 16 X X X X RG16_EXT RG 16 16 X X X X RGB16_EXT RGB 16 16 16 - X - X RGBA16_EXT RGBA 16 16 16 16 X X X X R16_SNORM_EXT RED s16 - X - X RG16_SNORM_EXT RG s16 s16 - X - X RGB16_SNORM_EXT RGB s16 s16 s16 - X - X RGBA16_SNORM_EXT RGBA s16 s16 s16 s16 - X - X Add to Table 8.15: "ReadPixels format and type used during CopyTex*." Read Buffer Format format type ------------------------------------- ------ -------------- 16bit Unsigned Normalized Fixed-point RGBA UNSIGNED_SHORT Add to Table 8.X.2 "Compatible internal formats for TextureViewEXT. ..." -------------------------------------------------------------------------- | Class | Internal formats | -------------------------------------------------------------------------- | VIEW_CLASS_64_BITS | RGBA16_EXT, RGBA16_SNORM_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_48_BITS | RGB16_EXT, RGB16_SNORM_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_32_BITS | RG16_EXT, RG16_SNORM_EXT | -------------------------------------------------------------------------- | VIEW_CLASS_16_BITS | R16_EXT, R16_SNORM_EXT | -------------------------------------------------------------------------- (If EXT_texture_view is not supported, this additions will apply to Table 4.X.2 "Compatible internal formats for CopyImageSubDataEXT" as introduced by EXT_copy_image) Add to Table texbo1, "Internal Formats for Buffer Textures. ..." Component Sized Internal Format Base Type Components Norm 0 1 2 3 --------------------- --------- ---------- ---- --------- R16_EXT ushort 1 Yes R 0 0 1 RG16_EXT ushort 2 Yes R G 0 1 RGBA16_EXT ushort 4 Yes R G B A Additions to Chapter 15 of the OpenGL ES 3.1 Specification (Writing Fragments and Samples to the Framebuffer) Add to the second paragraph of Section 16.1.2 "ReadPixels": "For 16bit unsigned normalized fixed-point rendering surfaces, the combination format RGBA and type UNSIGNED_SHORT is accepted." Errors No new errors. Interactions with EXT_texture_buffer If EXT_texture_buffer is not supported, remove references to TexBufferEXT and TexBufferRangeEXT. Also remove additions to Table textbo1. Interactions with EXT_texture_view If EXT_texture_view is not supported, remove references to TextureViewEXT. Also remove additions to Table 8.X.2. Interactions with OES_texture_storage_multisample_2d_array If OES_texture_storage_multisample_2d_array is not supported, remove references to TexStorage3DMultisampleOES Interactions with EXT_copy_image If EXT_copy_image is not supported, remove additions to Table 8.X.2. (If EXT_texture_view is not supported remove references to Table 4.X.2) Interactions with EXT_texture_compression_s3tc (or equivalent): If EXT_texture_compression_s3tc or similar functionality (i.e. NV_texture_compression_s3tc etc) is not supported, ignore references to the following texture formats: COMPRESSED_RGB_S3TC_DXT1_EXT and COMPRESSED_RGBA_S3TC_DXT1_EXT. Interactions with NV_sRGB_formats (or equivalent): If NV_sRGB_formats or similar functionality is not supported, ignore references to the following texture formats: COMPRESSED_SRGB_S3TC_DXT1_NV and COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV. Interactions with EXT_texture_compression_rgtc (or equivalent): If EXT_texture_compression_rgtc or equivalent functionality is not supported, ignore references to the following texture formats: COMPRESSED_RED_RGTC1_EXT, COMPRESSED_SIGNED_RED_RGTC1_EXT. Issues None yet. Revision History: Revision 1 2014-07-03 (mheyer) initial revision Revision 2 2014-07-18 (mheyer) add EXT_texture_buffer, EXT_texture_view, EXT_copy_image and OES_texture_storage_multisample_2d_array interactions Revision 3 2014-07-18 (mheyer) rename to NV_texture_norm16, mark SNORM formats as non color-renderable Revision 4 2014-08-05 (mheyer) rename to EXT_texture_norm16, added interactions with compressed texture format extensions Revision: 5 2014-10-24 (dkoch) mark complete, publishing cleanup