15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    SGIS_multitexture
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_SGIS_multitexture
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciVersion
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    $Date: 1998/10/15 00:54:19 $ $Revision: 1.20 $
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciNumber
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    116
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ciDependencies
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ci    OpenGL 1.1 is required 
205bd8deadSopenharmony_ci    EXT_texture3D affects the definition of this extension.
215bd8deadSopenharmony_ci    SGIS_texture4D affects the definition of this extension.
225bd8deadSopenharmony_ci    SGIS_texture_border_clamp affects the definition of this extension.
235bd8deadSopenharmony_ci    SGI_texture_color_table affects the definition of this extension.
245bd8deadSopenharmony_ci    SGIS_texture_edge_clamp affects the definition of this extension.
255bd8deadSopenharmony_ci    SGIX_texture_add_env affects the definition of this extension.
265bd8deadSopenharmony_ci    SGIS_texture_filter4 affects the definition of this extension.
275bd8deadSopenharmony_ci    SGIS_texture_lod affects the definition of this extension.
285bd8deadSopenharmony_ci    SGIX_texture_lod_bias affects the definition of this extension.
295bd8deadSopenharmony_ci    SGIX_texture_scale_bias affects the definition of this extension.
305bd8deadSopenharmony_ci    SGIS_texture_select affects the definition of this extension.
315bd8deadSopenharmony_ci    SGIS_detail_texture affects the definition of this extension.
325bd8deadSopenharmony_ci    SGIS_sharpen_texture affects the definition of this extension.
335bd8deadSopenharmony_ci    SGIX_shadow affects the definition of this extension.
345bd8deadSopenharmony_ci    SGIX_shadow_ambient affects the definition of this extension.
355bd8deadSopenharmony_ci    SGIX_clipmap affects the definition of this extension.
365bd8deadSopenharmony_ci    SGIS_point_line_texgen affects the definition of this extension.
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ciOverview
395bd8deadSopenharmony_ci
405bd8deadSopenharmony_ci    This extension adds support for multiple active textures.  The texture
415bd8deadSopenharmony_ci    capabilities are symmetric for all active textures.  Any texture capability
425bd8deadSopenharmony_ci    extension supported for one texture must be supported for all active
435bd8deadSopenharmony_ci    textures.  Each active texture has its own state vector which includes
445bd8deadSopenharmony_ci    texture image and filtering parameters and texture environment application.
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ci    The texture environments are applied in a pipelined fashion whereby the
475bd8deadSopenharmony_ci    output of one texture environment is used as the input fragment color for
485bd8deadSopenharmony_ci    the texture environment for the next active texture.  Changes to texture
495bd8deadSopenharmony_ci    state other than texture coordinates are routed through a selector which
505bd8deadSopenharmony_ci    controls which instance of texture state is affected.
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci              +-----+
535bd8deadSopenharmony_ci     Cf ----->|     |    +-----+                pipelined texture
545bd8deadSopenharmony_ci              | TE0 |--->|     |                environment
555bd8deadSopenharmony_ci    Ct0 ----->|     |    | TE1 |    +-----+
565bd8deadSopenharmony_ci              +-----+    |     |--->|     |
575bd8deadSopenharmony_ci    Ct1 ---------------->|     |    | TE2 |    +-----+
585bd8deadSopenharmony_ci                         +-----+    |     |--->|     |
595bd8deadSopenharmony_ci    Ct2 --------------------------->|     |    | TE3 |
605bd8deadSopenharmony_ci                                    +-----+    |     |--> cf'
615bd8deadSopenharmony_ci    Ct3 -------------------------------------->|     |
625bd8deadSopenharmony_ci                                               +-----+
635bd8deadSopenharmony_ci                .
645bd8deadSopenharmony_ci                .
655bd8deadSopenharmony_ci                .
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ci        Ct<i> = texture color from texture lookup <i>
685bd8deadSopenharmony_ci        Cf    = fragment color
695bd8deadSopenharmony_ci        TE    = texture environment
705bd8deadSopenharmony_ci    
715bd8deadSopenharmony_ci    Texture coordinate set, texture coordinate evaluator state, texture
725bd8deadSopenharmony_ci    generation function, and texture matrix are replicated independently of
735bd8deadSopenharmony_ci    the texture rasterization state and may differ in number from the
745bd8deadSopenharmony_ci    number of textures which can be active during rasterization.
755bd8deadSopenharmony_ci    Post-transform texture coordinates sets are associated with a texture
765bd8deadSopenharmony_ci    rasterization unit by binding them to a texture environment and they may
775bd8deadSopenharmony_ci    be multicast to several texture rasterization units.
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ci    The specification is written using four active textures and four
805bd8deadSopenharmony_ci    sets of texture coordinates though the actual number supported is
815bd8deadSopenharmony_ci    implementation dependent and can be larger or smaller than four.
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ciIssues
845bd8deadSopenharmony_ci
855bd8deadSopenharmony_ci    *  MultiTexCoord is an annoying name
865bd8deadSopenharmony_ci
875bd8deadSopenharmony_ci    *  alternatives for supplying fine grain texcoord
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci        1. Tex<k>Coord<n><T>[v|f](<T> data);
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci           a. efficient, no error checking required
925bd8deadSopenharmony_ci           d. adds *a lot* of new commands
935bd8deadSopenharmony_ci        
945bd8deadSopenharmony_ci        2. MultiTexCoord<n><T>[v|f](enum target, <T> data);
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci           a. only a small number of commands added
975bd8deadSopenharmony_ci           a. can be fairly efficient (may need hw tweak)
985bd8deadSopenharmony_ci           d. needs range checking for <target>
995bd8deadSopenharmony_ci        
1005bd8deadSopenharmony_ci        3. reuse TexCoord command and add SelectTextureCoordSetSGIS(enum target)
1015bd8deadSopenharmony_ci           to control routing
1025bd8deadSopenharmony_ci
1035bd8deadSopenharmony_ci           a. only add one new commands
1045bd8deadSopenharmony_ci           d. adds a lot of function call overhead when using multiple
1055bd8deadSopenharmony_ci              textures
1065bd8deadSopenharmony_ci           d. need to range check <target>
1075bd8deadSopenharmony_ci
1085bd8deadSopenharmony_ci    *  seems a little hacky to have SelectTextureSGIS control texture matrix
1095bd8deadSopenharmony_ci       since that is part of transform state and to have it control evaluator
1105bd8deadSopenharmony_ci       state yet SELECTED_TEXTURE itself is part of texture state.
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci    *  SelectTextureSGIS probably should not affect client state such as
1135bd8deadSopenharmony_ci       the vertex array state.
1145bd8deadSopenharmony_ci        
1155bd8deadSopenharmony_ci        it doesn't any more
1165bd8deadSopenharmony_ci
1175bd8deadSopenharmony_ci    *  mechanism to replicate input texcoords across multiple texture paths
1185bd8deadSopenharmony_ci       could be done with a pre-transform multicast or post-transform
1195bd8deadSopenharmony_ci       multicast.
1205bd8deadSopenharmony_ci
1215bd8deadSopenharmony_ci        done using TEXTURE_ENV_COORD_SET_SGIS texture parameter
1225bd8deadSopenharmony_ci        which is a post-transform mechanism.
1235bd8deadSopenharmony_ci
1245bd8deadSopenharmony_ci       RESOLVED: leave the coord source binding separate from
1255bd8deadSopenharmony_ci       the texture object state => needs a new command to set it.
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ci    *  need proxy/macro object to handle resource constraints
1285bd8deadSopenharmony_ci        save for another extension?
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci    *  still need a way to route textures to lighting block :(
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci        defined in light_texture.spec
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ci    *  should there be a post-filter colortable per texture?
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ci    *  should the number of textures and the number of texture
1375bd8deadSopenharmony_ci       coordinate paths be decoupled?
1385bd8deadSopenharmony_ci        RESOLVED: yes
1395bd8deadSopenharmony_ci        There are some issues with this.  We choose to break
1405bd8deadSopenharmony_ci        texture state into 3 pieces:
1415bd8deadSopenharmony_ci            1. client state deal with issuing texture coordinates
1425bd8deadSopenharmony_ci               from the application
1435bd8deadSopenharmony_ci            2. transform state which includes texgen, texture
1445bd8deadSopenharmony_ci               matrix, evaluation maps, and texture coordinate
1455bd8deadSopenharmony_ci               retrieval from Gets and Feedback.
1465bd8deadSopenharmony_ci            3. rasterization state which includes texture
1475bd8deadSopenharmony_ci               images, filter parameters and environment.
1485bd8deadSopenharmony_ci        2 & 3 are both server state.  there is an implication
1495bd8deadSopenharmony_ci        that 1 and 2 are a little more tightly coupled and
1505bd8deadSopenharmony_ci        equal in number but we need to keep the client
1515bd8deadSopenharmony_ci        state separate.
1525bd8deadSopenharmony_ci        There is some clumsyness with referring to the 2nd
1535bd8deadSopenharmony_ci        group of state as transform state.  There is a problem
1545bd8deadSopenharmony_ci        that the texgen state is part of the texture state
1555bd8deadSopenharmony_ci        used in PushAttrib and PopAttrib so some finessing
1565bd8deadSopenharmony_ci        is required.
1575bd8deadSopenharmony_ci
1585bd8deadSopenharmony_ci    *  special treatment of name 0?
1595bd8deadSopenharmony_ci
1605bd8deadSopenharmony_ci        RESOLVED: no
1615bd8deadSopenharmony_ci    
1625bd8deadSopenharmony_ci    *  more texture environment functions, SUBTRACT, ...?
1635bd8deadSopenharmony_ci        leading candidates are SUBTRACT and REVERSE_SUBTRACT
1645bd8deadSopenharmony_ci        could also make a new version of environment which is
1655bd8deadSopenharmony_ci        similar to blending.
1665bd8deadSopenharmony_ci
1675bd8deadSopenharmony_ci        RESOLVED: new environment, see texture_env.spec
1685bd8deadSopenharmony_ci    
1695bd8deadSopenharmony_ci    * more general combination of texture results?
1705bd8deadSopenharmony_ci
1715bd8deadSopenharmony_ci        RESOLVED: do them in add-on specs
1725bd8deadSopenharmony_ci    
1735bd8deadSopenharmony_ci    * allow texture environment computation to do something
1745bd8deadSopenharmony_ci      even when texture is disabled. This contradicts the current
1755bd8deadSopenharmony_ci      specification of texturing (the difference would show
1765bd8deadSopenharmony_ci      up in the REPLACE environment), so we redefine this
1775bd8deadSopenharmony_ci      behavior in a new environment (see texture_env.spec)
1785bd8deadSopenharmony_ci
1795bd8deadSopenharmony_ci    * support for interleaved arrays
1805bd8deadSopenharmony_ci      
1815bd8deadSopenharmony_ci      add a command which acts as a multiplier on the current
1825bd8deadSopenharmony_ci      interleaved array token causing the texture coordinate
1835bd8deadSopenharmony_ci      array to have <n> contiguous texture coords of the same
1845bd8deadSopenharmony_ci      type and format.
1855bd8deadSopenharmony_ci
1865bd8deadSopenharmony_ci    * some clarifications:
1875bd8deadSopenharmony_ci
1885bd8deadSopenharmony_ci      SelectTextureCoordSetSGIS affects client state only and
1895bd8deadSopenharmony_ci      affects the commands TexCoord<n>{T}[v], TexCoordPointer,
1905bd8deadSopenharmony_ci      EnableClientState, and DisableClientState.  Display lists
1915bd8deadSopenharmony_ci      contain texture coordinates for which the binding is fully
1925bd8deadSopenharmony_ci      resolved to one of TEXTURE0_SGIS ..  TEXTURE<n>_SGIS.
1935bd8deadSopenharmony_ci
1945bd8deadSopenharmony_ci      I chose to remove MultiTexCoordPointerSGIS as it was difficult
1955bd8deadSopenharmony_ci      to also include tokens which would make it possible to call
1965bd8deadSopenharmony_ci      Enable/DisableClientState with a token corresponding to the
1975bd8deadSopenharmony_ci      appropriate texture coordinate set, so SelectTextureCoordSetSGIS
1985bd8deadSopenharmony_ci      is required to manipulate the array state.  To maintain symmetry,
1995bd8deadSopenharmony_ci      I made all commands use SelectTextureCoordSetSGIS and the
2005bd8deadSopenharmony_ci      MultiTexCoord<n>{T}[v]SGIS commands are added to help with
2015bd8deadSopenharmony_ci      performance.  An alternative would be to have both
2025bd8deadSopenharmony_ci      MultiTexCoordPointerSGIS and add new tokens
2035bd8deadSopenharmony_ci      TEXTURE_COORD_ARRAY0_SGIS .. TEXTURE_COORD_ARRAY<n>_SGIS and
2045bd8deadSopenharmony_ci      not give TEXTURE_COORD_ARRAY0_SGIS the same value as
2055bd8deadSopenharmony_ci      TEXTURE_COORD_ARRAY, so that we can have the relationship
2065bd8deadSopenharmony_ci      TEXTURE_COORD_ARRAY<i>_SGIS = TEXTURE_COORD_ARRAY0_SGIS+i.
2075bd8deadSopenharmony_ci      This still might cause some confusion/asymmetry if the <target>
2085bd8deadSopenharmony_ci      parameter of MultiTexCoordPointerSGIS/MultiTexCoord<n>{T}[v]SGIS
2095bd8deadSopenharmony_ci      is TEXTURE0_SGIS .. TEXTURE<n>_SGIS but EnableClientState/
2105bd8deadSopenharmony_ci      DisableClientState use TEXTURE_COORD_ARRAY0_SGIS ..
2115bd8deadSopenharmony_ci      TEXTURE_COORD_ARRAY<n>_SGIS
2125bd8deadSopenharmony_ci
2135bd8deadSopenharmony_ci        
2145bd8deadSopenharmony_ci
2155bd8deadSopenharmony_ciNew Procedures and Functions
2165bd8deadSopenharmony_ci
2175bd8deadSopenharmony_ci    void MultiTexCoord{1234}{sifd}SGIS(enum target, T coords);
2185bd8deadSopenharmony_ci    void MultiTexCoord{1234}{sifd}vSGIS(enum target, T coords);
2195bd8deadSopenharmony_ci
2205bd8deadSopenharmony_ci    void InterleavedTextureCoordSetsSGIS(int factor);
2215bd8deadSopenharmony_ci
2225bd8deadSopenharmony_ci    void SelectTextureSGIS(enum target);
2235bd8deadSopenharmony_ci
2245bd8deadSopenharmony_ci    void SelectTextureCoordSetSGIS(enum target);
2255bd8deadSopenharmony_ci
2265bd8deadSopenharmony_ci    void SelectTextureTransformSGIS(enum target);
2275bd8deadSopenharmony_ci
2285bd8deadSopenharmony_ciNew Tokens
2295bd8deadSopenharmony_ci
2305bd8deadSopenharmony_ci    Accepted by the <pname> parameters of GetBooleanv, GetIntegerv,
2315bd8deadSopenharmony_ci    GetFloatv, and GetDoublev:
2325bd8deadSopenharmony_ci
2335bd8deadSopenharmony_ci    SELECTED_TEXTURE_SGIS                       0x83C0
2345bd8deadSopenharmony_ci    SELECTED_TEXTURE_COORD_SET_SGIS             0x83C1
2355bd8deadSopenharmony_ci    SELECTED_TEXTURE_TRANSFORM_SGIS             0x83C2
2365bd8deadSopenharmony_ci    MAX_TEXTURES_SGIS                           0x83C3
2375bd8deadSopenharmony_ci    MAX_TEXTURE_COORD_SETS_SGIS                 0x83C4
2385bd8deadSopenharmony_ci    TEXTURE_COORD_SET_INTERLEAVE_FACTOR_SGIS    0x83C5
2395bd8deadSopenharmony_ci
2405bd8deadSopenharmony_ci    Accepted by the <pname> parameter of TexEnvi, TexEnvf,
2415bd8deadSopenharmony_ci    TexEnviv, TexEnvfv, GetTexEnviv, and GetTexEnvfv:
2425bd8deadSopenharmony_ci
2435bd8deadSopenharmony_ci    TEXTURE_ENV_COORD_SET_SGIS                  0x83C6
2445bd8deadSopenharmony_ci
2455bd8deadSopenharmony_ci    Accepted by the <target> parameter of SelectTextureSGIS,
2465bd8deadSopenharmony_ci    SelectTextureTransformSGIS, SelectTextureCoordSetSGIS,
2475bd8deadSopenharmony_ci    MultiTexCoord<n>{T}[v]SGIS, and the <param> of TexParameteri and
2485bd8deadSopenharmony_ci    TexParameterf, and the <params> parameter of TexParameteriv, and
2495bd8deadSopenharmony_ci    TexParameterfv:
2505bd8deadSopenharmony_ci
2515bd8deadSopenharmony_ci    TEXTURE0_SGIS                               0x83C7
2525bd8deadSopenharmony_ci    TEXTURE1_SGIS                               0x83C8
2535bd8deadSopenharmony_ci    TEXTURE2_SGIS                               0x83C9
2545bd8deadSopenharmony_ci    TEXTURE3_SGIS                               0x83CA
2555bd8deadSopenharmony_ci    <reserve enums for 32>
2565bd8deadSopenharmony_ci
2575bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
2585bd8deadSopenharmony_ci
2595bd8deadSopenharmony_ci    Section 2.6 Begin/End Paradigm
2605bd8deadSopenharmony_ci
2615bd8deadSopenharmony_ci    <amend paragraph 2 & 3>
2625bd8deadSopenharmony_ci
2635bd8deadSopenharmony_ci    Each vertex is specified with two, three, or four coordinates.  In
2645bd8deadSopenharmony_ci    addition, a current normal, current texture coordinate set, and current
2655bd8deadSopenharmony_ci    color may be used in processing each vertex.  Normals are used by the GL in
2665bd8deadSopenharmony_ci    lighting calculations; the current normal is a three-dimensional vector
2675bd8deadSopenharmony_ci    that may be set by sending three coordinates that specify it.  Texture
2685bd8deadSopenharmony_ci    coordinates determine how a texture image is mapped onto a primitive.
2695bd8deadSopenharmony_ci    Multiple sets of texture coordinates may be used to specify how multiple
2705bd8deadSopenharmony_ci    texture images are mapped onto a primitive.  The number of texture
2715bd8deadSopenharmony_ci    coordinate sets supported is implementation dependent but must be at least
2725bd8deadSopenharmony_ci    one.
2735bd8deadSopenharmony_ci
2745bd8deadSopenharmony_ci    A color is associated with each vertex as it is specified. This associated
2755bd8deadSopenharmony_ci    color is either the current color or a color produced by lighting
2765bd8deadSopenharmony_ci    depending on whether or not lighting is enabled. Texture coordinates are
2775bd8deadSopenharmony_ci    similarly associated with each vertex.  Multiple sets of texture coordinates
2785bd8deadSopenharmony_ci    may be associated with a vertex.  Figure 2.2 summarizes the association of
2795bd8deadSopenharmony_ci    auxiliary data with a transformed vertex to produce a processed vertex.
2805bd8deadSopenharmony_ci
2815bd8deadSopenharmony_ci    <amend figure 2.2 to include multiple texcoord processing blocks
2825bd8deadSopenharmony_ci     (current texcoords, texgen, texture matrix)>
2835bd8deadSopenharmony_ci
2845bd8deadSopenharmony_ci    <amend paragraph 6>
2855bd8deadSopenharmony_ci    Before a color has been assigned to a vertex, the state required by a vertex
2865bd8deadSopenharmony_ci    is the vertex's coordinates, the current normal, and the current texture
2875bd8deadSopenharmony_ci    coordinate sets.  Once color has been assigned, however, the current normal
2885bd8deadSopenharmony_ci    is no longer needed. Because color assignment is done vertex-by-vertex, a
2895bd8deadSopenharmony_ci    processed vertex comprises the vertex's coordinates, its assigned color,
2905bd8deadSopenharmony_ci    and its texture coordinate sets.
2915bd8deadSopenharmony_ci
2925bd8deadSopenharmony_ci
2935bd8deadSopenharmony_ci
2945bd8deadSopenharmony_ci    Section 2.7 Vertex Specifications <texture coordinates>
2955bd8deadSopenharmony_ci
2965bd8deadSopenharmony_ci    <amend paragraph 2>
2975bd8deadSopenharmony_ci
2985bd8deadSopenharmony_ci    Current values are used in associating auxiliary data with a vertex
2995bd8deadSopenharmony_ci    as described in section 2.6.  A current value may be changed at any time
3005bd8deadSopenharmony_ci    by issuing an appropriate command.  The commands
3015bd8deadSopenharmony_ci
3025bd8deadSopenharmony_ci    void TexCoord{1234}{sifd}(T coords);
3035bd8deadSopenharmony_ci    void TexCoord{1234}{sifd}v(T coords);
3045bd8deadSopenharmony_ci
3055bd8deadSopenharmony_ci    specify the current homogeneous texture coordinates, named s,t,r, and q.
3065bd8deadSopenharmony_ci    The TexCoord1 family of commands set the s coordinate to the provided
3075bd8deadSopenharmony_ci    single argument while setting t and r to 0 and q to 1.  Similarly,
3085bd8deadSopenharmony_ci    TexCoord2 sets s and t to the specified values, r to 0, and q to 1;
3095bd8deadSopenharmony_ci    TexCoord3 sets s, t, and r, with q set to 1, and TexCoord4 sets all four
3105bd8deadSopenharmony_ci    texture coordinates.
3115bd8deadSopenharmony_ci
3125bd8deadSopenharmony_ci    Implementations may support more than 1 set of texture
3135bd8deadSopenharmony_ci    coordinates.  The MultiTexCoord family of commands takes the
3145bd8deadSopenharmony_ci    coordinate set to be modified as the <target> parameter.  The
3155bd8deadSopenharmony_ci    <target> parameter is one of TEXTURE0_SGIS through
3165bd8deadSopenharmony_ci    TEXTURE3_SGIS. If a <target> parameter greater than the number of
3175bd8deadSopenharmony_ci    supported coordinate sets is specified, the command has no effect.
3185bd8deadSopenharmony_ci    The command
3195bd8deadSopenharmony_ci
3205bd8deadSopenharmony_ci    void SelectTextureCoordSetSGIS(enum target);
3215bd8deadSopenharmony_ci
3225bd8deadSopenharmony_ci    is used to change the texture coordinate set modified by the TexCoord*
3235bd8deadSopenharmony_ci    family of commands.  <target> is one of TEXTURE0_SGIS through TEXTURE3_SGIS
3245bd8deadSopenharmony_ci    corresponding to the texture coordinate set to be modified by the TexCoord
3255bd8deadSopenharmony_ci    commands.  The current coordinate set selection is part of client state rather
3265bd8deadSopenharmony_ci    than server state.
3275bd8deadSopenharmony_ci
3285bd8deadSopenharmony_ci
3295bd8deadSopenharmony_ci    Section 2.8 Vertex Arrays
3305bd8deadSopenharmony_ci
3315bd8deadSopenharmony_ci    <amend paragraph 1>
3325bd8deadSopenharmony_ci
3335bd8deadSopenharmony_ci    The vertex specification commands in section 2.7 accept data in almost any
3345bd8deadSopenharmony_ci    format, but their use requires many command executions to specify even
3355bd8deadSopenharmony_ci    simple geometry.  Vertex data may also be placed in arrays that are stored
3365bd8deadSopenharmony_ci    in the client's address space. Blocks of data in these arrays may be used
3375bd8deadSopenharmony_ci    to specify multiple geometric primitives through the execution of a single
3385bd8deadSopenharmony_ci    GL command.  The client may specify 6 or more arrays at once: one each to
3395bd8deadSopenharmony_ci    store vertex coordinates, edge flags, colors, color indices, normals and
3405bd8deadSopenharmony_ci    one or more texture coordinate sets. The commands
3415bd8deadSopenharmony_ci
3425bd8deadSopenharmony_ci    void EdgeFlagPointer(sizei stride, void *pointer);
3435bd8deadSopenharmony_ci    void VertexPointer(int size, enum type, sizei stride, void *pointer);
3445bd8deadSopenharmony_ci    void ColorPointer(int size, enum type, sizei stride, void *pointer);
3455bd8deadSopenharmony_ci    void IndexPointer(enum type, sizei stride, void *pointer);
3465bd8deadSopenharmony_ci    void NormalPointer(enum type, sizei stride, void *pointer);
3475bd8deadSopenharmony_ci    void TexCoordPointer(int size, enum type, sizei stride, void *pointer);
3485bd8deadSopenharmony_ci
3495bd8deadSopenharmony_ci    ...
3505bd8deadSopenharmony_ci
3515bd8deadSopenharmony_ci    <insert this paragraph> between paragraph 2 & 3>
3525bd8deadSopenharmony_ci
3535bd8deadSopenharmony_ci    In implementations which support more than one set of texture coordinates,
3545bd8deadSopenharmony_ci    the command SelectTextureCoordSetSGIS is used to select the vertex array
3555bd8deadSopenharmony_ci    parameters to be modified by the TexCoordPointer command and the array
3565bd8deadSopenharmony_ci    affected by client state enable and disable commands with the
3575bd8deadSopenharmony_ci    TEXTURE_COORD_ARRAY parameter.
3585bd8deadSopenharmony_ci
3595bd8deadSopenharmony_ci    <modify the section on interleaved arrays as follows>
3605bd8deadSopenharmony_ci
3615bd8deadSopenharmony_ci        The commands
3625bd8deadSopenharmony_ci
3635bd8deadSopenharmony_ci        void InterleavedArrays(enum format, sizei stride,
3645bd8deadSopenharmony_ci            void *pointer) ;
3655bd8deadSopenharmony_ci        
3665bd8deadSopenharmony_ci        void InterleavedTextureCoordSetsSGIS(int factor) ;
3675bd8deadSopenharmony_ci    
3685bd8deadSopenharmony_ci    efficiently initializes the six arrays and their enables to one of 14
3695bd8deadSopenharmony_ci    configurations. <format> must be one 14 symbolic constants: V2F, V3F,
3705bd8deadSopenharmony_ci    C4UB_V2F, C4UB_V3F, C3F_V3F, N3F_V3F, C4F_N3F_V3F, T2F_V3F, T4F_V4F,
3715bd8deadSopenharmony_ci    T2F_C4UB_V3F, T2F_C3F_V3F, T2F_N3F_V3F, T2F_C4F_N3F_V3F, T4F_C4F_N3F_V4F.
3725bd8deadSopenharmony_ci    <factor> is an integer between 1 and SELECTED_TEXTURE_COORD_SET_SGIS
3735bd8deadSopenharmony_ci    and specifies how many texture coordinate sets are enabled as part
3745bd8deadSopenharmony_ci    of the InterleavedArrays command.
3755bd8deadSopenharmony_ci
3765bd8deadSopenharmony_ci        The effect of
3775bd8deadSopenharmony_ci
3785bd8deadSopenharmony_ci            InterleavedArrays(format, stride, pointer);
3795bd8deadSopenharmony_ci            InterleavedTextureCoordSetsSGIS(factor);
3805bd8deadSopenharmony_ci
3815bd8deadSopenharmony_ci    is the same as the effect of the command sequence
3825bd8deadSopenharmony_ci
3835bd8deadSopenharmony_ci           <copy command sequence from 1.1 spec, but change the part dealing
3845bd8deadSopenharmony_ci            with texture coords to>
3855bd8deadSopenharmony_ci
3865bd8deadSopenharmony_ci            GetIntegerv(SELECTED_TEXTURE_COORD_SET_SGIS, &x);
3875bd8deadSopenharmony_ci            if (<et>) {
3885bd8deadSopenharmony_ci                for(i = 0; i < factor; i++) {
3895bd8deadSopenharmony_ci                    SelectTextureCoordSetSGIS(TEXTURE0_SGIS+i);
3905bd8deadSopenharmony_ci                    EnableClientState(TEXTURE_COORD_ARRAY);
3915bd8deadSopenharmony_ci                    TexCoordPointer(st, FLOAT, str, <pointer>+i*pc);
3925bd8deadSopenharmony_ci                }
3935bd8deadSopenharmony_ci                for(i = factor; i < MAX_TEXTURE_COORD_SETS_SGIS; i++) {
3945bd8deadSopenharmony_ci                    SelectTextureCoordSetSGIS(TEXTURE0_SGIS+i);
3955bd8deadSopenharmony_ci                    DisableClientState(TEXTURE_COORD_ARRAY);
3965bd8deadSopenharmony_ci                }
3975bd8deadSopenharmony_ci            } else {
3985bd8deadSopenharmony_ci                for(i = 0; i < MAX_TEXTURE_COORD_SETS_SGIS; i++) {
3995bd8deadSopenharmony_ci                    SelectTextureCoordSetSGIS(TEXTURE0_SGIS+i);
4005bd8deadSopenharmony_ci                    DisableClientState(TEXTURE_COORD_ARRAY);
4015bd8deadSopenharmony_ci                }
4025bd8deadSopenharmony_ci            }
4035bd8deadSopenharmony_ci            SelectTextureCoordSetSGIS(x);
4045bd8deadSopenharmony_ci            pc *= factor;
4055bd8deadSopenharmony_ci    
4065bd8deadSopenharmony_ci
4075bd8deadSopenharmony_ci    If the number of supported is texture coordinate sets,
4085bd8deadSopenharmony_ci    MAX_TEXTURE_COORD_SETS_SGIS, is <k>, then the client state require to
4095bd8deadSopenharmony_ci    implement vertex arrays consists of five plus <k> boolean values, five
4105bd8deadSopenharmony_ci    plus <k> integer stride values, four plus <k> constants representing array
4115bd8deadSopenharmony_ci    types, and three plus <k> integers representing values per element.  In the
4125bd8deadSopenharmony_ci    initial state, the boolean values are each disabled, the memory pointers
4135bd8deadSopenharmony_ci    are each null, the strides are each zero, the array types are each FLOAT,
4145bd8deadSopenharmony_ci    and the integers representing values per element are each four.
4155bd8deadSopenharmony_ci
4165bd8deadSopenharmony_ci
4175bd8deadSopenharmony_ci    Section 2.10.2 Matrices
4185bd8deadSopenharmony_ci    
4195bd8deadSopenharmony_ci    <amend paragraph 8 texture matrix>
4205bd8deadSopenharmony_ci
4215bd8deadSopenharmony_ci    There is another 4x4 matrix that is applied to texture coordinates.
4225bd8deadSopenharmony_ci    This matrix is applied as
4235bd8deadSopenharmony_ci
4245bd8deadSopenharmony_ci                | m1 m5 m9  m13 | |s|
4255bd8deadSopenharmony_ci                | m2 m6 m10 m14 | |t| ,
4265bd8deadSopenharmony_ci                | m3 m7 m11 m15 | |r|
4275bd8deadSopenharmony_ci                | m4 m8 m12 m16 | |q|
4285bd8deadSopenharmony_ci
4295bd8deadSopenharmony_ci    where the left matrix is the current texture matrix.  The Matrix is applied
4305bd8deadSopenharmony_ci    to the coordinates resulting from texture coordinate generation which
4315bd8deadSopenharmony_ci    (which may simply be the current texture coordinates), and the resulting
4325bd8deadSopenharmony_ci    transformed coordinates become the texture coordinates associated with a
4335bd8deadSopenharmony_ci    vertex.  Setting the matrix mode to TEXTURE causes the already described
4345bd8deadSopenharmony_ci    matrix operations to apply to the texture matrix stack.
4355bd8deadSopenharmony_ci
4365bd8deadSopenharmony_ci    For implementations which support more than one set of texture coordinates,
4375bd8deadSopenharmony_ci    there is a corresponding texture matrix stack for each coordinate set. Each
4385bd8deadSopenharmony_ci    stack has the same depth. The texture matrix stack which is affected by the
4395bd8deadSopenharmony_ci    matrix operations is set using the SelectTextureTransformSGIS command.
4405bd8deadSopenharmony_ci
4415bd8deadSopenharmony_ci    There is a stack of matrices for each of the matrix modes.  For MODELVIEW
4425bd8deadSopenharmony_ci    mode, the stack depth is at least 32 (that is, there is a stack of at least
4435bd8deadSopenharmony_ci    32 model-view matrices). For other modes, the depth is at least 2.  Texture
4445bd8deadSopenharmony_ci    matrix stacks for all texture coordinate sets have the same depth.
4455bd8deadSopenharmony_ci
4465bd8deadSopenharmony_ci        void PushMatrix( void );
4475bd8deadSopenharmony_ci
4485bd8deadSopenharmony_ci    pushes the stack down by one, duplicating the current matrix in both the
4495bd8deadSopenharmony_ci    top of the stack and the entry below it.
4505bd8deadSopenharmony_ci
4515bd8deadSopenharmony_ci        void PopMatrix( void );
4525bd8deadSopenharmony_ci    
4535bd8deadSopenharmony_ci    pops the top entry off of the stack, replacing the current matrix with the
4545bd8deadSopenharmony_ci    matrix that was the second entry in the stack.  The pushing or popping
4555bd8deadSopenharmony_ci    takes place on the stack corresponding to the current matrix mode.  Popping
4565bd8deadSopenharmony_ci    a matrix off a stack with only one entry generates the error STACK_UNDERFLOW;
4575bd8deadSopenharmony_ci    pushing a matrix onto a full stack generates STACK_OVERFLOW.
4585bd8deadSopenharmony_ci
4595bd8deadSopenharmony_ci    When the current matrix mode is TEXTURE, the texture matrix stack corresponding
4605bd8deadSopenharmony_ci    to the currently selected textured is pushed or popped.
4615bd8deadSopenharmony_ci
4625bd8deadSopenharmony_ci    The state required to implement transformations consists of a three-value
4635bd8deadSopenharmony_ci    integer indicating the current matrix mode, a stack of at least two 4x4
4645bd8deadSopenharmony_ci    matrices for PROJECTION and one stack of at least two 4x4 matrices for
4655bd8deadSopenharmony_ci    each set of texture coordinates, TEXTURE, as well as associated stack pointers,
4665bd8deadSopenharmony_ci    and a stack of at least 32 4x4 matrices with an associated stack pointer for
4675bd8deadSopenharmony_ci    MODELVIEW.  Initially, there is only one matrix on each stack and all
4685bd8deadSopenharmony_ci    matrices are set to the identity.  The initial matrix mode is MODELVIEW.
4695bd8deadSopenharmony_ci
4705bd8deadSopenharmony_ci    Section 2.10.4 Generating texture coordinates
4715bd8deadSopenharmony_ci
4725bd8deadSopenharmony_ci    <amend paragraph 4>
4735bd8deadSopenharmony_ci
4745bd8deadSopenharmony_ci    The state required for texture coordinate generation for each set of
4755bd8deadSopenharmony_ci    texture coordinates supported by the implementation comprises a
4765bd8deadSopenharmony_ci    three-valued integer for each coordinate indicating coordinate generation
4775bd8deadSopenharmony_ci    mode, and a bit for each coordinate to indicate whether texture coordinate
4785bd8deadSopenharmony_ci    generation is enabled or disabled.  In addition, four coefficients are
4795bd8deadSopenharmony_ci    required for the four coordinates for each of EYE_LINEAR and
4805bd8deadSopenharmony_ci    OBJECT_LINEAR.  The initial state has the texture generation function
4815bd8deadSopenharmony_ci    disabled for all texture coordinates.  The initial values of p_i for s
4825bd8deadSopenharmony_ci    except p_1 which is one; for t all the p_i are zero except p_2, which is
4835bd8deadSopenharmony_ci    1.  The values of p_i for r and q are all zero.  These values of p_i apply
4845bd8deadSopenharmony_ci    for both the EYE_LINEAR and OBJECT_LINEAR versions.  Initially all texture
4855bd8deadSopenharmony_ci    generation modes are EYE_LINEAR.
4865bd8deadSopenharmony_ci
4875bd8deadSopenharmony_ci    Section 2.12  Current Raster Position
4885bd8deadSopenharmony_ci
4895bd8deadSopenharmony_ci    <amend paragraph 2>
4905bd8deadSopenharmony_ci
4915bd8deadSopenharmony_ci    The current raster position consists of three window coordinates x_w,
4925bd8deadSopenharmony_ci    y_w, and z_w, a clip coordinate w_c value, and eye coordinate distance,
4935bd8deadSopenharmony_ci    a valid bit, and associated data consisting op a color and texture
4945bd8deadSopenharmony_ci    coordinate sets.  It is set using one of the RasterPos commands:
4955bd8deadSopenharmony_ci    ...
4965bd8deadSopenharmony_ci
4975bd8deadSopenharmony_ci    <amend paragraph 5>
4985bd8deadSopenharmony_ci
4995bd8deadSopenharmony_ci    The current raster position requires five single-precision floating-point
5005bd8deadSopenharmony_ci    values for its x_w, y_w, and z_w window coordinates, its w_c clip
5015bd8deadSopenharmony_ci    coordinate, and its eye coordinate distance, a single valid bit, a color
5025bd8deadSopenharmony_ci    (RGBA and color index), and texture coordinates for each set of texture
5035bd8deadSopenharmony_ci    coordinates supported by the implementation.  In the initial state, the
5045bd8deadSopenharmony_ci    coordinates and texture coordinates and both (0,0,0,1), the eye coordinate
5055bd8deadSopenharmony_ci    distance is 0, the valid bit is set, the associated RGBA color is (1,1,1,1)
5065bd8deadSopenharmony_ci    and the associated color index is 1. In RGBA mode, the associated color
5075bd8deadSopenharmony_ci    index always has its initial value; in color index mode, the RGBA color
5085bd8deadSopenharmony_ci    always maintains its initial value.
5095bd8deadSopenharmony_ci
5105bd8deadSopenharmony_ci
5115bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.1 Specification (Rasterization)
5125bd8deadSopenharmony_ci
5135bd8deadSopenharmony_ci    Section 3.8 Texturing
5145bd8deadSopenharmony_ci
5155bd8deadSopenharmony_ci    <amend paragraphs 1 & 2>
5165bd8deadSopenharmony_ci
5175bd8deadSopenharmony_ci    Texturing maps a portion of one or more specified images onto each
5185bd8deadSopenharmony_ci    primitive for which texturing is enabled.  This mapping is accomplished by
5195bd8deadSopenharmony_ci    using the color of an image at the location indicated by a fragment's
5205bd8deadSopenharmony_ci    (s,t,r) coordinates to modify the fragment's RGBA color (r is currently
5215bd8deadSopenharmony_ci    ignored).  An implementation may support texturing using more than one
5225bd8deadSopenharmony_ci    image at a time.  In this case the fragment carries multiple sets of
5235bd8deadSopenharmony_ci    texture coordinates (s,t,r) which are used to index separate images to
5245bd8deadSopenharmony_ci    produce color values which are collectively used to modify the fragment's
5255bd8deadSopenharmony_ci    RGBA color.  Texturing is specified only for RGBA mode; its use in color
5265bd8deadSopenharmony_ci    index mode is undefined.  The following subsections (up to and including
5275bd8deadSopenharmony_ci    Section 3.8.5) specify the GL operation with a single texture and Section
5285bd8deadSopenharmony_ci    3.8.6 specifies the details of how multiple textures interact.
5295bd8deadSopenharmony_ci
5305bd8deadSopenharmony_ci    The GL provides a means to specify the details of how texturing of a
5315bd8deadSopenharmony_ci    primitive is effected. These details include specifications of the image to
5325bd8deadSopenharmony_ci    be texture mapped, the means by which the image is filtered when applied to
5335bd8deadSopenharmony_ci    the primitive, and the function that determines what RGBA value is produced
5345bd8deadSopenharmony_ci    given a fragment color and an image value.
5355bd8deadSopenharmony_ci
5365bd8deadSopenharmony_ci
5375bd8deadSopenharmony_ci    Section 3.8.4 Texture Objects
5385bd8deadSopenharmony_ci
5395bd8deadSopenharmony_ci    <add this paragraph to the end of the section>
5405bd8deadSopenharmony_ci
5415bd8deadSopenharmony_ci    The texture object name space is shared amongst all textures in multiple
5425bd8deadSopenharmony_ci    texture implementations.   A texture object may be bound to more than one
5435bd8deadSopenharmony_ci    texture target simultaneously, though they must all be of the same type
5445bd8deadSopenharmony_ci    (e.g., TEXTURE_1D, TEXTURE_2D).  After a texture object is bound, any GL
5455bd8deadSopenharmony_ci    operations on that target also affect any other target to which the same
5465bd8deadSopenharmony_ci    texture object is bound.
5475bd8deadSopenharmony_ci
5485bd8deadSopenharmony_ci
5495bd8deadSopenharmony_ci    Section 3.8.5 Texture Environments and Texture Functions
5505bd8deadSopenharmony_ci
5515bd8deadSopenharmony_ci    <amend the second half of paragraph 1>
5525bd8deadSopenharmony_ci    The possible environment parameters are TEXTURE_ENV_MODE,
5535bd8deadSopenharmony_ci    TEXTURE_ENV_COLOR, and TEXTURE_ENV_COORD_SET_SGIS.  TEXTURE_ENV_MODE may be
5545bd8deadSopenharmony_ci    set to one of REPLACE, MODULATE, DECAL, or BLEND; TEXTURE_ENV_COLOR is set
5555bd8deadSopenharmony_ci    to an RGBA color by providing four single-precision floating-point values
5565bd8deadSopenharmony_ci    in the range [0,1](values outside this range are clamped to it).  If
5575bd8deadSopenharmony_ci    integers are provided for TEXTURE_ENV_COLOR, then they are converted to
5585bd8deadSopenharmony_ci    floating-point as specified in Table 2.6 for signed integers.
5595bd8deadSopenharmony_ci    TEXTURE_ENV_COORD_SET_SGIS may be set to one of TEXTURE0_SGIS ..
5605bd8deadSopenharmony_ci    TEXTURE<n>_SGIS where <n> is one less than the number of supported
5615bd8deadSopenharmony_ci    texture coordinate sets.  If a floating-point value is provided, then it
5625bd8deadSopenharmony_ci    is rounded to the nearest integer.
5635bd8deadSopenharmony_ci
5645bd8deadSopenharmony_ci    <insert before paragraph 3>
5655bd8deadSopenharmony_ci
5665bd8deadSopenharmony_ci    The value of TEXTURE_ENV_COORD_SET_SGIS specifies which set of fragment
5675bd8deadSopenharmony_ci    texture coordinates are used to determine the texture value used in
5685bd8deadSopenharmony_ci    the texture function.  The same set of texture coordinates may
5695bd8deadSopenharmony_ci    be simultaneously used by multiple textures.
5705bd8deadSopenharmony_ci
5715bd8deadSopenharmony_ci    <replace paragraph 3>
5725bd8deadSopenharmony_ci
5735bd8deadSopenharmony_ci    The state required for the current texture environment consists of the
5745bd8deadSopenharmony_ci    four-valued integer indicating the texture function, four floating-
5755bd8deadSopenharmony_ci    point TEXTURE_ENV_COLOR values, and one MAX_TEXTURE_COORD_SETS_SGIS-valued
5765bd8deadSopenharmony_ci    integer indicating the texture coordinate set binding. In the initial
5775bd8deadSopenharmony_ci    state, the texture function is given by MODULATE, TEXTURE_ENV_COLOR is
5785bd8deadSopenharmony_ci    (0,0,0,0), and texture coordinate set is TEXTURE0_SGIS.
5795bd8deadSopenharmony_ci
5805bd8deadSopenharmony_ci
5815bd8deadSopenharmony_ci    Section 3.8.6 Texture Application <replace with this>
5825bd8deadSopenharmony_ci
5835bd8deadSopenharmony_ci    Texturing is enabled or disabled using the generic Enable and Disable
5845bd8deadSopenharmony_ci    commands, respectively, with the symbolic constant TEXTURE_1D or TEXTURE_2D
5855bd8deadSopenharmony_ci    to enable the one-dimensional or two-dimensional texture, respectively.  If
5865bd8deadSopenharmony_ci    both the one- and two-dimensional textures are enabled, the two-dimensional
5875bd8deadSopenharmony_ci    texture is used.  If all texturing is disabled, a rasterized fragment is
5885bd8deadSopenharmony_ci    passed unaltered to the next stage of the GL (although its texture
5895bd8deadSopenharmony_ci    coordinates may be discarded).  Otherwise, a texture value is found
5905bd8deadSopenharmony_ci    according to the parameter values of the currently bound texture image of
5915bd8deadSopenharmony_ci    the appropriate dimensionality using the rules given in sections 3.8.1 and
5925bd8deadSopenharmony_ci    3.8.2.  This texture value is used along with the incoming fragment in
5935bd8deadSopenharmony_ci    computing the texture function indicated by the currently bound texture
5945bd8deadSopenharmony_ci    environment.  The result of this function replaces the incoming fragment's
5955bd8deadSopenharmony_ci    R, G, B, and A values.  These are the color values passed to subsequent
5965bd8deadSopenharmony_ci    operations.  Other data associated with the incoming fragment remain
5975bd8deadSopenharmony_ci    unchanged, except that the texture coordinates may be discarded.
5985bd8deadSopenharmony_ci
5995bd8deadSopenharmony_ci    When multiple textures are supported, additional textures are each paired
6005bd8deadSopenharmony_ci    with an environment function.  The second texture function is computed
6015bd8deadSopenharmony_ci    using the texture value from the second texture, the fragment resulting
6025bd8deadSopenharmony_ci    from the first texture function computation and the environment function
6035bd8deadSopenharmony_ci    currently bound to the second texture.  If there is a third texture, the
6045bd8deadSopenharmony_ci    fragment resulting from the second texture function is combined with the
6055bd8deadSopenharmony_ci    third texture value using the environment function bound to the third
6065bd8deadSopenharmony_ci    texture and so on.  Texturing is enabled and disabled individually for each
6075bd8deadSopenharmony_ci    texture.  If texturing is disabled for one of the textures, then the
6085bd8deadSopenharmony_ci    fragment result from the previous stage is passed unaltered to the next
6095bd8deadSopenharmony_ci    stage.
6105bd8deadSopenharmony_ci
6115bd8deadSopenharmony_ci
6125bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
6135bd8deadSopenharmony_ciand the Framebuffer)
6145bd8deadSopenharmony_ci
6155bd8deadSopenharmony_ci
6165bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.1 Specification (Special Functions)
6175bd8deadSopenharmony_ci
6185bd8deadSopenharmony_ci    Section 5.1 Evaluators
6195bd8deadSopenharmony_ci
6205bd8deadSopenharmony_ci    <amend second part of paragraph 2 to indicate that the evaluator
6215bd8deadSopenharmony_ci    map modified is affected by SELECTED_TEXTURE_TRANSFORM_SGIS when the
6225bd8deadSopenharmony_ci    the type parameter is one of the texture coordinates.>
6235bd8deadSopenharmony_ci
6245bd8deadSopenharmony_ci    <amend paragraph 7>
6255bd8deadSopenharmony_ci
6265bd8deadSopenharmony_ci    The evaluation of a defined map is enabled or disabled with Enable and
6275bd8deadSopenharmony_ci    Disable using the constant corresponding to the map as described
6285bd8deadSopenharmony_ci    above.  In implementations which support multiple texture coordinates the
6295bd8deadSopenharmony_ci    affected texture evaluator map is further qualified by the value of
6305bd8deadSopenharmony_ci    SELECTED_TEXTURE_TRANSFORM_SGIS.  The error INVALID_VALUE results if
6315bd8deadSopenharmony_ci    either ustride or vstride is less than k, or if u1 is equal to u2, or
6325bd8deadSopenharmony_ci    if v1 is equal to v2.
6335bd8deadSopenharmony_ci
6345bd8deadSopenharmony_ci
6355bd8deadSopenharmony_ci    Section 5.3 Feedback
6365bd8deadSopenharmony_ci
6375bd8deadSopenharmony_ci    <amend bottom of paragraph 2>
6385bd8deadSopenharmony_ci
6395bd8deadSopenharmony_ci    The texture coordinates and colors returned are these resulting from the
6405bd8deadSopenharmony_ci    clipping operations described in (section 2.13.8).  Only one set of texture
6415bd8deadSopenharmony_ci    coordinates is returned even for implementations which support multiple
6425bd8deadSopenharmony_ci    texture coordinates.  The texture coordinate set returned is the the one
6435bd8deadSopenharmony_ci    corresponding to the value of SELECTED_TEXTURE_TRANSFORM_SGIS.
6445bd8deadSopenharmony_ci
6455bd8deadSopenharmony_ci
6465bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.1 Specification (State and State Requests)
6475bd8deadSopenharmony_ci
6485bd8deadSopenharmony_ci    <add this paragraph after paragraph 14 regarding multi-valued state variables>
6495bd8deadSopenharmony_ci
6505bd8deadSopenharmony_ci    When multiple textures are supported, most texture state variables are
6515bd8deadSopenharmony_ci    further qualified by the value of SELECTED_TEXTURE_TRANSFORM_SGIS or
6525bd8deadSopenharmony_ci    SELECTED_TEXTURE_SGIS to determine which server texture state vector is
6535bd8deadSopenharmony_ci    queried.  Client texture state variables such as texture coordinate
6545bd8deadSopenharmony_ci    array pointers are qualified with SELECTED_TEXTURE_COORD_SET_SGIS.
6555bd8deadSopenharmony_ci    Tables 6.5 through 6.22 indicate those state variables which are
6565bd8deadSopenharmony_ci    qualified by SELECTED_TEXTURE_TRANSFORM_SGIS, SELECTED_TEXTURE_SGIS or
6575bd8deadSopenharmony_ci    SELECTED_TEXTURE_COORD_SET_SGIS during state queries.
6585bd8deadSopenharmony_ci
6595bd8deadSopenharmony_ci    <add this paragraph after paragraph 16 regarding the TEXTURE_BIT>
6605bd8deadSopenharmony_ci
6615bd8deadSopenharmony_ci    When multiple textures are supported, operations on groups containing
6625bd8deadSopenharmony_ci    replicated texture state push or pop all versions of texture state
6635bd8deadSopenharmony_ci    within that group.  When server state for a group is pushed all state
6645bd8deadSopenharmony_ci    in the group corresponding to TEXTURE0_SGIS is pushed first, followed by
6655bd8deadSopenharmony_ci    state corresponding to TEXTURE1_SGIS, and so on up to and including the
6665bd8deadSopenharmony_ci    state corresponding to TEXTURE<n>_SGIS where <n> is the value of
6675bd8deadSopenharmony_ci    max{MAX_TEXTURES_SGIS, MAX_TEXTURE_COORD_SETS_SGIS}.  If state does
6685bd8deadSopenharmony_ci    not exist for an attribute (this can occur when MAX_TEXTURES_SGIS is
6695bd8deadSopenharmony_ci    not equal to MAX_TEXTURE_COORD_SETS_SGIS) then it is ignored.
6705bd8deadSopenharmony_ci    When server state for a group is popped the replicated texture state is
6715bd8deadSopenharmony_ci    restored in the opposite order that it was pushed, starting with state
6725bd8deadSopenharmony_ci    corresponding to TEXTURE<n>_SGIS and ending with TEXTURE0_SGIS.
6735bd8deadSopenharmony_ci    Identical rules are observed for client texture state push and pop
6745bd8deadSopenharmony_ci    operations.
6755bd8deadSopenharmony_ci
6765bd8deadSopenharmony_ci    <rename vertex_array attribute group to vertex>
6775bd8deadSopenharmony_ci
6785bd8deadSopenharmony_ci
6795bd8deadSopenharmony_ciAdditions to the GLX Specification
6805bd8deadSopenharmony_ci
6815bd8deadSopenharmony_ci    None
6825bd8deadSopenharmony_ci    
6835bd8deadSopenharmony_ciGLX Protocol
6845bd8deadSopenharmony_ci
6855bd8deadSopenharmony_ci    TBD
6865bd8deadSopenharmony_ci
6875bd8deadSopenharmony_ciDependencies on EXT_texture3D
6885bd8deadSopenharmony_ci
6895bd8deadSopenharmony_ci    If EXT_texture3D is not supported than the functionality and state
6905bd8deadSopenharmony_ci    associated with EXT_texture3D does not exist and is therefore not
6915bd8deadSopenharmony_ci    extended.
6925bd8deadSopenharmony_ci
6935bd8deadSopenharmony_ciDependencies on SGIS_texture4D
6945bd8deadSopenharmony_ci
6955bd8deadSopenharmony_ci    If SGIS_texture4D is not supported than the functionality and state
6965bd8deadSopenharmony_ci    associated with SGIS_texture4D does not exist and is therefore not
6975bd8deadSopenharmony_ci    extended.
6985bd8deadSopenharmony_ci
6995bd8deadSopenharmony_ciDependencies on SGIS_texture_border_clamp
7005bd8deadSopenharmony_ci
7015bd8deadSopenharmony_ci    If SGIS_texture_border_clamp is not supported than the functionality and
7025bd8deadSopenharmony_ci    state associated with SGIS_texture_border_clamp does not exist and is
7035bd8deadSopenharmony_ci    therefore not extended.
7045bd8deadSopenharmony_ci
7055bd8deadSopenharmony_ciDependencies on SGI_texture_color_table
7065bd8deadSopenharmony_ci
7075bd8deadSopenharmony_ci    If SGI_texture_color_table is not supported than the functionality and
7085bd8deadSopenharmony_ci    state associated with SGI_texture_color_table does not exist and is
7095bd8deadSopenharmony_ci    therefore not extended.
7105bd8deadSopenharmony_ci
7115bd8deadSopenharmony_ciDependencies on SGIS_texture_edge_clamp
7125bd8deadSopenharmony_ci
7135bd8deadSopenharmony_ci    If SGIS_texture_edge_clamp is not supported than the functionality and
7145bd8deadSopenharmony_ci    state associated with SGIS_texture_edge_clamp does not exist and is
7155bd8deadSopenharmony_ci    therefore not extended.
7165bd8deadSopenharmony_ci
7175bd8deadSopenharmony_ciDependencies on SGIX_texture_add_env
7185bd8deadSopenharmony_ci
7195bd8deadSopenharmony_ci    If SGIX_texture_add_env is not supported than the functionality and
7205bd8deadSopenharmony_ci    state associated with SGIX_texture_add_env does not exist and is
7215bd8deadSopenharmony_ci    therefore not extended.
7225bd8deadSopenharmony_ci
7235bd8deadSopenharmony_ciDependencies on SGIS_texture_filter4
7245bd8deadSopenharmony_ci
7255bd8deadSopenharmony_ci    If SGIS_texture_filter4 is not supported than the functionality and
7265bd8deadSopenharmony_ci    state associated with SGIS_texture_filter4 does not exist and is
7275bd8deadSopenharmony_ci    therefore not extended.
7285bd8deadSopenharmony_ci
7295bd8deadSopenharmony_ciDependencies on SGIS_texture_lod
7305bd8deadSopenharmony_ci
7315bd8deadSopenharmony_ci    If SGIS_texture_lod is not supported than the functionality and state
7325bd8deadSopenharmony_ci    associated with SGIS_texture_lod does not exist and is therefore not
7335bd8deadSopenharmony_ci    extended.
7345bd8deadSopenharmony_ci
7355bd8deadSopenharmony_ciDependencies on SGIX_texture_lod_bias
7365bd8deadSopenharmony_ci
7375bd8deadSopenharmony_ci    If SGIX_texture_lod_bias is not supported than the functionality and
7385bd8deadSopenharmony_ci    state associated with SGIX_texture_lod_bias does not exist and is
7395bd8deadSopenharmony_ci    therefore not extended.
7405bd8deadSopenharmony_ci
7415bd8deadSopenharmony_ciDependencies on SGIX_texture_scale_bias
7425bd8deadSopenharmony_ci
7435bd8deadSopenharmony_ci    If SGIX_texture_scale_bias is not supported than the functionality and
7445bd8deadSopenharmony_ci    state associated with SGIX_texture_scale_bias does not exist and is
7455bd8deadSopenharmony_ci    therefore not extended.
7465bd8deadSopenharmony_ci
7475bd8deadSopenharmony_ciDependencies on SGIS_texture_select
7485bd8deadSopenharmony_ci
7495bd8deadSopenharmony_ci    If SGIS_texture_select is not supported than the functionality and state
7505bd8deadSopenharmony_ci    associated with SGIS_texture_select does not exist and is therefore not
7515bd8deadSopenharmony_ci    extended.
7525bd8deadSopenharmony_ci
7535bd8deadSopenharmony_ciDependencies on SGIS_detail_texture
7545bd8deadSopenharmony_ci
7555bd8deadSopenharmony_ci    If SGIS_detail_texture is not supported than the functionality and state
7565bd8deadSopenharmony_ci    associated with SGIS_detail_texture does not exist and is therefore not
7575bd8deadSopenharmony_ci    extended.
7585bd8deadSopenharmony_ci
7595bd8deadSopenharmony_ciDependencies on SGIS_sharpen_texture
7605bd8deadSopenharmony_ci
7615bd8deadSopenharmony_ci    If SGIS_sharpen_texture is not supported than the functionality and
7625bd8deadSopenharmony_ci    state associated with SGIS_sharpen_texture does not exist and is
7635bd8deadSopenharmony_ci    therefore not extended.
7645bd8deadSopenharmony_ci
7655bd8deadSopenharmony_ciDependencies on SGIX_shadow
7665bd8deadSopenharmony_ci
7675bd8deadSopenharmony_ci    If SGIX_shadow is not supported than the functionality and state
7685bd8deadSopenharmony_ci    associated with SGIX_shadow does not exist and is therefore not
7695bd8deadSopenharmony_ci    extended.
7705bd8deadSopenharmony_ci
7715bd8deadSopenharmony_ciDependencies on SGIX_shadow_ambient
7725bd8deadSopenharmony_ci
7735bd8deadSopenharmony_ci    If SGIX_shadow_ambient is not supported than the functionality and state
7745bd8deadSopenharmony_ci    associated with SGIX_shadow_ambient does not exist and is therefore not
7755bd8deadSopenharmony_ci    extended.
7765bd8deadSopenharmony_ci
7775bd8deadSopenharmony_ciDependencies on SGIX_clipmap
7785bd8deadSopenharmony_ci
7795bd8deadSopenharmony_ci    If SGIX_clipmap is not supported than the functionality and state
7805bd8deadSopenharmony_ci    associated with SGIX_clipmap does not exist and is therefore not
7815bd8deadSopenharmony_ci    extended.
7825bd8deadSopenharmony_ci
7835bd8deadSopenharmony_ciDependencies on SGIS_point_line_texgen
7845bd8deadSopenharmony_ci
7855bd8deadSopenharmony_ci    If SGIS_point_line_texgen is not supported than the functionality and
7865bd8deadSopenharmony_ci    state associated with SGIS_point_line_texgen does not exist and is
7875bd8deadSopenharmony_ci    therefore not extended.
7885bd8deadSopenharmony_ci
7895bd8deadSopenharmony_ci
7905bd8deadSopenharmony_ciErrors
7915bd8deadSopenharmony_ci
7925bd8deadSopenharmony_ci    INVALID_ENUM is generated if SelectTextureSGIS,
7935bd8deadSopenharmony_ci    SelectTextureTransformSGIS, SelectTextureCoordSetSGIS,
7945bd8deadSopenharmony_ci    MultiTexCoord<n>{T}[v]SGIS, or MultiTexCoordPointer parameter <target> is
7955bd8deadSopenharmony_ci    not TEXTURE0_SGIS .. TEXTURE3_SGIS.
7965bd8deadSopenharmony_ci
7975bd8deadSopenharmony_ci    INVALID_OPERATION is generated if SelectTextureCoordSetSGIS or
7985bd8deadSopenharmony_ci    SelectTextureTransformSGIS parameter <target> is one of TEXTURE0_SGIS
7995bd8deadSopenharmony_ci    .. TEXTURE3_SGIS and <target> is greater or equal than the number of
8005bd8deadSopenharmony_ci    available textures coordinate sets.
8015bd8deadSopenharmony_ci
8025bd8deadSopenharmony_ci    INVALID_VALUE is generated if InterleavedTextureCoordSetsSGIS parameter
8035bd8deadSopenharmony_ci    <factor> is not between 1 and MAX_TEXTURE_COORD_SETS_SGIS.
8045bd8deadSopenharmony_ci
8055bd8deadSopenharmony_ci    INVALID_OPERATION is generated if SelectTextureSGIS parameter <target> is
8065bd8deadSopenharmony_ci    one of TEXTURE0_SGIS .. TEXTURE3_SGIS and <target> is greater or equal than
8075bd8deadSopenharmony_ci    the number of available textures.
8085bd8deadSopenharmony_ci
8095bd8deadSopenharmony_ci    INVALID_ENUM is generated if TexEnv{T}[v] parameter <pname> is
8105bd8deadSopenharmony_ci    TEXTURE_ENV_COORD_SET_SGIS and the <param> parameter is not one of
8115bd8deadSopenharmony_ci    TEXTURE0_SGIS .. TEXTURE3_SGIS.
8125bd8deadSopenharmony_ci
8135bd8deadSopenharmony_ci    INVALID_OPERATION is generated if TexEnv{T}[v] parameter <pname>
8145bd8deadSopenharmony_ci    is TEXTURE_ENV_COORD_SET_SGIS and the <param> parameter is greater or equal
8155bd8deadSopenharmony_ci    than the number of available textures coordinate sets.
8165bd8deadSopenharmony_ci
8175bd8deadSopenharmony_ci    INVALID_OPERATION is generated if SelectTextureSGIS or
8185bd8deadSopenharmony_ci    SelectTextureTransformSGIS is executed between execution of Begin and the
8195bd8deadSopenharmony_ci    corresponding execution of End.
8205bd8deadSopenharmony_ci
8215bd8deadSopenharmony_ci    INVALID_OPERATION is generated if SelectTextureCoordSetSGIS or
8225bd8deadSopenharmony_ci    MultiTexCoordPointerSGIS  is executed between execution of Begin and the
8235bd8deadSopenharmony_ci    corresponding execution of End, but some implementations may not generate
8245bd8deadSopenharmony_ci    the error.  In such cases the result of executing these commands is
8255bd8deadSopenharmony_ci    undefined.
8265bd8deadSopenharmony_ci
8275bd8deadSopenharmony_ciNew State
8285bd8deadSopenharmony_ci
8295bd8deadSopenharmony_ci    Get Value                           Get Command             Type            Initial Value           Attribute
8305bd8deadSopenharmony_ci    ---------                           -----------             ----            -------------           ---------
8315bd8deadSopenharmony_ci    SELECTED_TEXTURE_SGIS               GetIntegerv             Z4              TEXTURE0_SGIS           texture
8325bd8deadSopenharmony_ci    SELECTED_TEXTURE_TRANSFORM_SGIS     GetIntegerv             Z4              TEXTURE0_SGIS           texture
8335bd8deadSopenharmony_ci    SELECTED_TEXTURE_COORD_SET_SGIS     GetIntegerv             Z4              TEXTURE0_SGIS           vertex
8345bd8deadSopenharmony_ci    TEXTURE_COORD_SET_INTERLEAVE_FACTOR_SGIS    GetIntegerv     Z4              1                       vertex
8355bd8deadSopenharmony_ci
8365bd8deadSopenharmony_ciReplicated State
8375bd8deadSopenharmony_ci
8385bd8deadSopenharmony_ci    Get Value                           Get Command             Type            Initial Value           Attribute
8395bd8deadSopenharmony_ci    ---------                           -----------             ----            -------------           ---------
8405bd8deadSopenharmony_ci  x CURRENT_TEXTURE_COORDS              GetFloatv               1* x T          (0,0,0,1)               current
8415bd8deadSopenharmony_ci  x CURRENT_RASTER_TEXTURE_COORDS       GetFloatv               1* x T          (0,0,0,1)               current
8425bd8deadSopenharmony_ci
8435bd8deadSopenharmony_ci  c TEXTURE_COORD_ARRAY                 IsEnabled               1* x B          False                   vertex-array
8445bd8deadSopenharmony_ci  c TEXTURE_COORD_ARRAY_SIZE            GetIntegerv             1* x Z+         0                       vertex-array
8455bd8deadSopenharmony_ci  c TEXTURE_COORD_ARRAY_TYPE            GetIntegerv             1* x Z4         FLOAT                   vertex-array
8465bd8deadSopenharmony_ci  c TEXTURE_COORD_ARRAY_STRIDE          GetIntegerv             1* x Z+         0                       vertex-array
8475bd8deadSopenharmony_ci  c TEXTURE_COORD_ARRAY_POINTER         GetPointerv             1* x Y          0                       vertex-array
8485bd8deadSopenharmony_ci
8495bd8deadSopenharmony_ci  x TEXTURE_MATRIX                      GetFloatv               1* x 2* x M4    Identity                -
8505bd8deadSopenharmony_ci  x TEXTURE_STACK_DEPTH                 GetIntegerv             1* x Z+         1                       -
8515bd8deadSopenharmony_ci
8525bd8deadSopenharmony_ci    TEXTURE_1D                          IsEnabled               1* x B          False                   texture/enable
8535bd8deadSopenharmony_ci    TEXTURE_2D                          IsEnabled               1* x B          False                   texture/enable
8545bd8deadSopenharmony_ci    TEXTURE_3D_EXT                      IsEnabled               1* x B          False                   texture/enable
8555bd8deadSopenharmony_ci    TEXTURE_4D_SGIS                     IsEnabled               1* x B          False                   texture/enable
8565bd8deadSopenharmony_ci    TEXTURE_BINDING_1D                  GetIntegerv             1* x Z+         0                       texture
8575bd8deadSopenharmony_ci    TEXTURE_BINDING_2D                  GetIntegerv             1* x Z+         0                       texture
8585bd8deadSopenharmony_ci    TEXTURE_BINDING_3D_EXT              GetIntegerv             1* x Z+         0                       texture
8595bd8deadSopenharmony_ci    TEXTURE_BINDING_4D_SGIS             GetIntegerv             1* x Z+         0                       texture
8605bd8deadSopenharmony_ci    TEXTURE                             GetTexImage             1* x n x I      see sec 3.8             -
8615bd8deadSopenharmony_ci    TEXTURE_WIDTH                       GetTexLevelParameter    1* x n x Z+     0                       -
8625bd8deadSopenharmony_ci    TEXTURE_HEIGHT                      GetTexLevelParameter    1* x n x Z+     0                       -
8635bd8deadSopenharmony_ci   +TEXTURE_DEPTH_EXT                   GetTexLevelParameter    1* x n x Z+     0                       -
8645bd8deadSopenharmony_ci    TEXTURE_BORDER                      GetTexLevelParameter    1* x n x Z+     0                       -
8655bd8deadSopenharmony_ci    TEXTURE_INTERNAL_FORMAT             GetTexLevelParameter    1* x n x Z+     0                       -
8665bd8deadSopenharmony_ci    (TEXTURE_COMPONENTS)
8675bd8deadSopenharmony_ci    TEXTURE_RED_SIZE                    GetTexLevelParameter    1* x n x Z+     0                       -
8685bd8deadSopenharmony_ci    TEXTURE_GREEN_SIZE                  GetTexLevelParameter    1* x n x Z+     0                       -
8695bd8deadSopenharmony_ci    TEXTURE_BLUE_SIZE                   GetTexLevelParameter    1* x n x Z+     0                       -
8705bd8deadSopenharmony_ci    TEXTURE_ALPHA_SIZE                  GetTexLevelParameter    1* x n x Z+     0                       -
8715bd8deadSopenharmony_ci    TEXTURE_LUMINANCE_SIZE              GetTexLevelParameter    1* x n x Z+     0                       -
8725bd8deadSopenharmony_ci    TEXTURE_INTENISTY_SIZE              GetTexLevelParameter    1* x n x Z+     0                       -
8735bd8deadSopenharmony_ci    TEXTURE_BORDER_COLOR                GetTexParameter         1* x 2+ x C     (0,0,0,0)               texture
8745bd8deadSopenharmony_ci    TEXTURE_MIN_FILTER                  GetTexParameter         1* x 2+ x Z6    see sec 3.8             texture
8755bd8deadSopenharmony_ci    TEXTURE_MAG_FILTER                  GetTexParameter         1* x 2+ x Z2    see sec 3.8             texture
8765bd8deadSopenharmony_ci    TEXTURE_WRAP_S                      GetTexParameter         1* x 2+ x Z2    REPEAT                  texture
8775bd8deadSopenharmony_ci    TEXTURE_WRAP_T                      GetTexParameter         1* x 2+ x Z2    REPEAT                  texture
8785bd8deadSopenharmony_ci   +TEXTURE_WRAP_R_EXT                  GetTexParameter         1* x 2+ x Z2    REPEAT                  texture
8795bd8deadSopenharmony_ci   +TEXTURE_WRAP_Q_SGIS                 GetTexParameter         1* x 2+ x Z2    REPEAT                  texture
8805bd8deadSopenharmony_ci    TEXTURE_PRIORITY                    GetTexParameterfv       1* x 2+ x R[0,1]        1               texture
8815bd8deadSopenharmony_ci    TEXTURE_RESIDENT                    GetTexParameterfv       1* x 2+ x B     False                   texture
8825bd8deadSopenharmony_ci
8835bd8deadSopenharmony_ci   +TEXTURE_MIN_LOD_SGIS                GetTexParameterfv       1* x n x R      -1000                   texture
8845bd8deadSopenharmony_ci   +TEXTURE_MAX_LOD_SGIS                GetTexParameterfv       1* x n x R      1000                    texture
8855bd8deadSopenharmony_ci   +TEXTURE_BASE_LEVEL_SGIS             GetTexParameteriv       1* x n x R      0                       texture
8865bd8deadSopenharmony_ci   +TEXTURE_MAX_LEVEL_SGIS              GetTexParameteriv       1* x n x R      1000                    texture
8875bd8deadSopenharmony_ci
8885bd8deadSopenharmony_ci   +TEXTURE_LOD_BIAS_S_SGIX             GetTexParameterfv       1* x n x R      0                       texture
8895bd8deadSopenharmony_ci   +TEXTURE_LOD_BIAS_T_SGIX             GetTexParameterfv       1* x n x R      0                       texture
8905bd8deadSopenharmony_ci   +TEXTURE_LOD_BIAS_R_SGIX             GetTexParameterfv       1* x n x R      0                       texture
8915bd8deadSopenharmony_ci
8925bd8deadSopenharmony_ci   +TEXTURE_FILTER4_FUNC_SGIS           GetTexFilterFuncSGIS    1* x 2 x Size x R       see text        texture
8935bd8deadSopenharmony_ci
8945bd8deadSopenharmony_ci   +DETAIL_TEXTURE_2D_BINDING_SGIS      GetIntegerv             1* x Z+         0                       texture
8955bd8deadSopenharmony_ci   +DETAIL_TEXTURE_LEVEL_SGIS           GetTexParameteriv       1* x n x Z-     -4                      texture
8965bd8deadSopenharmony_ci   +DETAIL_TEXTURE_MODE_SGIS            GetTexParameteriv       1* x n x Z2     ADD                     texture
8975bd8deadSopenharmony_ci   +DETAIL_TEXTURE_FUNC_POINTS_SGIS     GetTexParameteriv       1* x n x Z+     2                       texture
8985bd8deadSopenharmony_ci   +<DETAIL_TEXTURE_FUNC>               GetDetailTexFuncSGIS    1* x n x m x R  {0, 0}, {-4, 1}         texture
8995bd8deadSopenharmony_ci
9005bd8deadSopenharmony_ci   +SHARPEN_TEXTURE_FUNC_POINTS_SGIS    GetTexParameteriv       1* x n x Z+     2                       texture
9015bd8deadSopenharmony_ci   +<SHARPEN_TEXTURE_FUNC>              GetSharpenTexFuncSGIS   1* x n x m x R  {0, 0}, {-4, 1}         texture
9025bd8deadSopenharmony_ci
9035bd8deadSopenharmony_ci   +TEXTURE_COMPARE_SGIX                GetTexParameter[if]v    1* x B          False                   texture
9045bd8deadSopenharmony_ci   +TEXTURE_COMPARE_OPERATOR_SGIX       GetTexParameter[if]v    1* x Z_2        TEXTURE_LEQUAL_R_SGIX   texture
9055bd8deadSopenharmony_ci
9065bd8deadSopenharmony_ci   +SHADOW_AMBIENT_SGIX                 GetTexParameter[if]v    1* x R[0,1]     0.0                     texture
9075bd8deadSopenharmony_ci
9085bd8deadSopenharmony_ci   +TEXTURE_CLIPMAP_FRAME_SGIX          GetTexParameterf        1* x Z+         0                       texture
9095bd8deadSopenharmony_ci   +TEXTURE_CLIPMAP_CENTER_SGIX         GetTexParameterfv       1* x 2 x Z+     0,0                     texture
9105bd8deadSopenharmony_ci   +TEXTURE_CLIPMAP_OFFSET_SGIX         GetTexParameterfv       1* x 2 x Z+     0,0                     texture
9115bd8deadSopenharmony_ci   +TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX  GetTexParameterfv       1* x 3 x Z+     0,0,0                   texture
9125bd8deadSopenharmony_ci
9135bd8deadSopenharmony_ci   +DUAL_TEXTURE_SELECT_SGIS            GetTexParameter         1* x n x 3 x Z2 0                       texture
9145bd8deadSopenharmony_ci   +QUAD_TEXTURE_SELECT_SGIS            GetTexParameter         1* x n x 3 x Z4 0                       texture
9155bd8deadSopenharmony_ci
9165bd8deadSopenharmony_ci   +POST_TEXTURE_FILTER_BIAS_SGIX       GetTexParameterfv       1* x n x 4 x R  (0,0,0,0)               texture
9175bd8deadSopenharmony_ci   +POST_TEXTURE_FILTER_SCALE_SGIX      GetTexParameterfv       1* x n x 4 x R  (1,1,1,1)               texture
9185bd8deadSopenharmony_ci
9195bd8deadSopenharmony_ci    TEXTURE_COLOR_TABLE_SGI             IsEnabled                       B               False           texture/enable
9205bd8deadSopenharmony_ci   +COLOR_TABLE                         GetColorTableSGI                4 x I           empty           -
9215bd8deadSopenharmony_ci   +COLOR_TABLE_FORMAT_SGI              GetColorTableParameterivSGI     2 x 4 x Z38     RGBA            -
9225bd8deadSopenharmony_ci   +COLOR_TABLE_WIDTH_SGI               GetColorTableParameterivSGI     2 x 4 x Z+      0               -
9235bd8deadSopenharmony_ci   +COLOR_TABLE_RED_SIZE_SGI            GetColorTableParameterivSGI     2 x 4 x Z+      0               -
9245bd8deadSopenharmony_ci   +COLOR_TABLE_GREEN_SIZE_SGI          GetColorTableParameterivSGI     2 x 4 x Z+      0               -
9255bd8deadSopenharmony_ci   +COLOR_TABLE_BLUE_SIZE_SGI           GetColorTableParameterivSGI     2 x 4 x Z+      0               -
9265bd8deadSopenharmony_ci   +COLOR_TABLE_ALPHA_SIZE_SGI          GetColorTableParameterivSGI     2 x 4 x Z+      0               -
9275bd8deadSopenharmony_ci   +COLOR_TABLE_LUMINANCE_SIZE_SGI      GetColorTableParameterivSGI     2 x 4 x Z+      0               -
9285bd8deadSopenharmony_ci   +COLOR_TABLE_INTENSITY_SIZE_SGI      GetColorTableParameterivSGI     2 x 4 x Z+      0               -
9295bd8deadSopenharmony_ci   +COLOR_TABLE_SCALE_SGI               GetColorTableParameterfvSGI     4 x R4          (1,1,1,1)       pixel
9305bd8deadSopenharmony_ci   +COLOR_TABLE_BIAS_SGI                GetColorTableParameterfvSGI     4 x R4          (0,0,0,0)       pixel
9315bd8deadSopenharmony_ci
9325bd8deadSopenharmony_ci    TEXTURE_ENV_MODE                    GetTexEnviv             1* x Z4         MODULATE                texture
9335bd8deadSopenharmony_ci    TEXTURE_ENV_COLOR                   GetTexEnviv             1* x C          (0,0,0,0)               texture
9345bd8deadSopenharmony_ci    TEXTURE_ENV_COORD_SET_SGIS          GetTexEnviv             1* x Z4         see sec 3.8             texture
9355bd8deadSopenharmony_ci  x TEXTURE_GEN_x                       IsEnabled               1* x 4 x B      False                   texture/enable
9365bd8deadSopenharmony_ci  x EYE_PLANE                           GetTexGenfv             1* x 4 x R4     see sec 2.10.4          texture
9375bd8deadSopenharmony_ci  x OBJECT_PLANE                        GetTexGenfv             1* x 4 x R4     see sec 2.10.4          texture
9385bd8deadSopenharmony_ci  x TEXTURE_GEN_MODE                    GetTexGeniv             1* x 4 x Z3     EYE_LINEAR              texture
9395bd8deadSopenharmony_ci
9405bd8deadSopenharmony_ci   +TEXTURE_ENV_BIAS_SGIX               GetFloatv               1* x C          (0,0,0,0)               texture
9415bd8deadSopenharmony_ci
9425bd8deadSopenharmony_ci  x+EYE_POINT_SGIS                      GetTexGeniv             1* x 4 x R      (0,0,0,1)               texture
9435bd8deadSopenharmony_ci  x+OBJECT_POINT_SGIS                   GetTexGeniv             1* x 4 x R      (0,0,0,1)               texture
9445bd8deadSopenharmony_ci  x+EYE_LINE_SGIS                       GetTexGeniv             1* x 7 x R      (0,0,0,1,0,0,1)         texture
9455bd8deadSopenharmony_ci  x+OBJECT_LINE_SGIS                    GetTexGeniv             1* x 7 x R      (0,0,0,1,0,0,1)         texture
9465bd8deadSopenharmony_ci
9475bd8deadSopenharmony_ci  x ORDER                               GetMapiv                (k+9) x Z8*     1                       -
9485bd8deadSopenharmony_ci  x ORDER                               GetMapiv                (k+9) x 2 x Z8* 1,1                     -
9495bd8deadSopenharmony_ci  x COEFF                               GetMapfv                (k+9) x 8* x Rn see sec 5.1             -
9505bd8deadSopenharmony_ci  x COEFF                               GetMapfv                (k+9) x 8* x 8* x Rn    see sec 5.1             -
9515bd8deadSopenharmony_ci  x DOMAIN                              GetMapfv                (k+9) x 2 x R   see sec 5.1             -
9525bd8deadSopenharmony_ci  x DOMAIN                              GetMapfv                (k+9) x 4 x R   see sec 5.1             -
9535bd8deadSopenharmony_ci  x MAP1_x                              IsEnabled               (k+9) x B       False                   -
9545bd8deadSopenharmony_ci  x MAP2_x                              IsEnabled               (k+9) x B       False                   -
9555bd8deadSopenharmony_ci
9565bd8deadSopenharmony_ci+ = state defined in another extension.
9575bd8deadSopenharmony_cix = state qualified by SELECTED_TEXTURE_TRANSFORM_SGIS
9585bd8deadSopenharmony_cic = state qualified by SELECTED_TEXTURE_COORD_SET_SGIS
9595bd8deadSopenharmony_ci
9605bd8deadSopenharmony_ciNew Implementation Dependent State
9615bd8deadSopenharmony_ci
9625bd8deadSopenharmony_ci    Get Value                           Get Command             Type            Minimum Value
9635bd8deadSopenharmony_ci    ---------                           -----------             ----            -------------
9645bd8deadSopenharmony_ci    MAX_TEXTURES_SGIS                   GetIntegerv             Z+              1
9655bd8deadSopenharmony_ci    MAX_TEXTURE_COORD_SETS_SGIS         GetIntegerv             Z+              1
966