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 : where 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 '': 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 '': rg32i rg16i rg8i r16i r8i Add to '': 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