1Name 2 3 NV_image_formats 4 5Name Strings 6 7 GL_NV_image_formats 8 9Contact 10 11 Mathias Heyer, NVIDIA (mheyer 'at' nvidia.com) 12 13Contributors 14 15 Contributors to ARB_shader_image_load_store 16 Michael Chock, NVIDIA 17 Daniel Koch, NVIDIA 18 19Notice 20 21 Copyright (c) 2011-2014 The Khronos Group Inc. Copyright terms at 22 http://www.khronos.org/registry/speccopyright.html 23 24 Portions Copyright (c) 2014 NVIDIA Corporation. 25 26Status 27 28 Complete 29 30Version 31 32 Last Modified Date: October 24, 2014 33 Revision: 4 34 35Number 36 37 OpenGL ES Extension #200 38 39Dependencies 40 41 This extension is written against the OpenGL ES 3.1 (March 17, 2014) 42 specification. 43 44 This extension is written against version 3.10 of the OpenGL ES 45 Shading Language specification. 46 47 OpenGL ES 3.1 and GLSL ES 3.10 are required. 48 49 This extension interacts with EXT_texture_norm16. 50 51 This extension interacts with NV_bindless_texture. 52 53Overview 54 55 OpenGL ES 3.1 specifies a variety of formats required to be usable 56 with texture images. This extension introduces the texture image 57 formats missing for parity with OpenGL 4.4. 58 59 60New Procedures and Functions 61 62 None 63 64New Tokens 65 66 None 67 68Additions to Chapter 8 of the OpenGL ES 3.1 Specification 69(Textures and Samplers) 70 71 Section 8.22, Texture Image Loads and Stores 72 73 Add to Table 8.27 'Supported image unit formats with equivalent formats 74 layout qualifiers': 75 76 Image Unit Format Format Qualifer 77 ----------------- --------------- 78 RG32F rg32f 79 RG16F rg16f 80 R11F_G11F_B10F r11f_g11f_b10f 81 R16F r16f 82 83 RGB10_A2UI rgb10_a2ui 84 RG32UI rg32ui 85 RG16UI rg16ui 86 RG8UI rg8ui 87 R16UI r16ui 88 R8UI r8ui 89 90 RG32I rg32i 91 RG16I rg16i 92 RG8I rg8i 93 R16I r16i 94 R8I r8i 95 96 RGBA16_EXT rgba16 97 RGB10_A2 rgb10_a2 98 RG16_EXT rg16 99 RG8 rg8 100 R16_EXT r16 101 R8 r8 102 103 RGBA16_SNORM_EXT rgba16_snorm 104 RG16_SNORM_EXT rg16_snorm 105 RG8_SNORM rg8_snorm 106 R16_SNORM_EXT r16_snorm 107 R8_SNORM r8_snorm 108 109 110 Add to Table 8.28 'Texel sizes, compatibility classes, and pixel 111 format/type combinations for each image format' 112 113 Image Format Size Class Pixel Format/Type 114 -------------- ---- ----- ----------------------------------------- 115 RG32F 64 2x32 RG, FLOAT 116 RG16F 32 2x16 RG, HALF_FLOAT 117 R11F_G11F_B10F 32 (a) RGB, UNSIGNED_INT_10F_11F_11F_REV 118 R16F 16 1x16 RED, HALF_FLOAT 119 120 RGB10_A2UI 32 (b) RGBA_INTEGER, UNSIGNED_INT_2_10_10_10_REV 121 RG32UI 64 2x32 RG_INTEGER, UNSIGNED_INT 122 RG16UI 32 2x16 RG_INTEGER, UNSIGNED_SHORT 123 RG8UI 16 2x8 RG_INTEGER, UNSIGNED_BYTE 124 R16UI 16 1x16 RED_INTEGER, UNSIGNED_SHORT 125 R8UI 8 1x8 RED_INTEGER, UNSIGNED_BYTE 126 127 RG32I 64 2x32 RG_INTEGER, INT 128 RG16I 32 2x16 RG_INTEGER, SHORT 129 RG8I 16 2x8 RG_INTEGER, BYTE 130 R16I 16 1x16 RED_INTEGER, SHORT 131 R8I 8 1x8 RED_INTEGER, BYTE 132 133 RGBA16_EXT 64 4x16 RGBA, UNSIGNED_SHORT 134 RGB10_A2 32 (b) RGBA, UNSIGNED_INT_2_10_10_10_REV 135 RG16_EXT 32 2x16 RG, UNSIGNED_SHORT 136 RG8 16 2x8 RG, UNSIGNED_BYTE 137 R16_EXT 16 1x16 RED, UNSIGNED_SHORT 138 R8 8 1x8 RED, UNSIGNED_BYTE 139 140 RGBA16_SNORM_EXT 64 4x16 RGBA, SHORT 141 RG16_SNORM_EXT 32 2x16 RG, SHORT 142 RG8_SNORM 16 2x8 RG, BYTE 143 R16_SNORM_EXT 16 1x16 RED, SHORT 144 R8_SNORM 8 1x8 RED, BYTE 145 146 Table 2.28, '... Class (a) is for 11/11/10 packed floating-point 147 formats; class (b) is for 10/10/10/2 packed formats.' 148 149 150New Implementation Dependent State 151 152 None 153 154New State 155 156 None 157 158 159Modifications to the OpenGL ES Shading Language Specification, Version 3.10 160 161 Including the following line in a shader can be used to control the 162 language features described in this extension: 163 164 #extension GL_NV_image_formats : <behavior> 165 166 where <behavior> is as specified in section 3.3. 167 168 New preprocessor #defines are added to the OpenGL ES Shading Language: 169 170 #define GL_NV_image_formats 1 171 172 173 Section 4.4.7 Format Layout Qualifiers 174 175 Add to '<float-image-format-qualifier>': 176 rg32f 177 rg16f 178 r11f_g11f_b10f 179 r16f 180 rgba16 181 rgb10_a2 182 rg16 183 rg8 184 r16 185 r8 186 rgba16_snorm 187 rg16_snorm 188 rg8_snorm 189 r16_snorm 190 r8_snorm 191 192 Add to '<int-image-format-qualifier>': 193 rg32i 194 rg16i 195 rg8i 196 r16i 197 r8i 198 199 Add to '<uint-image-format-qualifier>': 200 rgb10_a2ui 201 rg32ui 202 rg16ui 203 rg8ui 204 r16ui 205 r8ui 206 207Errors 208 209 No new errors. 210 211 212Dependencies on EXT_texture_norm16 213 214 If EXT_texture_norm16 or equivalent functionality is not 215 supported, remove references to image format R16_EXT, RG16_EXT, 216 RGBA16_EXT, R16_SNORM_EXT, RG16_SNORM_EXT and RGBA16_SNORM_EXT. Also 217 remove references to image layout qualifiers rgba16, rg16, r16, 218 rgba16_snorm, rg16_snorm and r16_snorm. 219 220Dependencies on NV_bindless_texture 221 222 If NV_bindless_texture is supported, the additional formats added 223 by this extension are also supported for the GetImageHandleNV 224 command. 225 226Issues 227 228 None yet! 229 230Revision History 231 232 Rev. Date Author Changes 233 ---- -------- -------- ----------------------------------------------- 234 4 10/24/14 dkoch Mark complete 235 3 09/30/14 dkoch Add interactions with NV_bindless_texture 236 2 07/24/14 dkoch Add suffixes to tokens add NV_texture_norm16 237 1 07/09/14 mheyer Base NV_image_formats on ARB_image_load_store and 238 strip out everything that is already in ES3.1 239