1Name
2
3    ARB_texture_rgb10_a2ui
4
5Name Strings
6
7    GL_ARB_texture_rgb10_a2ui
8
9Contact
10
11    Daniel Koch (daniel 'at' transgaming.com)
12
13Contributors
14
15    Daniel Koch, TransGaming
16    Graham Sellers, AMD
17    Jeff Bolz, NVIDIA
18    Pat Brown, NVIDIA
19
20Notice
21
22    Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
23        http://www.khronos.org/registry/speccopyright.html
24
25Specification Update Policy
26
27    Khronos-approved extension specifications are updated in response to
28    issues and bugs prioritized by the Khronos OpenGL Working Group. For
29    extensions which have been promoted to a core Specification, fixes will
30    first appear in the latest version of that core Specification, and will
31    eventually be backported to the extension document. This policy is
32    described in more detail at
33        https://www.khronos.org/registry/OpenGL/docs/update_policy.php
34
35Status
36
37    Complete. Approved by the ARB at the 2010/01/22 F2F meeting.
38    Approved by the Khronos Board of Promoters on March 10, 2010.
39
40Version
41
42    Last Modified Date: January 29, 2009
43    Author Revision: 7
44
45Number
46
47    ARB Extension #83
48
49Dependencies
50
51    This extension is written against the OpenGL 3.2 specification, 
52    compatibility profile, but it can apply against previous versions
53    of OpenGL.
54
55    Requires OpenGL 3.0 or EXT_texture_integer.
56
57Overview
58
59    This extension adds support for the following data format:
60
61    A new texturing format for unsigned 10.10.10.2 integer textures. 
62
63    OpenGL has supported RGB10 and RGB10_A2 formats for a very long time.  
64    This extension provides a variant of RGB10_A2 which supports unsigned 
65    integer data (in contrast to the above "unsigned normalized integer" 
66    formats).
67
68IP Status
69
70    No known IP claims.
71
72New Procedures and Functions
73
74    None
75
76New Tokens
77
78    Accepted by the <internalFormat> parameter of TexImage1D, TexImage2D,
79    TexImage3D, CopyTexImage1D, CopyTexImage2D, RenderbufferStorage and 
80    RenderbufferStorageMultisample:
81
82        RGB10_A2UI                           0x906F
83
84Additions to Chapter 3 of the OpenGL 3.2 Specification (Compatibility Profile) (Rasterization)
85
86    Modify Section 3.7.4 (Transfer of Pixel Rectangles), p. 183
87
88    (modify Table 3.8, Packed pixel formats, p. 189, to allow the use of
89     integer pixel formats with some packed pixel types)
90
91                                   GL Data  #
92      type Parameter Token Name     Type  Comps  Matching Pixel Formats
93      ---------------------------  ------  ---  -----------------------------
94      UNSIGNED_BYTE_3_3_2          ubyte    3   RGB, RGB_INTEGER
95      UNSIGNED_BYTE_2_3_3_REV      ubyte    3   RGB, RGB_INTEGER
96      UNSIGNED_SHORT_5_6_5         ushort   3   RGB, RGB_INTEGER
97      UNSIGNED_SHORT_5_6_5_REV     ushort   3   RGB, RGB_INTEGER
98      UNSIGNED_SHORT_4_4_4_4       ushort   4   RGBA, BGRA, RGBA_INTEGER, 
99                                                  BGRA_INTEGER
100      UNSIGNED_SHORT_4_4_4_4_REV   ushort   4   RGBA, BGRA, RGBA_INTEGER, 
101                                                  BGRA_INTEGER
102      UNSIGNED_SHORT_5_5_5_1       ushort   4   RGBA, BGRA, RGBA_INTEGER, 
103                                                  BGRA_INTEGER
104      UNSIGNED_SHORT_1_5_5_5_REV   ushort   4   RGBA, BGRA, RGBA_INTEGER, 
105                                                  BGRA_INTEGER
106      UNSIGNED_INT_8_8_8_8         uint     4   RGBA, BGRA, RGBA_INTEGER, 
107                                                  BGRA_INTEGER
108      UNSIGNED_INT_8_8_8_8_REV     uint     4   RGBA, BGRA, RGBA_INTEGER, 
109                                                  BGRA_INTEGER
110      UNSIGNED_INT_10_10_10_2      uint     4   RGBA, BGRA, RGBA_INTEGER, 
111                                                  BGRA_INTEGER
112      UNSIGNED_INT_2_10_10_10_REV  uint     4   RGBA, BGRA, RGBA_INTEGER, 
113                                                  BGRA_INTEGER
114      <other rows unchanged>
115
116
117    Modify Section 3.9.1 (Texture Image Specification), p 212
118
119    (add the following required Texture and renderbuffer color formats, p 216)
120     
121    - RGB10_A2UI
122
123    (add the following to Table 3.17: "Correspondence of sized internal color 
124    formats to base internal formats...", beginning on p 218)
125
126     Sized                     Base                     R    G    B    A    Shared
127     Internal Format           Internal Format          bits bits bits bits bits
128     -----------------------   ---------------------    ---- ---- ---- ---- ------
129     RGB10_A2UI                RGBA                     ui10 ui10 ui10 ui2
130
131
132New State
133
134    None.
135
136New Implementation Dependent State
137
138    None.
139
140Issues
141
142    1. What should the new enumerant be called?
143
144       Possibilities include: 
145       RGB10A2UI - difficult to read
146       RGB10_A2UI - follows precedence of RGB10_A2 and other UI texture formats,
147         however it could difficult to know at a glace if the the UI applies to 
148         both the RGB and A components, or just the A component.
149       RGB10UI_A2UI - follows the precedence of R11F_G11F_B10F
150       RGB10_A2_UI - along the same lines as the _SNORM formats, but divergent
151         from other UI formats.
152      
153       RESOLVED. Using RGB10_A2UI.  The UI applies to all 4 components.
154
155    2. What should this extension be called?
156
157       RESOLVED: ARB_texture_rgb10_a2ui, after the new internal format that is 
158       added. Early drafts used the name texture_unsigned_10_10_10_2, but this 
159       is only somewhat related type that isn't added by this extension.
160
161    3. Should this new format be required to be renderable?
162
163       RESOLVED: Yes. It appears to be renderable in other APIs that are 
164       supported by the same hardware, and no hardware vendors have objected.
165
166    4. It is possible to load packed 10_10_10_2 unsigned integer data into GL 
167       via TexImage without this extension?  
168
169       RESOLVED:  No.  The EXT_texture_integer extension, as later
170       incorporated into OpenGL 3.0, added new integer pixel format enums
171       (e.g., RGBA_INTEGER) and texture formats (e.g., RGBA16UI). All texture
172       formats added by that extension had a "matching" non-packed format and
173       type combination, so there wasn't a strong need to explicitly support
174       packed pixel types for integer pixel formats.
175
176       The texture format added by this extension logically maps to a "packed"
177       format/type combination, so we add this support by adding RGB_INTEGER,
178       RGBA_INTEGER, and BGRA_INTEGER (as appropriate) to the list of formats
179       supported by packed pixel data types.
180
181       Even though we are only adding one "packed" texture format, we chose to
182       allow all packed types with corresponding integer formats for
183       orthogonality.
184
185
186Revision History
187
188    Rev.  Date          Author    Changes
189    ----  ------------  --------  ------------------------------------------------------
190     7    Jan 29, 2010  pbrown    Update spec language to explicitly allow
191                                  packed pixels data types with integer pixel
192                                  formats; update issue 4 to indicate that
193                                  packed pixels with integer formats wasn't
194                                  previously allowed (bug 5674).
195     6    Jan 26, 2010  pbrown    assign enum value
196     5    Dec 10, 2009  dgkoch    de-ARBed new tokens
197     4    Oct 23, 2009  dgkoch    fixed format typo
198     3    Oct 23, 2009  dgkoch    added issue 4, resolved issues 1-3, renamed extension
199     2    Oct 8, 2009   dgkoch    Enum can also be accepted for RenderbufferStorage*
200     1    Oct 8, 2009   dgkoch    Initial revision
201
202