• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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