Back to the OpenGL extension cross reference

GL_OES_compressed_paletted_texture


Name


    OES_compressed_paletted_texture

Name Strings


    GL_OES_compressed_paletted_texture

Contact


    Affie Munshi, ATI (amunshi@ati.com)

Notice



IP Status


    No known IP issues

Status


    Ratified by the Khronos BOP, July 23, 2003.


Version


    Last Modifed Date: 09 July 2003
Author Revision: 0.4

Number


    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
"level" 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.

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


3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
---------------------------------------------------------------
| 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th |
| texel | texel | texel | texel | 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    (Affie 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.

Implementation Support


   List of OpenGL implementations supporting the GL_OES_compressed_paletted_texture extension

Original File


   Original text file for the GL_OES_compressed_paletted_texture extension


Page generated on Sun Nov 20 18:40:43 2005