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