| Name |
| |
| NV_image_formats |
| |
| Name Strings |
| |
| GL_NV_image_formats |
| |
| Contact |
| |
| Mathias Heyer, NVIDIA (mheyer 'at' nvidia.com) |
| |
| Contributors |
| |
| Contributors to ARB_shader_image_load_store |
| Michael Chock, NVIDIA |
| Daniel Koch, NVIDIA |
| |
| Notice |
| |
| Copyright (c) 2011-2014 The Khronos Group Inc. Copyright terms at |
| http://www.khronos.org/registry/speccopyright.html |
| |
| Portions Copyright (c) 2014 NVIDIA Corporation. |
| |
| Status |
| |
| Complete |
| |
| Version |
| |
| Last Modified Date: October 24, 2014 |
| Revision: 4 |
| |
| Number |
| |
| OpenGL ES Extension #200 |
| |
| Dependencies |
| |
| This extension is written against the OpenGL ES 3.1 (March 17, 2014) |
| specification. |
| |
| This extension is written against version 3.10 of the OpenGL ES |
| Shading Language specification. |
| |
| OpenGL ES 3.1 and GLSL ES 3.10 are required. |
| |
| This extension interacts with EXT_texture_norm16. |
| |
| This extension interacts with NV_bindless_texture. |
| |
| Overview |
| |
| OpenGL ES 3.1 specifies a variety of formats required to be usable |
| with texture images. This extension introduces the texture image |
| formats missing for parity with OpenGL 4.4. |
| |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| None |
| |
| Additions to Chapter 8 of the OpenGL ES 3.1 Specification |
| (Textures and Samplers) |
| |
| Section 8.22, Texture Image Loads and Stores |
| |
| Add to Table 8.27 'Supported image unit formats with equivalent formats |
| layout qualifiers': |
| |
| Image Unit Format Format Qualifer |
| ----------------- --------------- |
| RG32F rg32f |
| RG16F rg16f |
| R11F_G11F_B10F r11f_g11f_b10f |
| R16F r16f |
| |
| RGB10_A2UI rgb10_a2ui |
| RG32UI rg32ui |
| RG16UI rg16ui |
| RG8UI rg8ui |
| R16UI r16ui |
| R8UI r8ui |
| |
| RG32I rg32i |
| RG16I rg16i |
| RG8I rg8i |
| R16I r16i |
| R8I r8i |
| |
| RGBA16_EXT rgba16 |
| RGB10_A2 rgb10_a2 |
| RG16_EXT rg16 |
| RG8 rg8 |
| R16_EXT r16 |
| R8 r8 |
| |
| RGBA16_SNORM_EXT rgba16_snorm |
| RG16_SNORM_EXT rg16_snorm |
| RG8_SNORM rg8_snorm |
| R16_SNORM_EXT r16_snorm |
| R8_SNORM r8_snorm |
| |
| |
| Add to Table 8.28 'Texel sizes, compatibility classes, and pixel |
| format/type combinations for each image format' |
| |
| Image Format Size Class Pixel Format/Type |
| -------------- ---- ----- ----------------------------------------- |
| RG32F 64 2x32 RG, FLOAT |
| RG16F 32 2x16 RG, HALF_FLOAT |
| R11F_G11F_B10F 32 (a) RGB, UNSIGNED_INT_10F_11F_11F_REV |
| R16F 16 1x16 RED, HALF_FLOAT |
| |
| RGB10_A2UI 32 (b) RGBA_INTEGER, UNSIGNED_INT_2_10_10_10_REV |
| RG32UI 64 2x32 RG_INTEGER, UNSIGNED_INT |
| RG16UI 32 2x16 RG_INTEGER, UNSIGNED_SHORT |
| RG8UI 16 2x8 RG_INTEGER, UNSIGNED_BYTE |
| R16UI 16 1x16 RED_INTEGER, UNSIGNED_SHORT |
| R8UI 8 1x8 RED_INTEGER, UNSIGNED_BYTE |
| |
| RG32I 64 2x32 RG_INTEGER, INT |
| RG16I 32 2x16 RG_INTEGER, SHORT |
| RG8I 16 2x8 RG_INTEGER, BYTE |
| R16I 16 1x16 RED_INTEGER, SHORT |
| R8I 8 1x8 RED_INTEGER, BYTE |
| |
| RGBA16_EXT 64 4x16 RGBA, UNSIGNED_SHORT |
| RGB10_A2 32 (b) RGBA, UNSIGNED_INT_2_10_10_10_REV |
| RG16_EXT 32 2x16 RG, UNSIGNED_SHORT |
| RG8 16 2x8 RG, UNSIGNED_BYTE |
| R16_EXT 16 1x16 RED, UNSIGNED_SHORT |
| R8 8 1x8 RED, UNSIGNED_BYTE |
| |
| RGBA16_SNORM_EXT 64 4x16 RGBA, SHORT |
| RG16_SNORM_EXT 32 2x16 RG, SHORT |
| RG8_SNORM 16 2x8 RG, BYTE |
| R16_SNORM_EXT 16 1x16 RED, SHORT |
| R8_SNORM 8 1x8 RED, BYTE |
| |
| Table 2.28, '... Class (a) is for 11/11/10 packed floating-point |
| formats; class (b) is for 10/10/10/2 packed formats.' |
| |
| |
| New Implementation Dependent State |
| |
| None |
| |
| New State |
| |
| None |
| |
| |
| Modifications to the OpenGL ES Shading Language Specification, Version 3.10 |
| |
| Including the following line in a shader can be used to control the |
| language features described in this extension: |
| |
| #extension GL_NV_image_formats : <behavior> |
| |
| where <behavior> is as specified in section 3.3. |
| |
| New preprocessor #defines are added to the OpenGL ES Shading Language: |
| |
| #define GL_NV_image_formats 1 |
| |
| |
| Section 4.4.7 Format Layout Qualifiers |
| |
| Add to '<float-image-format-qualifier>': |
| rg32f |
| rg16f |
| r11f_g11f_b10f |
| r16f |
| rgba16 |
| rgb10_a2 |
| rg16 |
| rg8 |
| r16 |
| r8 |
| rgba16_snorm |
| rg16_snorm |
| rg8_snorm |
| r16_snorm |
| r8_snorm |
| |
| Add to '<int-image-format-qualifier>': |
| rg32i |
| rg16i |
| rg8i |
| r16i |
| r8i |
| |
| Add to '<uint-image-format-qualifier>': |
| rgb10_a2ui |
| rg32ui |
| rg16ui |
| rg8ui |
| r16ui |
| r8ui |
| |
| Errors |
| |
| No new errors. |
| |
| |
| Dependencies on EXT_texture_norm16 |
| |
| If EXT_texture_norm16 or equivalent functionality is not |
| supported, remove references to image format R16_EXT, RG16_EXT, |
| RGBA16_EXT, R16_SNORM_EXT, RG16_SNORM_EXT and RGBA16_SNORM_EXT. Also |
| remove references to image layout qualifiers rgba16, rg16, r16, |
| rgba16_snorm, rg16_snorm and r16_snorm. |
| |
| Dependencies on NV_bindless_texture |
| |
| If NV_bindless_texture is supported, the additional formats added |
| by this extension are also supported for the GetImageHandleNV |
| command. |
| |
| Issues |
| |
| None yet! |
| |
| Revision History |
| |
| Rev. Date Author Changes |
| ---- -------- -------- ----------------------------------------------- |
| 4 10/24/14 dkoch Mark complete |
| 3 09/30/14 dkoch Add interactions with NV_bindless_texture |
| 2 07/24/14 dkoch Add suffixes to tokens add NV_texture_norm16 |
| 1 07/09/14 mheyer Base NV_image_formats on ARB_image_load_store and |
| strip out everything that is already in ES3.1 |