| Name |
| |
| OES_compressed_paletted_texture |
| |
| Name Strings |
| |
| GL_OES_compressed_paletted_texture |
| |
| Contact |
| |
| Aaftab Munshi, ATI (amunshi@ati.com) |
| |
| Notice |
| |
| Copyright (c) 2003-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 ES 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 |
| |
| IP Status |
| |
| No known IP issues |
| |
| Status |
| |
| Ratified by the Khronos BOP, July 23, 2003. |
| |
| Version |
| |
| Last Modifed Date: 12 November 2005 |
| Author Revision: 0.6 |
| |
| Number |
| |
| OpenGL ES Extension #6 (formerly OpenGL Extension #294) |
| |
| Dependencies |
| |
| Written based on the wording of the OpenGL ES 1.0 specification |
| |
| Overview |
| |
| The goal of this extension is to allow direct support of palettized |
| textures in OpenGL ES. |
| |
| Palettized textures are implemented in OpenGL ES using the |
| CompressedTexImage2D call. The definition of the following parameters |
| "level" and "internalformat" in the CompressedTexImage2D call have |
| been extended to support paletted textures. |
| |
| A paletted texture is described by the following data: |
| |
| palette format |
| can be R5_G6_B5, RGBA4, RGB5_A1, RGB8, or RGBA8 |
| |
| number of bits to represent texture data |
| can be 4 bits or 8 bits per texel. The number of bits |
| also detemine the size of the palette. For 4 bits/texel |
| the palette size is 16 entries and for 8 bits/texel the |
| palette size will be 256 entries. |
| |
| The palette format and bits/texel are encoded in the |
| "internalformat" parameter. |
| |
| palette data and texture mip-levels |
| The palette data followed by all necessary mip levels are |
| passed in "data" parameter of CompressedTexImage2D. |
| |
| The size of palette is given by palette format and bits / texel. |
| A palette format of RGB_565 with 4 bits/texel imply a palette |
| size of 2 bytes/palette entry * 16 entries = 32 bytes. |
| |
| The level value is used to indicate how many mip levels |
| are described. Negative level values are used to define |
| the number of miplevels described in the "data" component. |
| A level of zero indicates a single mip-level. |
| |
| Issues |
| |
| * Should glCompressedTexSubImage2D be allowed for modifying paletted |
| texture data. |
| |
| RESOLVED: No, this would then require implementations that do not |
| support paletted formats internally to also store the palette |
| per texture. This can be a memory overhead on platforms that are |
| memory constrained. |
| |
| * Should palette format and number of bits used to represent each |
| texel be part of data or internal format. |
| |
| RESOLVED: Should be part of the internal format since this makes |
| the palette format and texture data size very explicit for the |
| application programmer. |
| |
| * Should the size of palette be fixed i.e 16 entries for 4-bit texels |
| and 256 entries for 8-bit texels or be programmable. |
| |
| RESOLVED: Should be fixed. The application can expand the palette |
| to 16 or 256 if internally it is using a smaller palette. |
| |
| |
| New Procedures and Functions |
| |
| None |
| |
| |
| New Tokens |
| |
| Accepted by the <level> parameter of CompressedTexImage2D |
| |
| Zero and negative values. |level| + 1 determines the number of |
| mip levels defined for the paletted texture. |
| |
| Accepted by the <internalformat> paramter of CompressedTexImage2D |
| |
| PALETTE4_RGB8_OES 0x8B90 |
| PALETTE4_RGBA8_OES 0x8B91 |
| PALETTE4_R5_G6_B5_OES 0x8B92 |
| PALETTE4_RGBA4_OES 0x8B93 |
| PALETTE4_RGB5_A1_OES 0x8B94 |
| PALETTE8_RGB8_OES 0x8B95 |
| PALETTE8_RGBA8_OES 0x8B96 |
| PALETTE8_R5_G6_B5_OES 0x8B97 |
| PALETTE8_RGBA4_OES 0x8B98 |
| PALETTE8_RGB5_A1_OES 0x8B99 |
| |
| |
| Additions to Chapter 2 of the OpenGL 1.3 Specification (OpenGL Operation) |
| |
| None |
| |
| |
| Additions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization) |
| |
| Add to Table 3.17: Specific Compressed Internal Formats |
| |
| Compressed Internal Format Base Internal Format |
| ========================== ==================== |
| PALETTE4_RGB8_OES RGB |
| PALETTE4_RGBA8_OES RGBA |
| PALETTE4_R5_G6_B5_OES RGB |
| PALETTE4_RGBA4_OES RGBA |
| PALETTE4_RGB5_A1_OES RGBA |
| PALETTE8_RGB8_OES RGB |
| PALETTE8_RGBA8_OES RGBA |
| PALETTE8_R5_G6_B5_OES RGB |
| PALETTE8_RGBA4_OES RGBA |
| PALETTE8_RGB5_A1_OES RGBA |
| |
| Add to Section 3.8.3, Alternate Image Specification |
| |
| If <internalformat> is PALETTE4_RGB8, PALETTE4_RGBA8, PALETTE4_R5_G6_B5, |
| PALETTE4_RGBA4, PALETTE4_RGB5_A1, PALETTE8_RGB8, PALETTE8_RGBA8, |
| PALETTE8_R5_G6_B5, PALETTE8_RGBA4 or PALETTE8_RGB5_A1, the compressed |
| texture is a compressed paletted texture. The texture data contains the |
| palette data following by the mip-levels where the number of mip-levels |
| stored is given by |level| + 1. The number of bits that represent a |
| texel is 4 bits if <interalformat> is given by PALETTE4_xxx and is 8 |
| bits if <internalformat> is given by PALETTE8_xxx. |
| |
| The number of bits that represent each palette entry is: |
| |
| Compressed Internal Format # of bits / palette entry |
| ========================== ========================= |
| PALETTE4_RGB8_OES 24 |
| PALETTE4_RGBA8_OES 32 |
| PALETTE4_R5_G6_B5_OES 16 |
| PALETTE4_RGBA4_OES 16 |
| PALETTE4_RGB5_A1_OES 16 |
| PALETTE8_RGB8_OES 24 |
| PALETTE8_RGBA8_OES 32 |
| PALETTE8_R5_G6_B5_OES 16 |
| PALETTE8_RGBA4_OES 16 |
| PALETTE8_RGB5_A1_OES 16 |
| |
| Compressed paletted textures support only 2D images without |
| borders. CompressedTexImage2D will produce an INVALID_OPERATION |
| error if <border> is non-zero. |
| |
| |
| To determine palette format refer to tables 3.10 and 3.11 of Chapter |
| 3 where the data ordering for different <type> formats are described. |
| |
| Add table 3.17.1: Texel Data Formats for compressed paletted textures |
| |
| PALETTE4_xxx: |
| |
| 7 6 5 4 3 2 1 0 |
| --------------- |
| | 1st | 2nd | |
| | texel | texel | |
| --------------- |
| |
| PALETTE8_xxx |
| |
| |
| 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 |
| ------------------------------------------------------------------------------------- |
| | 4th | 3nd | 2rd | 1st | |
| | texel | texel | texel | texel | |
| ------------------------------------------------------------------------------------- |
| |
| |
| |
| Additions to Chapter 4 of the OpenGL 1.3 Specification (Per-Fragment |
| Operations and the Frame Buffer) |
| |
| None |
| |
| |
| Additions to Chapter 5 of the OpenGL 1.3 Specification (Special Functions) |
| |
| |
| None |
| |
| |
| Additions to Chapter 6 of the OpenGL 1.3 Specification (State and |
| State Requests) |
| |
| None |
| |
| |
| Additions to Appendix A of the OpenGL 1.3 Specification (Invariance) |
| |
| |
| Additions to the AGL/GLX/WGL Specification |
| |
| None |
| |
| |
| GLX Protocol |
| |
| None |
| |
| |
| Errors |
| |
| INVALID_OPERATION is generated by TexImage2D, CompressedTexSubImage2D, |
| CopyTexSubImage2D if <internalformat> is PALETTE4_RGB8_OES, |
| PALETTE4_RGBA8_OES, PALETTE4_R5_G6_B5_OES, PALETTE4_RGBA4_OES, |
| PALETTE4_RGB5_A1_OES, PALETTE8_RG8_OES, PALETTE8_RGBA8_OES, |
| PALETTE8_R5_G6_B5_OES, PALETTE8_RGBA4_OES, or PALETTE8_RGB5_A1_OES. |
| |
| INVALID_VALUE is generated by CompressedTexImage2D if |
| if <internalformat> is PALETTE4_RGB8_OES, PALETTE4_RGBA8_OES, |
| PALETTE4_R5_G6_B5_OES, PALETTE4_RGBA4_OES, PALETTE4_RGB5_A1_OES, |
| PALETTE8_RGB8_OES, PALETTE8_RGBA8_OES, PALETTE8_R5_G6_B5_OES, |
| PALETTE8_RGBA4_OES, or PALETTE8_RGB5_A1_OES and <level> value is |
| neither zero or a negative value. |
| |
| |
| New State |
| |
| The queries for NUM_COMPRESSED_TEXTURE_FORMATS and |
| COMPRESSED_TEXTURE_FORMATS include these ten new formats. |
| |
| Revision History |
| 04/28/2003 0.1 (Aaftab Munshi) |
| - Original draft. |
| |
| 05/29/2003 0.2 (David Blythe) |
| - Use paletted rather than palettized. Change naming of internal |
| format tokens to match scheme used for other internal formats. |
| |
| 07/08/2003 0.3 (David Blythe) |
| - Add official enumerant values and extension number. |
| |
| 07/09/2003 0.4 (David Blythe) |
| - Note that [NUM_]COMPRESSED_TEXTURE_FORMAT queries include the |
| new formats. |
| |
| 07/21/2004 0.5 (Aaftab Munshi) |
| - Fixed PALETTE_8xxx drawing |
| |
| 11/12/2005 0.6 (Aaftab Munshi) |
| - Corrections |