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 Specification Update Policy Khronos-approved extension specifications are updated in response to issues and bugs prioritized by the Khronos OpenGL Working Group. For extensions which have been promoted to a core Specification, fixes will first appear in the latest version of that core Specification, and will eventually be backported to the extension document. This policy is described in more detail at https://www.khronos.org/registry/OpenGL/docs/update_policy.php 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 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 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