Name

    APPLE_texture_range

Name Strings

    GL_APPLE_texture_range

Contact

    Bob Beretta, Apple Inc. (beretta 'at' apple.com)

Version

    $Date: 2002/02/18 18:16:55 $ $Revision: 1.3 $

Number

    367

Dependencies

    None

Overview

    This extension provides a method to specify the range of client address
    space that may be used by a texture.  In general, the storage size of a
    texture may be easily determined by the texture's data type and geometry.
    However, driver optimizations may be realized if an extended address
    range is specified to encompass the storage of multiple textures, or to
    encompass potential future changes in the size of a texture.  A typical
    usage of this extension is to specify an identical address range for
    several textures in a particular working set that encompasses the storage
    of all the textures in the set.  This allows the driver to make a single
    memory mapping for all of the textures.

    Further, a mechanism is provided to allow the application to give the GL
    driver a hint regarding the storage requirements of the texture data.

New Procedures and Functions

    void TextureRangeAPPLE(enum target, sizei length, void *pointer)

    void GetTexParameterPointervAPPLE(enum target, enum pname, void **params)

New Tokens

    Accepted by the <pname> parameters of TexParameteri, TexParameterf,
    TexParameteriv, TexParameterfv, GetTexParameteriv, and
    GetTexParameterfv:

    TEXTURE_STORAGE_HINT_APPLE          0x85BC

    Accepted by the <param> parameters of TexParameteri, TexParameterf,
    TexParameteriv, and TexParameterfv:

    STORAGE_PRIVATE_APPLE               0x85BD
    STORAGE_CACHED_APPLE                0x85BE
    STORAGE_SHARED_APPLE                0x85BF

    Accepted by the <pname> parameters of GetTexParameteriv and
    GetTexParameterfv:

    TEXTURE_RANGE_LENGTH_APPLE          0x85B7

    Accepted by the <pname> parameters of GetTexParameterPointerv:

    TEXTURE_RANGE_POINTER_APPLE         0x85B8

Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)

    None

Additions to Chapter 3 of the 1.0 Specification (Rasterization)

    XXX - lots

Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
and the Frame Buffer)

    None

Additions to Chapter 5 of the 1.0 Specification (Special Functions)

    None

Additions to Chapter 6 of the 1.0 Specification (State and State Requests)

    None

Additions to the GLX Specification

    "OpenGL implementations using GLX indirect rendering should silently
    ignore the texture range.

Errors

    TextureRangeAPPLE(enum target, sizei length, void *pointer);

    GetTexParameterPointerv(enum target, enum pname, void **params);

    INVALID_ENUM is generated if TextureRangeAPPLE or GetTexParameterPointerv
    is called with <target> that is not a valid texture target.

    INVALID_ENUM is generated if GetTexParameterPointerv parameter
    <pname> is not equal to TEXTURE_RANGE_POINTER_APPLE.

    INVALID_VALUE is generated if TextureRangeAPPLE parameter <length> is
    negative.

New State

   Get Value                       Get Command             Type    Value    Attrib
   ---------                       -----------             ----    -------  ------------
   TEXTURE_RANGE_POINTER_APPLE     GetTexParameterPointerv Y       0        texture 
   TEXTURE_RANGE_LENGTH_APPLE      GetTexParameteriv       Z+      0        texture

New Implementation Dependent State

    None

