| Name | 
 |  | 
 |     ARB_texture_rgb10_a2ui | 
 |  | 
 | Name Strings | 
 |  | 
 |     GL_ARB_texture_rgb10_a2ui | 
 |  | 
 | Contact | 
 |  | 
 |     Daniel Koch (daniel 'at' transgaming.com) | 
 |  | 
 | Contributors | 
 |  | 
 |     Daniel Koch, TransGaming | 
 |     Graham Sellers, AMD | 
 |     Jeff Bolz, NVIDIA | 
 |     Pat Brown, NVIDIA | 
 |  | 
 | Notice | 
 |  | 
 |     Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at | 
 |         http://www.khronos.org/registry/speccopyright.html | 
 |  | 
 | Status | 
 |  | 
 |     Complete. Approved by the ARB at the 2010/01/22 F2F meeting. | 
 |     Approved by the Khronos Board of Promoters on March 10, 2010. | 
 |  | 
 | Version | 
 |  | 
 |     Last Modified Date: January 29, 2009 | 
 |     Author Revision: 7 | 
 |  | 
 | Number | 
 |  | 
 |     ARB Extension #83 | 
 |  | 
 | Dependencies | 
 |  | 
 |     This extension is written against the OpenGL 3.2 specification,  | 
 |     compatibility profile, but it can apply against previous versions | 
 |     of OpenGL. | 
 |  | 
 |     Requires OpenGL 3.0 or EXT_texture_integer. | 
 |  | 
 | Overview | 
 |  | 
 |     This extension adds support for the following data format: | 
 |  | 
 |     A new texturing format for unsigned 10.10.10.2 integer textures.  | 
 |  | 
 |     OpenGL has supported RGB10 and RGB10_A2 formats for a very long time.   | 
 |     This extension provides a variant of RGB10_A2 which supports unsigned  | 
 |     integer data (in contrast to the above "unsigned normalized integer"  | 
 |     formats). | 
 |  | 
 | IP Status | 
 |  | 
 |     No known IP claims. | 
 |  | 
 | New Procedures and Functions | 
 |  | 
 |     None | 
 |  | 
 | New Tokens | 
 |  | 
 |     Accepted by the <internalFormat> parameter of TexImage1D, TexImage2D, | 
 |     TexImage3D, CopyTexImage1D, CopyTexImage2D, RenderbufferStorage and  | 
 |     RenderbufferStorageMultisample: | 
 |  | 
 |         RGB10_A2UI                           0x906F | 
 |  | 
 | Additions to Chapter 3 of the OpenGL 3.2 Specification (Compatibility Profile) (Rasterization) | 
 |  | 
 |     Modify Section 3.7.4 (Transfer of Pixel Rectangles), p. 183 | 
 |  | 
 |     (modify Table 3.8, Packed pixel formats, p. 189, to allow the use of | 
 |      integer pixel formats with some packed pixel types) | 
 |  | 
 |                                    GL Data  # | 
 |       type Parameter Token Name     Type  Comps  Matching Pixel Formats | 
 |       ---------------------------  ------  ---  ----------------------------- | 
 |       UNSIGNED_BYTE_3_3_2          ubyte    3   RGB, RGB_INTEGER | 
 |       UNSIGNED_BYTE_2_3_3_REV      ubyte    3   RGB, RGB_INTEGER | 
 |       UNSIGNED_SHORT_5_6_5         ushort   3   RGB, RGB_INTEGER | 
 |       UNSIGNED_SHORT_5_6_5_REV     ushort   3   RGB, RGB_INTEGER | 
 |       UNSIGNED_SHORT_4_4_4_4       ushort   4   RGBA, BGRA, RGBA_INTEGER,  | 
 |                                                   BGRA_INTEGER | 
 |       UNSIGNED_SHORT_4_4_4_4_REV   ushort   4   RGBA, BGRA, RGBA_INTEGER,  | 
 |                                                   BGRA_INTEGER | 
 |       UNSIGNED_SHORT_5_5_5_1       ushort   4   RGBA, BGRA, RGBA_INTEGER,  | 
 |                                                   BGRA_INTEGER | 
 |       UNSIGNED_SHORT_1_5_5_5_REV   ushort   4   RGBA, BGRA, RGBA_INTEGER,  | 
 |                                                   BGRA_INTEGER | 
 |       UNSIGNED_INT_8_8_8_8         uint     4   RGBA, BGRA, RGBA_INTEGER,  | 
 |                                                   BGRA_INTEGER | 
 |       UNSIGNED_INT_8_8_8_8_REV     uint     4   RGBA, BGRA, RGBA_INTEGER,  | 
 |                                                   BGRA_INTEGER | 
 |       UNSIGNED_INT_10_10_10_2      uint     4   RGBA, BGRA, RGBA_INTEGER,  | 
 |                                                   BGRA_INTEGER | 
 |       UNSIGNED_INT_2_10_10_10_REV  uint     4   RGBA, BGRA, RGBA_INTEGER,  | 
 |                                                   BGRA_INTEGER | 
 |       <other rows unchanged> | 
 |  | 
 |  | 
 |     Modify Section 3.9.1 (Texture Image Specification), p 212 | 
 |  | 
 |     (add the following required Texture and renderbuffer color formats, p 216) | 
 |       | 
 |     - RGB10_A2UI | 
 |  | 
 |     (add the following to Table 3.17: "Correspondence of sized internal color  | 
 |     formats to base internal formats...", beginning on p 218) | 
 |  | 
 |      Sized                     Base                     R    G    B    A    Shared | 
 |      Internal Format           Internal Format          bits bits bits bits bits | 
 |      -----------------------   ---------------------    ---- ---- ---- ---- ------ | 
 |      RGB10_A2UI                RGBA                     ui10 ui10 ui10 ui2 | 
 |  | 
 |  | 
 | New State | 
 |  | 
 |     None. | 
 |  | 
 | New Implementation Dependent State | 
 |  | 
 |     None. | 
 |  | 
 | Issues | 
 |  | 
 |     1. What should the new enumerant be called? | 
 |  | 
 |        Possibilities include:  | 
 |        RGB10A2UI - difficult to read | 
 |        RGB10_A2UI - follows precedence of RGB10_A2 and other UI texture formats, | 
 |          however it could difficult to know at a glace if the the UI applies to  | 
 |          both the RGB and A components, or just the A component. | 
 |        RGB10UI_A2UI - follows the precedence of R11F_G11F_B10F | 
 |        RGB10_A2_UI - along the same lines as the _SNORM formats, but divergent | 
 |          from other UI formats. | 
 |        | 
 |        RESOLVED. Using RGB10_A2UI.  The UI applies to all 4 components. | 
 |  | 
 |     2. What should this extension be called? | 
 |  | 
 |        RESOLVED: ARB_texture_rgb10_a2ui, after the new internal format that is  | 
 |        added. Early drafts used the name texture_unsigned_10_10_10_2, but this  | 
 |        is only somewhat related type that isn't added by this extension. | 
 |  | 
 |     3. Should this new format be required to be renderable? | 
 |  | 
 |        RESOLVED: Yes. It appears to be renderable in other APIs that are  | 
 |        supported by the same hardware, and no hardware vendors have objected. | 
 |  | 
 |     4. It is possible to load packed 10_10_10_2 unsigned integer data into GL  | 
 |        via TexImage without this extension?   | 
 |  | 
 |        RESOLVED:  No.  The EXT_texture_integer extension, as later | 
 |        incorporated into OpenGL 3.0, added new integer pixel format enums | 
 |        (e.g., RGBA_INTEGER) and texture formats (e.g., RGBA16UI). All texture | 
 |        formats added by that extension had a "matching" non-packed format and | 
 |        type combination, so there wasn't a strong need to explicitly support | 
 |        packed pixel types for integer pixel formats. | 
 |  | 
 |        The texture format added by this extension logically maps to a "packed" | 
 |        format/type combination, so we add this support by adding RGB_INTEGER, | 
 |        RGBA_INTEGER, and BGRA_INTEGER (as appropriate) to the list of formats | 
 |        supported by packed pixel data types. | 
 |  | 
 |        Even though we are only adding one "packed" texture format, we chose to | 
 |        allow all packed types with corresponding integer formats for | 
 |        orthogonality. | 
 |  | 
 |  | 
 | Revision History | 
 |  | 
 |     Rev.  Date          Author    Changes | 
 |     ----  ------------  --------  ------------------------------------------------------ | 
 |      7    Jan 29, 2010  pbrown    Update spec language to explicitly allow | 
 |                                   packed pixels data types with integer pixel | 
 |                                   formats; update issue 4 to indicate that | 
 |                                   packed pixels with integer formats wasn't | 
 |                                   previously allowed (bug 5674). | 
 |      6    Jan 26, 2010  pbrown    assign enum value | 
 |      5    Dec 10, 2009  dgkoch    de-ARBed new tokens | 
 |      4    Oct 23, 2009  dgkoch    fixed format typo | 
 |      3    Oct 23, 2009  dgkoch    added issue 4, resolved issues 1-3, renamed extension | 
 |      2    Oct 8, 2009   dgkoch    Enum can also be accepted for RenderbufferStorage* | 
 |      1    Oct 8, 2009   dgkoch    Initial revision | 
 |  |