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