15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_texture_object
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_EXT_texture_object
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciVersion
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    $Date: 1995/10/03 05:39:56 $ $Revision: 1.27 $
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciNumber
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    20
165bd8deadSopenharmony_ci
175bd8deadSopenharmony_ciDependencies
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ci    EXT_texture3D affects the definition of this extension
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ciOverview
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ci    This extension introduces named texture objects.  The only way to name
245bd8deadSopenharmony_ci    a texture in GL 1.0 is by defining it as a single display list.  Because
255bd8deadSopenharmony_ci    display lists cannot be edited, these objects are static.  Yet it is
265bd8deadSopenharmony_ci    important to be able to change the images and parameters of a texture.
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ciIssues
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ci    *   Should the dimensions of a texture object be static once they are
315bd8deadSopenharmony_ci        changed from zero?  This might simplify the management of texture
325bd8deadSopenharmony_ci        memory.  What about other properties of a texture object?
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ci        No.
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ciReasoning
375bd8deadSopenharmony_ci
385bd8deadSopenharmony_ci    *   Previous proposals overloaded the <target> parameter of many Tex
395bd8deadSopenharmony_ci        commands with texture object names, as well as the original
405bd8deadSopenharmony_ci        enumerated values.  This proposal eliminated such overloading,
415bd8deadSopenharmony_ci        choosing instead to require an application to bind a texture object,
425bd8deadSopenharmony_ci        and then operate on it through the binding reference.  If this
435bd8deadSopenharmony_ci        constraint ultimately proves to be unacceptable, we can always
445bd8deadSopenharmony_ci        extend the extension with additional binding points for editing and
455bd8deadSopenharmony_ci        querying only, but if we expect to do this, we might choose to bite
465bd8deadSopenharmony_ci        the bullet and overload the <target> parameters now.
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ci    *   Commands to directly set the priority of a texture object and to
495bd8deadSopenharmony_ci        query the resident status of a texture object are included.  I feel
505bd8deadSopenharmony_ci        that binding a texture object would be an unacceptable burden for
515bd8deadSopenharmony_ci        these management operations.  These commands also allow queries and
525bd8deadSopenharmony_ci        operations on lists of texture objects, which should improve
535bd8deadSopenharmony_ci        efficiency.
545bd8deadSopenharmony_ci
555bd8deadSopenharmony_ci    *   GenTexturesEXT does not return a success/failure boolean because
565bd8deadSopenharmony_ci        it should never fail in practice.
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ciNew Procedures and Functions
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ci    void GenTexturesEXT(sizei n,
615bd8deadSopenharmony_ci                        uint* textures);
625bd8deadSopenharmony_ci
635bd8deadSopenharmony_ci    void DeleteTexturesEXT(sizei n,
645bd8deadSopenharmony_ci                           const uint* textures);
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci    void BindTextureEXT(enum target,
675bd8deadSopenharmony_ci                        uint texture);
685bd8deadSopenharmony_ci
695bd8deadSopenharmony_ci    void PrioritizeTexturesEXT(sizei n,
705bd8deadSopenharmony_ci                               const uint* textures,
715bd8deadSopenharmony_ci                               const clampf* priorities);
725bd8deadSopenharmony_ci
735bd8deadSopenharmony_ci    boolean AreTexturesResidentEXT(sizei n,
745bd8deadSopenharmony_ci                                   const uint* textures,
755bd8deadSopenharmony_ci                                   boolean* residences);
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ci    boolean IsTextureEXT(uint texture);
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ciNew Tokens
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci    Accepted by the <pname> parameters of TexParameteri, TexParameterf,
825bd8deadSopenharmony_ci    TexParameteriv, TexParameterfv, GetTexParameteriv, and GetTexParameterfv:
835bd8deadSopenharmony_ci
845bd8deadSopenharmony_ci        TEXTURE_PRIORITY_EXT            0x8066
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ci    Accepted by the <pname> parameters of GetTexParameteriv and
875bd8deadSopenharmony_ci    GetTexParameterfv:
885bd8deadSopenharmony_ci
895bd8deadSopenharmony_ci        TEXTURE_RESIDENT_EXT            0x8067
905bd8deadSopenharmony_ci
915bd8deadSopenharmony_ci    Accepted by the <pname> parameters of GetBooleanv, GetIntegerv,
925bd8deadSopenharmony_ci    GetFloatv, and GetDoublev:
935bd8deadSopenharmony_ci
945bd8deadSopenharmony_ci        TEXTURE_1D_BINDING_EXT          0x8068
955bd8deadSopenharmony_ci        TEXTURE_2D_BINDING_EXT          0x8069
965bd8deadSopenharmony_ci        TEXTURE_3D_BINDING_EXT          0x806A
975bd8deadSopenharmony_ci
985bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ci    None
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization)
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci    Add the following discussion to section 3.8 (Texturing).  In addition
1055bd8deadSopenharmony_ci    to the default textures TEXTURE_1D, TEXTURE_2D, and TEXTURE_3D_EXT, it
1065bd8deadSopenharmony_ci    is possible to create named 1, 2, and 3-dimensional texture objects.
1075bd8deadSopenharmony_ci    The name space for texture objects is the unsigned integers, with zero
1085bd8deadSopenharmony_ci    reserved by the GL.
1095bd8deadSopenharmony_ci    
1105bd8deadSopenharmony_ci    A texture object is created by binding an unused name to TEXTURE_1D,
1115bd8deadSopenharmony_ci    TEXTURE_2D, or TEXTURE_3D_EXT.  This binding is accomplished by calling
1125bd8deadSopenharmony_ci    BindTextureEXT with <target> set to TEXTURE_1D, TEXTURE_2D, or
1135bd8deadSopenharmony_ci    TEXTURE_3D_EXT, and <texture> set to the name of the new texture object.
1145bd8deadSopenharmony_ci    When a texture object is bound to a target, the previous binding for
1155bd8deadSopenharmony_ci    that target is automatically broken.
1165bd8deadSopenharmony_ci    
1175bd8deadSopenharmony_ci    When a texture object is first bound it takes the dimensionality of its
1185bd8deadSopenharmony_ci    target.  Thus, a texture object first bound to TEXTURE_1D is
1195bd8deadSopenharmony_ci    1-dimensional; a texture object first bound to TEXTURE_2D is
1205bd8deadSopenharmony_ci    2-dimensional, and a texture object first bound to TEXTURE_3D_EXT is
1215bd8deadSopenharmony_ci    3-dimensional.  The state of a 1-dimensional texture object
1225bd8deadSopenharmony_ci    immediately after it is first bound is equivalent to the state of the
1235bd8deadSopenharmony_ci    default TEXTURE_1D at GL initialization.  Likewise, the state of a
1245bd8deadSopenharmony_ci    2-dimensional or 3-dimensional texture object immediately after it is
1255bd8deadSopenharmony_ci    first bound is equivalent to the state of the default TEXTURE_2D or
1265bd8deadSopenharmony_ci    TEXTURE_3D_EXT at GL initialization.  Subsequent bindings of a texture
1275bd8deadSopenharmony_ci    object have no effect on its state.  The error INVALID_OPERATION is
1285bd8deadSopenharmony_ci    generated if an attempt is made to bind a texture object to a target of
1295bd8deadSopenharmony_ci    different dimensionality.
1305bd8deadSopenharmony_ci
1315bd8deadSopenharmony_ci    While a texture object is bound, GL operations on the target to which it
1325bd8deadSopenharmony_ci    is bound affect the bound texture object, and queries of the target to
1335bd8deadSopenharmony_ci    which it is bound return state from the bound texture object.  If
1345bd8deadSopenharmony_ci    texture mapping of the dimensionality of the target to which a texture
1355bd8deadSopenharmony_ci    object is bound is active, the bound texture object is used.
1365bd8deadSopenharmony_ci    
1375bd8deadSopenharmony_ci    By default when an OpenGL context is created, TEXTURE_1D, TEXTURE_2D,
1385bd8deadSopenharmony_ci    and TEXTURE_3D_EXT have 1, 2, and 3-dimensional textures associated
1395bd8deadSopenharmony_ci    with them.  In order that access to these default textures not be
1405bd8deadSopenharmony_ci    lost, this extension treats them as though their names were all zero.
1415bd8deadSopenharmony_ci    Thus the default 1-dimensional texture is operated on, queried, and
1425bd8deadSopenharmony_ci    applied as TEXTURE_1D while zero is bound to TEXTURE_1D.  Likewise,
1435bd8deadSopenharmony_ci    the default 2-dimensional texture is operated on, queried, and applied
1445bd8deadSopenharmony_ci    as TEXTURE_2D while zero is bound to TEXTURE_2D, and the default
1455bd8deadSopenharmony_ci    3-dimensional texture is operated on, queried, and applied as
1465bd8deadSopenharmony_ci    TEXTURE_3D_EXT while zero is bound to TEXTURE_3D_EXT.
1475bd8deadSopenharmony_ci
1485bd8deadSopenharmony_ci    Texture objects are deleted by calling DeleteTexturesEXT with <textures>
1495bd8deadSopenharmony_ci    pointing to a list of <n> names of texture object to be deleted.  After
1505bd8deadSopenharmony_ci    a texture object is deleted, it has no contents or dimensionality, and
1515bd8deadSopenharmony_ci    its name is freed.  If a texture object that is currently bound is
1525bd8deadSopenharmony_ci    deleted, the binding reverts to zero.  DeleteTexturesEXT ignores names
1535bd8deadSopenharmony_ci    that do not correspond to textures objects, including zero.
1545bd8deadSopenharmony_ci
1555bd8deadSopenharmony_ci    GenTexturesEXT returns <n> texture object names in <textures>.  These
1565bd8deadSopenharmony_ci    names are chosen in an unspecified manner, the only condition being that
1575bd8deadSopenharmony_ci    only names that were not in use immediately prior to the call to
1585bd8deadSopenharmony_ci    GenTexturesEXT are considered.  Names returned by GenTexturesEXT are
1595bd8deadSopenharmony_ci    marked as used (so that they are not returned by subsequent calls to
1605bd8deadSopenharmony_ci    GenTexturesEXT), but they are associated with a texture object only
1615bd8deadSopenharmony_ci    after they are first bound (just as if the name were unused).
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    An implementation may choose to establish a working set of texture
1645bd8deadSopenharmony_ci    objects on which binding operations are performed with higher
1655bd8deadSopenharmony_ci    performance.  A texture object that is currently being treated as a
1665bd8deadSopenharmony_ci    part of the working set is said to be resident.  AreTexturesResidentEXT
1675bd8deadSopenharmony_ci    returns TRUE if all of the <n> texture objects named in <textures> are
1685bd8deadSopenharmony_ci    resident, FALSE otherwise.  If FALSE is returned, the residence of each
1695bd8deadSopenharmony_ci    texture object is returned in <residences>.  Otherwise the contents of
1705bd8deadSopenharmony_ci    the <residences> array are not changed.  If any of the names in
1715bd8deadSopenharmony_ci    <textures> is not the name of a texture object, FALSE is returned, the
1725bd8deadSopenharmony_ci    error INVALID_VALUE is generated, and the contents of <residences> are
1735bd8deadSopenharmony_ci    indeterminate.  The resident status of a single bound texture object
1745bd8deadSopenharmony_ci    can also be queried by calling GetTexParameteriv or GetTexParameterfv
1755bd8deadSopenharmony_ci    with <target> set to the target to which the texture object is bound,
1765bd8deadSopenharmony_ci    and <pname> set to TEXTURE_RESIDENT_EXT.  This is the only way that the
1775bd8deadSopenharmony_ci    resident status of a default texture can be queried.
1785bd8deadSopenharmony_ci
1795bd8deadSopenharmony_ci    Applications guide the OpenGL implementation in determining which
1805bd8deadSopenharmony_ci    texture objects should be resident by specifying a priority for each
1815bd8deadSopenharmony_ci    texture object.  PrioritizeTexturesEXT sets the priorities of the <n>
1825bd8deadSopenharmony_ci    texture objects in <textures> to the values in <priorities>.  Each
1835bd8deadSopenharmony_ci    priority value is clamped to the range [0.0, 1.0] before it is
1845bd8deadSopenharmony_ci    assigned.  Zero indicates the lowest priority, and hence the least
1855bd8deadSopenharmony_ci    likelihood of being resident.  One indicates the highest priority, and
1865bd8deadSopenharmony_ci    hence the greatest likelihood of being resident.  The priority of a
1875bd8deadSopenharmony_ci    single bound texture object can also be changed by calling
1885bd8deadSopenharmony_ci    TexParameteri, TexParameterf, TexParameteriv, or TexParameterfv with
1895bd8deadSopenharmony_ci    <target> set to the target to which the texture object is bound, <pname>
1905bd8deadSopenharmony_ci    set to TEXTURE_PRIORITY_EXT, and <param> or <params> specifying the new
1915bd8deadSopenharmony_ci    priority value (which is clamped to [0.0,1.0] before being assigned).
1925bd8deadSopenharmony_ci    This is the only way that the priority of a default texture can be
1935bd8deadSopenharmony_ci    specified.  (PrioritizeTexturesEXT silently ignores attempts to
1945bd8deadSopenharmony_ci    prioritize nontextures, and texture zero.)
1955bd8deadSopenharmony_ci
1965bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
1975bd8deadSopenharmony_ciand the Frame Buffer)
1985bd8deadSopenharmony_ci
1995bd8deadSopenharmony_ci    None
2005bd8deadSopenharmony_ci
2015bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions)
2025bd8deadSopenharmony_ci
2035bd8deadSopenharmony_ci    BindTextureEXT and PrioritizeTexturesEXT are included in display lists.
2045bd8deadSopenharmony_ci    All other commands defined by this extension are not included in display
2055bd8deadSopenharmony_ci    lists.
2065bd8deadSopenharmony_ci
2075bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests)
2085bd8deadSopenharmony_ci
2095bd8deadSopenharmony_ci    IsTextureEXT returns TRUE if <texture> is the name of a valid texture
2105bd8deadSopenharmony_ci    object.  If <texture> is zero, or is a non-zero value that is not the
2115bd8deadSopenharmony_ci    name of a texture object, or if an error condition occurs, IsTextureEXT
2125bd8deadSopenharmony_ci    returns FALSE.
2135bd8deadSopenharmony_ci
2145bd8deadSopenharmony_ci    Because the query values of TEXTURE_1D, TEXTURE_2D, and TEXTURE_3D_EXT
2155bd8deadSopenharmony_ci    are already defined as booleans indicating whether these textures are
2165bd8deadSopenharmony_ci    enabled or disabled, another mechanism is required to query the
2175bd8deadSopenharmony_ci    binding associated with each of these texture targets.  The name
2185bd8deadSopenharmony_ci    of the texture object currently bound to TEXTURE_1D is returned in
2195bd8deadSopenharmony_ci    <params> when GetIntegerv is called with <pname> set to
2205bd8deadSopenharmony_ci    TEXTURE_1D_BINDING_EXT.  If no texture object is currently bound to
2215bd8deadSopenharmony_ci    TEXTURE_1D, zero is returned.  Likewise, the name of the texture object
2225bd8deadSopenharmony_ci    bound to TEXTURE_2D or TEXTURE_3D_EXT is returned in <params> when
2235bd8deadSopenharmony_ci    GetIntegerv is called with <pname> set to TEXTURE_2D_BINDING_EXT or
2245bd8deadSopenharmony_ci    TEXTURE_3D_BINDING_EXT.  If no texture object is currently bound to
2255bd8deadSopenharmony_ci    TEXTURE_2D or to TEXTURE_3D_EXT, zero is returned.
2265bd8deadSopenharmony_ci
2275bd8deadSopenharmony_ci    A texture object comprises the image arrays, priority, border color,
2285bd8deadSopenharmony_ci    filter modes, and wrap modes that are associated with that object.  More
2295bd8deadSopenharmony_ci    explicitly, the state list
2305bd8deadSopenharmony_ci    
2315bd8deadSopenharmony_ci        TEXTURE,
2325bd8deadSopenharmony_ci        TEXTURE_PRIORITY_EXT
2335bd8deadSopenharmony_ci        TEXTURE_RED_SIZE,
2345bd8deadSopenharmony_ci        TEXTURE_GREEN_SIZE,
2355bd8deadSopenharmony_ci        TEXTURE_BLUE_SIZE,
2365bd8deadSopenharmony_ci        TEXTURE_ALPHA_SIZE,
2375bd8deadSopenharmony_ci        TEXTURE_LUMINANCE_SIZE,
2385bd8deadSopenharmony_ci        TEXTURE_INTENSITY_SIZE,
2395bd8deadSopenharmony_ci        TEXTURE_WIDTH,
2405bd8deadSopenharmony_ci        TEXTURE_HEIGHT,
2415bd8deadSopenharmony_ci        TEXTURE_DEPTH_EXT,
2425bd8deadSopenharmony_ci        TEXTURE_BORDER,
2435bd8deadSopenharmony_ci        TEXTURE_COMPONENTS,
2445bd8deadSopenharmony_ci        TEXTURE_BORDER_COLOR,
2455bd8deadSopenharmony_ci        TEXTURE_MIN_FILTER,
2465bd8deadSopenharmony_ci        TEXTURE_MAG_FILTER,
2475bd8deadSopenharmony_ci        TEXTURE_WRAP_S,
2485bd8deadSopenharmony_ci        TEXTURE_WRAP_T,
2495bd8deadSopenharmony_ci        TEXTURE_WRAP_R_EXT
2505bd8deadSopenharmony_ci
2515bd8deadSopenharmony_ci    composes a single texture object.
2525bd8deadSopenharmony_ci
2535bd8deadSopenharmony_ci    When PushAttrib is called with TEXTURE_BIT enabled, the priorities,
2545bd8deadSopenharmony_ci    border colors, filter modes, and wrap modes of the currently bound
2555bd8deadSopenharmony_ci    texture objects are pushed, as well as the current texture bindings and
2565bd8deadSopenharmony_ci    enables.  When an attribute set that includes texture information is
2575bd8deadSopenharmony_ci    popped, the bindings and enables are first restored to their pushed
2585bd8deadSopenharmony_ci    values, then the bound texture objects have their priorities, border
2595bd8deadSopenharmony_ci    colors, filter modes, and wrap modes restored to their pushed values.
2605bd8deadSopenharmony_ci
2615bd8deadSopenharmony_ciAdditions to the GLX Specification
2625bd8deadSopenharmony_ci
2635bd8deadSopenharmony_ci    Texture objects are shared between GLX rendering contexts if and only
2645bd8deadSopenharmony_ci    if the rendering contexts share display lists.  No change is made to
2655bd8deadSopenharmony_ci    the GLX API.
2665bd8deadSopenharmony_ci
2675bd8deadSopenharmony_ciGLX Protocol
2685bd8deadSopenharmony_ci
2695bd8deadSopenharmony_ci    Six new GL commands are added.
2705bd8deadSopenharmony_ci  
2715bd8deadSopenharmony_ci    The following rendering command is sent to the server as part of a
2725bd8deadSopenharmony_ci    glXRender request:
2735bd8deadSopenharmony_ci
2745bd8deadSopenharmony_ci        BindTextureEXT
2755bd8deadSopenharmony_ci            2           12              rendering command length
2765bd8deadSopenharmony_ci            2           4117            rendering command opcode
2775bd8deadSopenharmony_ci            4           ENUM            target
2785bd8deadSopenharmony_ci            4           CARD32          texture 
2795bd8deadSopenharmony_ci
2805bd8deadSopenharmony_ci    The following rendering command can be sent to the server as part of a
2815bd8deadSopenharmony_ci    glXRender request or as part of a glXRenderLarge request:
2825bd8deadSopenharmony_ci
2835bd8deadSopenharmony_ci        PrioritizeTexturesEXT
2845bd8deadSopenharmony_ci            2           8+(n*8)         rendering command length
2855bd8deadSopenharmony_ci            2           4118            rendering command opcode
2865bd8deadSopenharmony_ci            4           INT32           n
2875bd8deadSopenharmony_ci            n*4         LISTofCARD32    textures
2885bd8deadSopenharmony_ci            n*4         LISTofFLOAT32   priorities
2895bd8deadSopenharmony_ci
2905bd8deadSopenharmony_ci            If the command is encoded in a glXRenderLarge request, the
2915bd8deadSopenharmony_ci            command opcode and command length fields above are expanded to
2925bd8deadSopenharmony_ci            4 bytes each:
2935bd8deadSopenharmony_ci
2945bd8deadSopenharmony_ci            4           12+(n*8)        rendering command length
2955bd8deadSopenharmony_ci            4           4118            rendering command opcode
2965bd8deadSopenharmony_ci
2975bd8deadSopenharmony_ci    The remaining commands are non-rendering commands. These commands are
2985bd8deadSopenharmony_ci    sent separately (i.e., not as part of a glXRender or glXRenderLarge
2995bd8deadSopenharmony_ci    request), using either the glXVendorPrivate request or the
3005bd8deadSopenharmony_ci    glXVendorPrivateWithReply request: 
3015bd8deadSopenharmony_ci
3025bd8deadSopenharmony_ci        DeleteTexturesEXT
3035bd8deadSopenharmony_ci            1           CARD8           opcode (X assigned)
3045bd8deadSopenharmony_ci            1           16              GLX opcode (glXVendorPrivate)
3055bd8deadSopenharmony_ci            2           4+n             request length
3065bd8deadSopenharmony_ci            4           12              vendor specific opcode
3075bd8deadSopenharmony_ci            4           GLX_CONTEXT_TAG context tag
3085bd8deadSopenharmony_ci            4           INT32           n
3095bd8deadSopenharmony_ci            n*4         CARD32          textures
3105bd8deadSopenharmony_ci
3115bd8deadSopenharmony_ci        GenTexturesEXT
3125bd8deadSopenharmony_ci            1           CARD8           opcode (X assigned)
3135bd8deadSopenharmony_ci            1           17              GLX opcode (glXVendorPrivateWithReply)
3145bd8deadSopenharmony_ci            2           4               request length
3155bd8deadSopenharmony_ci            4           13              vendor specific opcode
3165bd8deadSopenharmony_ci            4           GLX_CONTEXT_TAG context tag
3175bd8deadSopenharmony_ci            4           INT32           n
3185bd8deadSopenharmony_ci          =>
3195bd8deadSopenharmony_ci            1           1               reply
3205bd8deadSopenharmony_ci            1                           unused
3215bd8deadSopenharmony_ci            2           CARD16          sequence number
3225bd8deadSopenharmony_ci            4           n               reply length
3235bd8deadSopenharmony_ci            24                          unused
3245bd8deadSopenharmony_ci            4*n         LISTofCARD32    textures
3255bd8deadSopenharmony_ci
3265bd8deadSopenharmony_ci        AreTexturesResidentEXT
3275bd8deadSopenharmony_ci            1           CARD8           opcode (X assigned)
3285bd8deadSopenharmony_ci            1           17              GLX opcode (glXVendorPrivateWithReply)
3295bd8deadSopenharmony_ci            2           4+n             request length
3305bd8deadSopenharmony_ci            4           11              vendor specific opcode
3315bd8deadSopenharmony_ci            4           GLX_CONTEXT_TAG context tag
3325bd8deadSopenharmony_ci            4           INT32           n
3335bd8deadSopenharmony_ci            4*n         LISTofCARD32    textures
3345bd8deadSopenharmony_ci          =>
3355bd8deadSopenharmony_ci            1           1               reply
3365bd8deadSopenharmony_ci            1                           unused
3375bd8deadSopenharmony_ci            2           CARD16          sequence number
3385bd8deadSopenharmony_ci            4           (n+p)/4         reply length
3395bd8deadSopenharmony_ci            4           BOOL32          return_value 
3405bd8deadSopenharmony_ci            20                          unused
3415bd8deadSopenharmony_ci            n           LISTofBOOL      residences
3425bd8deadSopenharmony_ci            p                           unused, p=pad(n)
3435bd8deadSopenharmony_ci
3445bd8deadSopenharmony_ci        IsTextureEXT
3455bd8deadSopenharmony_ci            1           CARD8           opcode (X assigned)
3465bd8deadSopenharmony_ci            1           17              GLX opcode (glXVendorPrivateWithReply)
3475bd8deadSopenharmony_ci            2           4               request length
3485bd8deadSopenharmony_ci            4           14              vendor specific opcode
3495bd8deadSopenharmony_ci            4           GLX_CONTEXT_TAG context tag
3505bd8deadSopenharmony_ci            4           CARD32          textures
3515bd8deadSopenharmony_ci          =>
3525bd8deadSopenharmony_ci            1           1               reply
3535bd8deadSopenharmony_ci            1                           unused
3545bd8deadSopenharmony_ci            2           CARD16          sequence number
3555bd8deadSopenharmony_ci            4           0               reply length
3565bd8deadSopenharmony_ci            4           BOOL32          return_value 
3575bd8deadSopenharmony_ci            20                          unused
3585bd8deadSopenharmony_ci
3595bd8deadSopenharmony_ciDependencies on EXT_texture3D
3605bd8deadSopenharmony_ci
3615bd8deadSopenharmony_ci    If EXT_texture3D is not supported, then all references to 3D textures
3625bd8deadSopenharmony_ci    in this specification are invalid.
3635bd8deadSopenharmony_ci
3645bd8deadSopenharmony_ciErrors
3655bd8deadSopenharmony_ci
3665bd8deadSopenharmony_ci    INVALID_VALUE is generated if GenTexturesEXT parameter <n> is negative.
3675bd8deadSopenharmony_ci
3685bd8deadSopenharmony_ci    INVALID_VALUE is generated if DeleteTexturesEXT parameter <n> is
3695bd8deadSopenharmony_ci    negative.
3705bd8deadSopenharmony_ci
3715bd8deadSopenharmony_ci    INVALID_ENUM is generated if BindTextureEXT parameter <target> is not
3725bd8deadSopenharmony_ci    TEXTURE_1D, TEXTURE_2D, or TEXTURE_3D_EXT.
3735bd8deadSopenharmony_ci
3745bd8deadSopenharmony_ci    INVALID_OPERATION is generated if BindTextureEXT parameter <target> is
3755bd8deadSopenharmony_ci    TEXTURE_1D, and parameter <texture> is the name of a 2-dimensional or
3765bd8deadSopenharmony_ci    3-dimensional texture object.
3775bd8deadSopenharmony_ci
3785bd8deadSopenharmony_ci    INVALID_OPERATION is generated if BindTextureEXT parameter <target> is
3795bd8deadSopenharmony_ci    TEXTURE_2D, and parameter <texture> is the name of a 1-dimensional or
3805bd8deadSopenharmony_ci    3-dimensional texture object.
3815bd8deadSopenharmony_ci
3825bd8deadSopenharmony_ci    INVALID_OPERATION is generated if BindTextureEXT parameter <target> is
3835bd8deadSopenharmony_ci    TEXTURE_3D_EXT, and parameter <texture> is the name of a 1-dimensional
3845bd8deadSopenharmony_ci    or 2-dimensional texture object.
3855bd8deadSopenharmony_ci
3865bd8deadSopenharmony_ci    INVALID_VALUE is generated if PrioritizeTexturesEXT parameter <n>
3875bd8deadSopenharmony_ci    negative. 
3885bd8deadSopenharmony_ci
3895bd8deadSopenharmony_ci    INVALID_VALUE is generated if AreTexturesResidentEXT parameter <n>
3905bd8deadSopenharmony_ci    is negative.
3915bd8deadSopenharmony_ci
3925bd8deadSopenharmony_ci    INVALID_VALUE is generated by AreTexturesResidentEXT if any of the
3935bd8deadSopenharmony_ci    names in <textures> is zero, or is not the name of a texture.
3945bd8deadSopenharmony_ci
3955bd8deadSopenharmony_ci    INVALID_OPERATION is generated if any of the commands defined in this
3965bd8deadSopenharmony_ci    extension is executed between the execution of Begin and the
3975bd8deadSopenharmony_ci    corresponding execution of End.
3985bd8deadSopenharmony_ci
3995bd8deadSopenharmony_ciNew State
4005bd8deadSopenharmony_ci
4015bd8deadSopenharmony_ci
4025bd8deadSopenharmony_ci    Get Value                           Get Command             Type                    Initial Value           Attribute
4035bd8deadSopenharmony_ci    ---------                           -----------             ----                    -------------           ---------
4045bd8deadSopenharmony_ci    TEXTURE_1D                          IsEnabled               B                       FALSE                   texture/enable
4055bd8deadSopenharmony_ci    TEXTURE_2D                          IsEnabled               B                       FALSE                   texture/enable
4065bd8deadSopenharmony_ci    TEXTURE_3D_EXT                      IsEnabled               B                       FALSE                   texture/enable
4075bd8deadSopenharmony_ci    TEXTURE_1D_BINDING_EXT              GetIntegerv             Z+                      0                       texture
4085bd8deadSopenharmony_ci    TEXTURE_2D_BINDING_EXT              GetIntegerv             Z+                      0                       texture
4095bd8deadSopenharmony_ci    TEXTURE_3D_BINDING_EXT              GetIntegerv             Z+                      0                       texture
4105bd8deadSopenharmony_ci    TEXTURE_PRIORITY_EXT                GetTexParameterfv       n x Z+                  1                       texture
4115bd8deadSopenharmony_ci    TEXTURE_RESIDENT_EXT                AreTexturesResidentEXT  n x B                   unknown                    -
4125bd8deadSopenharmony_ci
4135bd8deadSopenharmony_ci    TEXTURE                             GetTexImage             n x levels x I          null                       -
4145bd8deadSopenharmony_ci    TEXTURE_RED_SIZE_EXT                GetTexLevelParameteriv  n x levels x Z+         0                          -
4155bd8deadSopenharmony_ci    TEXTURE_GREEN_SIZE_EXT              GetTexLevelParameteriv  n x levels x Z+         0                          -
4165bd8deadSopenharmony_ci    TEXTURE_BLUE_SIZE_EXT               GetTexLevelParameteriv  n x levels x Z+         0                          -
4175bd8deadSopenharmony_ci    TEXTURE_ALPHA_SIZE_EXT              GetTexLevelParameteriv  n x levels x Z+         0                          -
4185bd8deadSopenharmony_ci    TEXTURE_LUMINANCE_SIZE_EXT          GetTexLevelParameteriv  n x levels x Z+         0                          -
4195bd8deadSopenharmony_ci    TEXTURE_INTENSITY_SIZE_EXT          GetTexLevelParameteriv  n x levels x Z+         0                          -
4205bd8deadSopenharmony_ci    TEXTURE_WIDTH                       GetTexLevelParameteriv  n x levels x Z+         0                          -
4215bd8deadSopenharmony_ci    TEXTURE_HEIGHT                      GetTexLevelParameteriv  n x levels x Z+         0                          -
4225bd8deadSopenharmony_ci    TEXTURE_DEPTH_EXT                   GetTexLevelParameteriv  n x levels x Z+         0                          -
4235bd8deadSopenharmony_ci    TEXTURE_4DSIZE_SGIS                 GetTexLevelParameteriv  n x levels x Z+         0                          -
4245bd8deadSopenharmony_ci    TEXTURE_BORDER                      GetTexLevelParameteriv  n x levels x Z+         0                          -
4255bd8deadSopenharmony_ci    TEXTURE_COMPONENTS (1D and 2D)      GetTexLevelParameteriv  n x levels x Z42        1                          -
4265bd8deadSopenharmony_ci    TEXTURE_COMPONENTS (3D and 4D)      GetTexLevelParameteriv  n x levels x Z38        LUMINANCE                  -
4275bd8deadSopenharmony_ci    TEXTURE_BORDER_COLOR                GetTexParameteriv       n x C                   0, 0, 0, 0              texture
4285bd8deadSopenharmony_ci    TEXTURE_MIN_FILTER                  GetTexParameteriv       n x Z7                  NEAREST_MIPMAP_LINEAR   texture
4295bd8deadSopenharmony_ci    TEXTURE_MAG_FILTER                  GetTexParameteriv       n x Z3                  LINEAR                  texture
4305bd8deadSopenharmony_ci    TEXTURE_WRAP_S                      GetTexParameteriv       n x Z2                  REPEAT                  texture
4315bd8deadSopenharmony_ci    TEXTURE_WRAP_T                      GetTexParameteriv       n x Z2                  REPEAT                  texture
4325bd8deadSopenharmony_ci    TEXTURE_WRAP_R_EXT                  GetTexParameteriv       n x Z2                  REPEAT                  texture
4335bd8deadSopenharmony_ci    TEXTURE_WRAP_Q_SGIS                 GetTexParameteriv       n x Z2                  REPEAT                  texture
4345bd8deadSopenharmony_ci
4355bd8deadSopenharmony_ciNew Implementation Dependent State
4365bd8deadSopenharmony_ci
4375bd8deadSopenharmony_ci    None
438