15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_shared_texture_palette
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_shared_texture_palette
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Jon Leech, SGI (ljp 'at' sgi.com)
125bd8deadSopenharmony_ci    Mark J. Kilgard, NVIDIA Corporation (mjk 'at' nvidia.com)
135bd8deadSopenharmony_ci
145bd8deadSopenharmony_ciVersion
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    Last Modified Date: March 24, 2004
175bd8deadSopenharmony_ci    Revision: 1.4
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciNumber
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    141
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciSupport
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    Mesa.
265bd8deadSopenharmony_ci
275bd8deadSopenharmony_ci    Selected NVIDIA GPUs: NV1x (GeForce 256, GeForce2, GeForce4 MX,
285bd8deadSopenharmony_ci    GeForce4 Go, Quadro, Quadro2), NV2x (GeForce3, GeForce4 Ti,
295bd8deadSopenharmony_ci    Quadro DCC, Quadro4 XGL), and NV3x (GeForce FX 5xxxx, Quadro FX
305bd8deadSopenharmony_ci    1000/2000/3000).  NV3 (Riva 128) and NV4 (TNT, TNT2) GPUs and NV4x
315bd8deadSopenharmony_ci    GPUs do NOT support this functionality (no hardware support).
325bd8deadSopenharmony_ci    Future NVIDIA GPU designs will no longer support paletted textures.
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ci    S3 ProSavage, Savage 2000.
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ci    3Dfx Voodoo3, Voodoo5.
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ci    3Dlabs GLINT.
395bd8deadSopenharmony_ci
405bd8deadSopenharmony_ciDependencies
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ci    EXT_paletted_texture is required.
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ciOverview
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ci    EXT_shared_texture_palette defines a shared texture palette which may be
475bd8deadSopenharmony_ci    used in place of the texture object palettes provided by
485bd8deadSopenharmony_ci    EXT_paletted_texture. This is useful for rapidly changing a palette
495bd8deadSopenharmony_ci    common to many textures, rather than having to reload the new palette
505bd8deadSopenharmony_ci    for each texture. The extension acts as a switch, causing all lookups
515bd8deadSopenharmony_ci    that would normally be done on the texture's palette to instead use the
525bd8deadSopenharmony_ci    shared palette.
535bd8deadSopenharmony_ci
545bd8deadSopenharmony_ciIP Status
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ci    None.
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ciIssues
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ci    *  Do we want to use a new <target> to ColorTable to specify the
615bd8deadSopenharmony_ci       shared palette, or can we just infer the new target from the
625bd8deadSopenharmony_ci       corresponding Enable?
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ci    *  A future extension of larger scope might define a "texture palette
655bd8deadSopenharmony_ci       object" and bind these objects to texture objects dynamically, rather
665bd8deadSopenharmony_ci       than making palettes part of the texture object state as the current
675bd8deadSopenharmony_ci       EXT_paletted_texture spec does.
685bd8deadSopenharmony_ci
695bd8deadSopenharmony_ci    *  Should there be separate shared palettes for 1D, 2D, and 3D
705bd8deadSopenharmony_ci       textures?
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci       Probably not; palette lookups have nothing to do with the
735bd8deadSopenharmony_ci       dimensionality of the texture. If multiple shared palettes
745bd8deadSopenharmony_ci       are needed, we should define palette objects.
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci    *  There's no proxy mechanism for checking if a shared palette can
775bd8deadSopenharmony_ci       be defined with the requested parameters. Will it suffice to
785bd8deadSopenharmony_ci       assume that if a texture palette can be defined, so can a shared
795bd8deadSopenharmony_ci       palette with the same parameters?
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci    *  The changes to the spec are based on changes already made for
825bd8deadSopenharmony_ci       EXT_paletted_texture, which means that all three documents must
835bd8deadSopenharmony_ci       be referred to. This is quite difficult to read.
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ci    *  The changes to section 3.8.6, defining how shared palettes are
865bd8deadSopenharmony_ci       enabled and disabled, might be better placed in section 3.8.1.
875bd8deadSopenharmony_ci       However, the underlying EXT_paletted_texture does not appear to
885bd8deadSopenharmony_ci       modify these sections to define exactly how palette lookups are
895bd8deadSopenharmony_ci       done, and it's not clear where to put the changes.
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci    *  How does the shared texture palette interact with multitexture
925bd8deadSopenharmony_ci       support?  There is a single global shared texture palette that
935bd8deadSopenharmony_ci       all texture units utilize (as opposed to a shared texture palette
945bd8deadSopenharmony_ci       per texture unit).
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ciNew Procedures and Functions
975bd8deadSopenharmony_ci
985bd8deadSopenharmony_ci    None
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ciNew Tokens
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci    Accepted by the <pname> parameters of GetBooleanv, GetIntegerv,
1035bd8deadSopenharmony_ci    GetFloatv, GetDoublev, IsEnabled, Enable, Disable, ColorTableEXT,
1045bd8deadSopenharmony_ci    ColorSubTableEXT, GetColorTableEXT, GetColorTableParameterivEXT, and
1055bd8deadSopenharmony_ci    GetColorTableParameterfd EXT:
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ci    SHARED_TEXTURE_PALETTE_EXT              0x81FB
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
1105bd8deadSopenharmony_ci
1115bd8deadSopenharmony_ci    None
1125bd8deadSopenharmony_ci
1135bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.1 Specification (Rasterization)
1145bd8deadSopenharmony_ci
1155bd8deadSopenharmony_ci  Section 3.8, 'Texturing,' subsection 'Texture Image Specification' is
1165bd8deadSopenharmony_ci  modified as follows:
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci    In the Palette Specification Commands section, the sentence
1195bd8deadSopenharmony_ci    beginning 'target specifies which texture is to' should be changed
1205bd8deadSopenharmony_ci    to:
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci      target specifies the texture palette or shared palette to be
1235bd8deadSopenharmony_ci      changed, and may be one of TEXTURE_1D, TEXTURE_2D,
1245bd8deadSopenharmony_ci      PROXY_TEXTURE_1D, PROXY_TEXTURE_2D, TEXTURE_3D_EXT,
1255bd8deadSopenharmony_ci      PROXY_TEXTURE_3D_EXT, or SHARED_TEXTURE_PALETTE_EXT.
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ci    In the 'Texture State and Proxy State' section, the sentence
1285bd8deadSopenharmony_ci    beginning 'A texture's palette is initially...' should be changed
1295bd8deadSopenharmony_ci    to:
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ci      There is also a shared palette not associated with any texture,
1325bd8deadSopenharmony_ci      which may override a texture palette. (Even when multiple texture
1335bd8deadSopenharmony_ci      units are available, there is still only a single shared texture
1345bd8deadSopenharmony_ci      palette.) All palettes are initially...
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ci  Section 3.8.6, 'Texture Application' is modified by appending the
1375bd8deadSopenharmony_ci  following:
1385bd8deadSopenharmony_ci
1395bd8deadSopenharmony_ci    Use of the shared texture palette is enabled or disabled using the
1405bd8deadSopenharmony_ci    generic Enable or Disable commands, respectively, with the symbolic
1415bd8deadSopenharmony_ci    constant SHARED_TEXTURE_PALETTE_EXT.
1425bd8deadSopenharmony_ci
1435bd8deadSopenharmony_ci    The required state is one bit indicating whether the shared palette is
1445bd8deadSopenharmony_ci    enabled or disabled. In the initial state, the shared palettes is
1455bd8deadSopenharmony_ci    disabled.
1465bd8deadSopenharmony_ci
1475bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
1485bd8deadSopenharmony_ciand the Frame buffer)
1495bd8deadSopenharmony_ci
1505bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.1 Specification (Special Functions)
1515bd8deadSopenharmony_ci
1525bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.1 Specification (State and State Requests)
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ci    In the section on GetTexImage, the sentence beginning 'If format is
1555bd8deadSopenharmony_ci    not COLOR_INDEX...' should be changed to:
1565bd8deadSopenharmony_ci
1575bd8deadSopenharmony_ci      If format is not COLOR_INDEX, the texture's indices are passed
1585bd8deadSopenharmony_ci      through the texture's palette, or the shared palette if one is
1595bd8deadSopenharmony_ci      enabled, and the resulting components are assigned among R, G, B,
1605bd8deadSopenharmony_ci      and A according to Table 6.1.
1615bd8deadSopenharmony_ci
1625bd8deadSopenharmony_ci    In the GetColorTable section, the first sentence of the second
1635bd8deadSopenharmony_ci    paragraph should be changed to read:
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ci      GetColorTableEXT retrieves the texture palette or shared palette
1665bd8deadSopenharmony_ci      given by target.
1675bd8deadSopenharmony_ci
1685bd8deadSopenharmony_ci    The first sentence of the third paragraph should be changed to read:
1695bd8deadSopenharmony_ci
1705bd8deadSopenharmony_ci      Palette parameters can be retrieved using
1715bd8deadSopenharmony_ci        void GetColorTableParameterivEXT(enum target, enum pname, int *params);
1725bd8deadSopenharmony_ci        void GetColorTableParameterfvEXT(enum target, enum pname, float *params);
1735bd8deadSopenharmony_ci      target specifies the texture palette or shared palette being
1745bd8deadSopenharmony_ci      queried and pname controls which parameter value is returned.
1755bd8deadSopenharmony_ci
1765bd8deadSopenharmony_ciAdditions to the GLX Specification
1775bd8deadSopenharmony_ci
1785bd8deadSopenharmony_ci    None
1795bd8deadSopenharmony_ci
1805bd8deadSopenharmony_ciNew State
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ciGet Value                   Type  Get Command                  Initial Value  Description     Sec    Attribute
1835bd8deadSopenharmony_ci--------------------------  ----  ---------------------------  -------------  --------------  -----  --------------
1845bd8deadSopenharmony_ciSHARED_TEXTURE_PALETTE_EXT  B     IsEnabled                    False          shared texture  3.8.6  texture/enable
1855bd8deadSopenharmony_ci                                                                              palette enable
1865bd8deadSopenharmony_ciSHARED_TEXTURE_PALETTE_EXT  I     GetColorTableEXT             empty          shared texture  3.8    -
1875bd8deadSopenharmony_ci                                                                              palette table
1885bd8deadSopenharmony_ciCOLOR_TABLE_FORMAT_EXT      Zn    GetColorTableParameterivEXT  RGBA           shared texture  3.8    -
1895bd8deadSopenharmony_ci                                                                              palette format
1905bd8deadSopenharmony_ciCOLOR_TABLE_WIDTH_EXT       Z+    GetColorTableParameteriv     0              shared texture  3.8    -
1915bd8deadSopenharmony_ci                                                                              palette width
1925bd8deadSopenharmony_ciCOLOR_TABLE_x_SIZE_EXT      6xZ+  GetColorTableParameteriv     0              shared texture  3.8    -
1935bd8deadSopenharmony_ci                                                                              palette
1945bd8deadSopenharmony_ci                                                                              component sizes
1955bd8deadSopenharmony_ci
1965bd8deadSopenharmony_ciNew Implementation Dependent State
1975bd8deadSopenharmony_ci
1985bd8deadSopenharmony_ci    None
1995bd8deadSopenharmony_ci
2005bd8deadSopenharmony_ciRevision History
2015bd8deadSopenharmony_ci
2025bd8deadSopenharmony_ci    September 4, 2002 - Add missing IP Status / Contact fields
2035bd8deadSopenharmony_ci    (without bumping the revision) and incorporated Mark's changes
2045bd8deadSopenharmony_ci    into the registry. (Jon Leech)
2055bd8deadSopenharmony_ci
2065bd8deadSopenharmony_ci    July 10, 2002 (version 1.3) - Added "New State" tables entries.
2075bd8deadSopenharmony_ci    Clarify that there is a single global shared texture palette, 
2085bd8deadSopenharmony_ci    rather than a per-texture unit palette when multitexture is
2095bd8deadSopenharmony_ci    available. (Mark Kilgard)
2105bd8deadSopenharmony_ci
2115bd8deadSopenharmony_ci    March 24, 2004 (version 1.4) - Document vendor support for this
2125bd8deadSopenharmony_ci    extension; note that future NVIDIA GPU designs will not support this
2135bd8deadSopenharmony_ci    extension. (Mark Kilgard)
2145bd8deadSopenharmony_ci
215