Loading [MathJax]/extensions/tex2jax.js
  • <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • NVIDIA DRIVE OS Linux SDK API Reference

    6.0.5 Release
    All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
    GL_EXT_texture_view
    Name
    
        EXT_texture_view
    
    Name Strings
    
        GL_EXT_texture_view
    
    Contact
    
        Jon Leech (oddhack 'at' sonic.net)
        Daniel Koch, NVIDIA (dkoch 'at' nvidia.com)
    
    Contributors
    
        Jeff Bolz, NVIDIA Corporation (jbolz 'at' nvidia.com)
        Pat Brown, NVIDIA
        Slawomir Grajewski, Intel
        Jon Leech
    
    Notice
    
        Copyright (c) 2012-2013 The Khronos Group Inc. Copyright terms at
            http://www.khronos.org/registry/speccopyright.html
    
        Portions Copyright (c) 2013-2014 NVIDIA Corporation.
    
    Status
    
        Complete.
    
    Version
    
        Last Modified Date: April 1, 2014
        Revision: 8
    
    Number
    
        OpenGL ES Extension #185
    
    Dependencies
    
        OpenGL ES 3.1 and OpenGL ES Shading Language 3.10 are required.
    
        This specification is written against the OpenGL ES 3.1 (March 17,
        2014) and OpenGL ES 3.10 Shading Language (March 17, 2014)
        Specifications.
    
        EXT_texture_buffer affects the definition of this extension.
    
        EXT_texture_cube_map_array affects the definition of this extension.
    
        EXT_texture_compression_s3tc interacts with this extension.
    
        EXT_texture_compression_rgtc interacts with this extension.
    
        EXT_texture_compression_bptc interacts with this extension.
    
        KHR_texture_compression_astc_ldr interacts with this extension.
    
        KHR_texture_compression_astc_hdr interacts with this extension.
    
        OES_texture_compression_astc interacts with this extension.
    
    Overview
    
        This extension allows a texture's data store to be "viewed" in multiple
        ways, either reinterpreting the data format/type as a different format/
        type with the same element size, or by clamping the mipmap level range
        or array slice range.
    
        The goals of this extension are to avoid having these alternate views
        become shared mutable containers of shared mutable objects, and to add
        the views to the API in a minimally invasive way.
    
        No new object types are added. Conceptually, a texture object is split
        into the following parts:
    
            - A data store holding texel data.
            - State describing which portions of the data store to use, and how
              to interpret the data elements.
            - An embedded sampler object.
            - Various other texture parameters.
    
        With this extension, multiple textures can share a data store and have
        different state describing which portions of the data store to use and
        how to interpret the data elements. The data store is refcounted and not
        destroyed until the last texture sharing it is deleted.
    
        This extension leverages the concept of an "immutable texture".
        Views can only be created of textures created with TexStorage*.
    
    
    New Procedures and Functions
    
        void TextureViewEXT(uint texture, enum target, uint origtexture,
                            enum internalformat,
                            uint minlevel, uint numlevels,
                            uint minlayer, uint numlayers);
    
    New Tokens
    
        Accepted by the <pname> parameters of GetTexParameterfv and
        GetTexParameteriv:
    
            TEXTURE_VIEW_MIN_LEVEL_EXT                      0x82DB
            TEXTURE_VIEW_NUM_LEVELS_EXT                     0x82DC
            TEXTURE_VIEW_MIN_LAYER_EXT                      0x82DD
            TEXTURE_VIEW_NUM_LAYERS_EXT                     0x82DE
            TEXTURE_IMMUTABLE_LEVELS                        0x82DF
    
        Used as compatibility class names in table 8.X.2:
    
            VIEW_CLASS_128_BITS
            VIEW_CLASS_96_BITS
            VIEW_CLASS_64_BITS
            VIEW_CLASS_48_BITS
            VIEW_CLASS_32_BITS
            VIEW_CLASS_24_BITS
            VIEW_CLASS_16_BITS
            VIEW_CLASS_8_BITS
            VIEW_CLASS_RGTC1_RED
            VIEW_CLASS_RGTC2_RG
            VIEW_CLASS_BPTC_UNORM
            VIEW_CLASS_BPTC_FLOAT
            VIEW_CLASS_S3TC_DXT1_RGB
            VIEW_CLASS_S3TC_DXT1_RGBA
            VIEW_CLASS_S3TC_DXT3_RGBA
            VIEW_CLASS_S3TC_DXT5_RGBA
            VIEW_CLASS_EAC_R11
            VIEW_CLASS_EAC_RG11
            VIEW_CLASS_ETC2_RGB
            VIEW_CLASS_ETC2_RGBA
            VIEW_CLASS_ETC2_EAC_RGBA
            VIEW_CLASS_ASTC_4x4_RGBA
            VIEW_CLASS_ASTC_5x4_RGBA
            VIEW_CLASS_ASTC_5x5_RGBA
            VIEW_CLASS_ASTC_6x5_RGBA
            VIEW_CLASS_ASTC_6x6_RGBA
            VIEW_CLASS_ASTC_8x5_RGBA
            VIEW_CLASS_ASTC_8x6_RGBA
            VIEW_CLASS_ASTC_8x8_RGBA
            VIEW_CLASS_ASTC_10x5_RGBA
            VIEW_CLASS_ASTC_10x6_RGBA
            VIEW_CLASS_ASTC_10x8_RGBA
            VIEW_CLASS_ASTC_10x10_RGBA
            VIEW_CLASS_ASTC_12x10_RGBA
            VIEW_CLASS_ASTC_12x12_RGBA
            VIEW_CLASS_ASTC_3x3x3_RGBA
            VIEW_CLASS_ASTC_4x3x3_RGBA
            VIEW_CLASS_ASTC_4x4x3_RGBA
            VIEW_CLASS_ASTC_4x4x4_RGBA
            VIEW_CLASS_ASTC_5x4x4_RGBA
            VIEW_CLASS_ASTC_5x5x4_RGBA
            VIEW_CLASS_ASTC_5x5x5_RGBA
            VIEW_CLASS_ASTC_6x5x5_RGBA
            VIEW_CLASS_ASTC_6x6x5_RGBA
            VIEW_CLASS_ASTC_6x6x6_RGBA
        (The VIEW_CLASS_* tokens used as compatibility class names in table
        8.X.2 are the same tokens returned by the VIEW_COMPATIBILITY_CLASS query
        in ARB_internalformat_query2. In this extension they are simply a
        labelling mechanism and serve no functional purpose in the API, so their
        numeric values are not specified.)
    
    Additions to the OpenGL ES 3.1 Specification
    
        Modify section 5.3, "Propagating Changes to Objects"
    
        Add to the paragraph starting "When <T> is a texture, the contents ..."
        on p. 44:
    
        When <T> is a texture, the contents of <T> are construed to include the
        contents of the data store of <T>, even if <T>'s data store was modified
        via a different view of the data store.
    
    
        Modify subsection 8.9, "Texture Parameters"
    
        Add the following to the end of the paragraph on p. 171 starting
        "In the remainder of chapter 8, denote by lod_min...":
    
        If the texture was created with TextureViewEXT, then the
        TEXTURE_BASE_LEVEL and TEXTURE_MAX_LEVEL parameters are interpreted
        relative to the view and not relative to the original data store.
    
    
        Modify section 8.10.2, "Texture Parameter Queries"
    
        Add to the list of legal <pname>s in the description of GetTexParameter
        on p. 172:
    
        ... <pname> must be IMAGE_FORMAT_COMPATIBILITY_TYPE,
        TEXTURE_IMMUTABLE_FORMAT, TEXTURE_IMMUTABLE_LEVELS,
        TEXTURE_VIEW_MIN_LEVEL_EXT, TEXTURE_VIEW_NUM_LEVELS_EXT,
        TEXTURE_VIEW_MIN_LAYER_EXT, TEXTURE_VIEW_NUM_LAYERS_EXT, or one of the
        symbolic values in table 8.20.
    
    
        Add a new subsection 8.16view following section 8.16, "Texture Completeness"
    
        8.16view Texture Views
    
        A texture can be created which references the data store of another
        texture and interprets the data with a different format, and/or selects
        a subset of the levels and/or layers of the other texture. The data
        store for such a texture is shared with the data store of the original
        texture. Updating the shared data store using the original texture
        affects texture values read using the new texture, and vice versa. A
        texture data store remains in existence until all textures that
        reference it are deleted.
    
        The command:
    
            void TextureViewEXT(uint texture, enum target, uint origtexture,
                             enum internalformat,
                             uint minlevel, uint numlevels,
                             uint minlayer, uint numlayers);
    
        initializes the texture named <texture> to the target specified by
        <target>. <texture>'s data store is inherited from the texture named
        <origtexture>, but elements of the data store are interpreted according
        to the internal format specified by <internalformat>. Additionally, if the
        original texture is an array or has multiple mipmap levels, the parameters
        <minlayer>, <numlayers>, <minlevel>, and <numlevels> control which of those
        slices and levels are considered part of the texture.
    
        The <minlevel> and <minlayer> parameters are relative to the view of the
        original texture. If <numlayers> or <numlevels> extend beyond the
        original texture, they are clamped to the max extent of the original
        texture.
    
        If the command is successful, the texture parameters in <texture> are
        updated as follows:
    
         - TEXTURE_IMMUTABLE_FORMAT is set to TRUE.
    
         - TEXTURE_IMMUTABLE_LEVELS is set to the value of
           TEXTURE_IMMUTABLE_LEVELS for <origtexture>.
    
         - TEXTURE_VIEW_MIN_LEVEL_EXT is set to <minlevel> plus the value of
           TEXTURE_VIEW_MIN_LEVEL_EXT for <origtexture>.
    
         - TEXTURE_VIEW_MIN_LAYER_EXT is set to <minlayer> plus the value of
           TEXTURE_VIEW_MIN_LAYER_EXT for <origtexture>.
    
         - TEXTURE_VIEW_NUM_LEVELS_EXT is set to the lesser of <numlevels> and
           the value of TEXTURE_VIEW_NUM_LEVELS_EXT for <origtexture> minus
           <minlevels>.
    
         - TEXTURE_VIEW_NUM_LAYERS_EXT is set to the lesser of <numlayers> and
           the value of TEXTURE_VIEW_NUM_LAYERS_EXT for <origtexture> minus
           <minlayer>.
    
        The new texture's target must be <compatible> with the target of
        <origtexture>, as defined by table 8.X.1.
    
        Numerous constraints on <numlayers> and the texture dimensions depend on
        <target> and the target of <origtexture>. These constraints are
        summarized below in the errors section.
    
            --------------------------------------------------------------------------------------------
            | Original target             |  Valid new targets                                         |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_2D                  |  TEXTURE_2D, TEXTURE_2D_ARRAY                              |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_3D                  |  TEXTURE_3D                                                |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_CUBE_MAP            |  TEXTURE_CUBE_MAP, TEXTURE_2D, TEXTURE_2D_ARRAY,           |
            |                             |  TEXTURE_CUBE_MAP_ARRAY_EXT                                |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_BUFFER_EXT          |  <none>                                                    |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_2D_ARRAY            |  TEXTURE_2D_ARRAY, TEXTURE_2D, TEXTURE_CUBE_MAP,           |
            |                             |  TEXTURE_CUBE_MAP_ARRAY_EXT                                |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_CUBE_MAP_ARRAY      |  TEXTURE_CUBE_MAP_ARRAY_EXT, TEXTURE_2D_ARRAY, TEXTURE_2D, |
            |                             |  TEXTURE_CUBE_MAP                                          |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_2D_MULTISAMPLE      |  TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY      |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_2D_MULTISAMPLE_ARRAY|  TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY      |
            --------------------------------------------------------------------------------------------
    
            Table 8.X.1: Legal texture targets for TextureViewEXT.
    
        When <origtexture>'s target is TEXTURE_CUBE_MAP, the layer parameters
        are interpreted in the same order as if it were a
        TEXTURE_CUBE_MAP_ARRAY_EXT with 6 layer-faces.
    
        The two textures' internal formats must be compatible according to Table
        8.X.2 (Compatible internal formats for TextureViewEXT) if the internal
        format exists in that table. The internal formats must be identical if
        not in that table.
    
        --------------------------------------------------------------------------
        | Class                      | Internal formats                          |
        --------------------------------------------------------------------------
        | VIEW_CLASS_128_BITS        | RGBA32F, RGBA32UI, RGBA32I                |
        --------------------------------------------------------------------------
        | VIEW_CLASS_96_BITS         | RGB32F, RGB32UI, RGB32I                   |
        --------------------------------------------------------------------------
        | VIEW_CLASS_64_BITS         | RGBA16F, RG32F, RGBA16UI, RG32UI,         |
        |                            | RGBA16I, RG32I                            |
        --------------------------------------------------------------------------
        | VIEW_CLASS_48_BITS         | RGB16F, RGB16UI, RGB16I                   |
        --------------------------------------------------------------------------
        | VIEW_CLASS_32_BITS         | RG16F, R11F_G11F_B10F, R32F,              |
        |                            | RGB10_A2UI, RGBA8UI, RG16UI, R32UI,       |
        |                            | RGBA8I, RG16I, R32I, RGB10_A2, RGBA8,     |
        |                            | RGBA8_SNORM, SRGB8_ALPHA8, RGB9_E5        |
        -------------------------------------------------------------------------
        | VIEW_CLASS_24_BITS         | RGB8, RGB8_SNORM, SRGB8, RGB8UI, RGB8I    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_16_BITS         | R16F, RG8UI, R16UI, RG8I, R16I, RG8,      |
        |                            | RG8_SNORM                                 |
        --------------------------------------------------------------------------
        | VIEW_CLASS_8_BITS          | R8UI, R8I, R8, R8_SNORM                   |
        --------------------------------------------------------------------------
        | VIEW_CLASS_RGTC1_RED       | COMPRESSED_RED_RGTC1_EXT,                 |
        |                            | COMPRESSED_SIGNED_RED_RGTC1_EXT           |
        --------------------------------------------------------------------------
        | VIEW_CLASS_RGTC2_RG        | COMPRESSED_RG_RGTC2_EXT,                  |
        |                            | COMPRESSED_SIGNED_RG_RGTC2_EXT            |
        --------------------------------------------------------------------------
        | VIEW_CLASS_BPTC_UNORM      | COMPRESSED_RGBA_BPTC_UNORM_EXT,           |
        |                            | COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT      |
        --------------------------------------------------------------------------
        | VIEW_CLASS_BPTC_FLOAT      | COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,     |
        |                            | COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_S3TC_DXT1_RGB   | COMPRESSED_RGB_S3TC_DXT1_EXT,             |
        |                            | COMPRESSED_SRGB_S3TC_DXT1_EXT             |
        --------------------------------------------------------------------------
        | VIEW_CLASS_S3TC_DXT1_RGBA  | COMPRESSED_RGBA_S3TC_DXT1_EXT,            |
        |                            | COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT       |
        --------------------------------------------------------------------------
        | VIEW_CLASS_S3TC_DXT3_RGBA  | COMPRESSED_RGBA_S3TC_DXT3_EXT,            |
        |                            | COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT       |
        --------------------------------------------------------------------------
        | VIEW_CLASS_S3TC_DXT5_RGBA  | COMPRESSED_RGBA_S3TC_DXT5_EXT,            |
        |                            | COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT       |
        --------------------------------------------------------------------------
        | VIEW_CLASS_EAC_R11         | COMPRESSED_R11_EAC,                       |
        |                            | COMPRESSED_SIGNED_R11_EAC                 |
        --------------------------------------------------------------------------
        | VIEW_CLASS_EAC_RG11        | COMPRESSED_RG11_EAC,                      |
        |                            | COMPRESSED_SIGNED_RG11_EAC                |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ETC2_RGB        | COMPRESSED_RGB8_ETC2,                     |
        |                            | COMPRESSED_SRGB8_ETC2                     |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ETC2_RGBA       | COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, |
        |                            | COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ETC2_EAC_RGBA   | COMPRESSED_RGBA8_ETC2_EAC,                |
        |                            | COMPRESSED_SRGB8_ALPHA8_ETC2_EAC          |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_4x4_RGBA   | COMPRESSED_RGBA_ASTC_4x4_KHR,             |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR      |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_5x4_RGBA   | COMPRESSED_RGBA_ASTC_5x4_KHR,             |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR      |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_5x5_RGBA   | COMPRESSED_RGBA_ASTC_5x5_KHR,             |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR      |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_6x5_RGBA   | COMPRESSED_RGBA_ASTC_6x5_KHR,             |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR      |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_6x6_RGBA   | COMPRESSED_RGBA_ASTC_6x6_KHR,             |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR      |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_8x5_RGBA   | COMPRESSED_RGBA_ASTC_8x5_KHR,             |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR      |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_8x6_RGBA   | COMPRESSED_RGBA_ASTC_8x6_KHR,             |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR      |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_8x8_RGBA   | COMPRESSED_RGBA_ASTC_8x8_KHR,             |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR      |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_10x5_RGBA  | COMPRESSED_RGBA_ASTC_10x5_KHR,            |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR     |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_10x6_RGBA  | COMPRESSED_RGBA_ASTC_10x6_KHR,            |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR     |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_10x8_RGBA  | COMPRESSED_RGBA_ASTC_10x8_KHR,            |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR     |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_10x10_RGBA | COMPRESSED_RGBA_ASTC_10x10_KHR,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_12x10_RGBA | COMPRESSED_RGBA_ASTC_12x10_KHR,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_12x12_RGBA | COMPRESSED_RGBA_ASTC_12x12_KHR,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_3x3x3_RGBA | COMPRESSED_RGBA_ASTC_3x3x3_OES,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_4x3x3_RGBA | COMPRESSED_RGBA_ASTC_4x3x3_OES,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_4x4x3_RGBA | COMPRESSED_RGBA_ASTC_4x4x3_OES,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_4x4x4_RGBA | COMPRESSED_RGBA_ASTC_4x4x4_OES,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_5x4x4_RGBA | COMPRESSED_RGBA_ASTC_5x4x4_OES,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_5x5x4_RGBA | COMPRESSED_RGBA_ASTC_5x5x4_OES,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_5x5x5_RGBA | COMPRESSED_RGBA_ASTC_5x5x5_OES,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_6x5x5_RGBA | COMPRESSED_RGBA_ASTC_6x5x5_OES,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_6x6x5_RGBA | COMPRESSED_RGBA_ASTC_6x6x5_OES,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES    |
        --------------------------------------------------------------------------
        | VIEW_CLASS_ASTC_6x6x6_RGBA | COMPRESSED_RGBA_ASTC_6x6x6_OES,           |
        |                            | COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES    |
        --------------------------------------------------------------------------
    
            Table 8.X.2: Compatible internal formats for TextureViewEXT. Formats
            in the same entry may be cast to each other.
    
        If the internal format does not exactly match the internal format of the
        original texture, the contents of the memory are reinterpreted in the
        same manner as for image bindings described in section 8.22.
    
        Texture commands that take a <level> or <layer> parameter, such as
        TexSubImage2D, interpret that parameter to be relative to the view of
        the texture. i.e. the mipmap level of the data store that would be
        updated via TexSubImage2D would be the sum of <level> and the value of
        TEXTURE_VIEW_MIN_LEVEL_EXT.
    
    
        Errors
    
        An INVALID_VALUE error is generated if <texture> is zero.
    
        An INVALID_OPERATION error is generated by TextureViewEXT if <texture>
        is not a valid name returned by GenTextures, or if <texture> has already
        been bound and given a target.
    
        An INVALID_VALUE error is generated if <origtexture> is not the name of
        a texture.
    
        An INVALID_OPERATION error is generated if the value of
        TEXTURE_IMMUTABLE_FORMAT for <origtexture> is not TRUE.
    
        An INVALID_OPERATION error is generated if <target> is not compatible
        with the target of <origtexture>, as defined by table 8.X.1.
    
        An INVALID_OPERATION error is generated if the internal format of
        <origtexture> exists in table 8.X.2 and is not compatible with
        <internalformat>, as described in that table.
    
        An INVALID_OPERATION error is generated if the internal format of
        <origtexture> does not exist in table 8.X.2, and is not identical to
        <internalformat>.
    
        An INVALID_VALUE error is generated if <minlevel> or <minlayer> are
        larger than the greatest level or layer, respectively, of <origtexture>.
    
        An INVALID_VALUE error is generated if <target> is TEXTURE_CUBE_MAP and
        the clamped <numlayers> is not 6.
    
        An INVALID_VALUE error is generated if <target> is
        TEXTURE_CUBE_MAP_ARRAY_EXT and the clamped <numlayers> is not a multiple
        of 6. In this case <numlayers> counts layer-faces rather than layers.
    
        An INVALID_VALUE error is generated if <target> is TEXTURE_2D,
        TEXTURE_3D, or TEXTURE_2D_MULTISAMPLE and <numlayers> does not equal 1.
    
        An INVALID_OPERATION error is generated if <target> is
        TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY_EXT, and the width and height
        of <origtexture>'s levels are not equal.
    
        An INVALID_OPERATION error is generated if any dimension of
        <origtexture> is larger than the maximum supported corresponding
        dimension of the new target. For example, if <origtexture> has a
        TEXTURE_2D_ARRAY target and <target> is TEXTURE_CUBE_MAP, its width must
        be no greater than the value of MAX_CUBE_MAP_TEXTURE_SIZE.
    
    
        Modify section 8.17, "Immutable-Format Texture Images"
    
        Modify the third bullet on p. 188, starting "If the command is
        successful, TEXTURE_IMMUTABLE_FORMAT...":
    
        If the command is successful, TEXTURE_IMMUTABLE_FORMAT becomes TRUE,
        TEXTURE_IMMUTABLE_LEVELS and TEXTURE_VIEW_NUM_LEVELS_EXT become
        <levels>. If the texture target is TEXTURE_2D_ARRAY,
        TEXTURE_CUBE_MAP_ARRAY, or TEXTURE_2D_MULTISAMPLE_ARRAY then
        TEXTURE_VIEW_NUM_LAYERS_EXT becomes <depth>. If the texture target is
        TEXTURE_CUBE_MAP, then TEXTURE_VIEW_NUM_LAYERS_EXT becomes 6. For any
        other texture target, TEXTURE_VIEW_NUM_LAYERS_EXT becomes 1.
    
    
        Modify section 8.18, "Texture State"
    
        Add to the fourth paragraph on the section on p. 191, starting "Next,
        there are the":
    
        "... swizzle modes (see section 14.2.1), and four integers describing
        the texture view base level, number of levels, minimum array layer, and
        number of layers."
    
        Add to the following paragraph starting "In the initial state":
    
        "... and ALPHA, respectively. The values of TEXTURE_VIEW_MIN_LEVEL_EXT,
        TEXTURE_VIEW_NUM_LEVELS_EXT, TEXTURE_VIEW_MIN_LAYER_EXT,
        TEXTURE_VIEW_NUM_LAYERS_EXT are each zero."
    
    
    Dependencies on EXT_texture_buffer
    
        If EXT_texture_buffer is not supported, remove
        TEXTURE_BUFFER_EXT from the list of targets in table 8.X.1.
    
    Dependencies on EXT_texture_cube_map_array
    
        If EXT_texture_cube_map_array is not supported, remove all
        references to TEXTURE_CUBE_MAP_ARRAY_EXT.
    
    Dependencies on EXT_texture_compression_s3tc
    
        If EXT_texture_compression_s3tc is not supported, remove any
        references to S3TC compressed texture formats.
    
    Dependencies on EXT_texture_compression_rgtc
    
        If EXT_texture_compression_rgtc is not supported, remove any
        references to the RGTC compressed texture formats.
    
    Dependencies on EXT_texture_compression_bptc
    
        If EXT_texture_compression_bptc is not supported, remove any
        references to the BPTC compressed texture formats.
    
    Dependencies on KHR_texture_compression_astc_ldr
    
        If KHR_texture_compression_astc_ldr is not supported, remove any
        references to the ASTC LDR compressed texture formats.
    
    Dependencies on KHR_texture_compression_astc_hdr
    
        If KHR_texture_compression_astc_hdr is not supported, remove any
        references to the ASTC HDR compressed texture formats.
    
    Dependencies on OES_texture_compression_astc
    
        If OES_texture_compression_astc is not supported, remove any
        references to the ASTC 3D compressed texture formats.
    
    New State
    
        Add to table 20.9, Textures (state per texture object)
    
                                                             Initial
        Get Value                    Type   Get Command      Value    Description                   Sec.
        ---------------------------  ----   -----------      -------  ----------------------------- ------
        TEXTURE_VIEW_MIN_LEVEL_EXT    Z+    GetTexParameter  0        view base texture level       8.16view
        TEXTURE_VIEW_NUM_LEVELS_EXT   Z+    GetTexParameter  0        view number of texture levels 8.16view
        TEXTURE_VIEW_MIN_LAYER_EXT    Z+    GetTexParameter  0        view min array layer          8.16view
        TEXTURE_VIEW_NUM_LAYERS_EXT   Z+    GetTexParameter  0        view number of array layers   8.16view
    
    New Implementation Dependent State
    
        None.
    
    Examples
    
        TODO
    
    Issues
    
        Note: These issues apply specifically to the definition of the
        EXT_texture_view specification, which is based on the OpenGL
        extension ARB_texture_view. Resolved issues from ARB_texture_view
        have been removed, but remain largely applicable to this extension.
        ARB_texture_view can be found in the OpenGL Registry.
    
        (1) What functionality was removed from ARB_texture_view?
    
          - Texture targets TEXTURE_1D_ARRAY and TEXTURE_RECTANGLE.
          - View classes VIEW_CLASS_RGTC1_RED, VIEW_CLASS_RGTC2_RG,
            VIEW_CLASS_BPTC_UNORM, and VIEW_CLASS_BPTC_FLOAT, corresponding
            to GL-only RGTC and BPTC compressed texture formats.
          - Base and internal formats R16, R16_SNORM, RG16, RG16_SNORM, RGB16,
            RGB16_SNORM, RGBA16, and RGBA16_SNORM (see bug 11366).
    
        (2) Should there be ETC2/EAC view classes added corresponding to
        those texture formats?
    
        RESOLVED. Yes. These view classes don't exist in OpenGL 4.4 or any GL
        extension, even though ETC2/EAC compressed formats are part of 4.4.
        However as these formats are likely to be more important in an
        OpenGL ES environment and thus support is added.  Support is also
        included for ASTC and RGTC and BPTC in case those texture formats
        are also supported.
    
    Revision History
    
        Rev.    Date    Author    Changes
        ----  --------  --------  -------------------------------------------
          1   10/07/13  Jon Leech Initial version based on ARB_texture_view
          2   11/12/13  Jon Leech Add dependency on EXT_texture_buffer
                                  and fix enum name.
          3   11/20/13  Jon Leech Refer to ES 3.1 instead of 3plus.
          4   11/21/13  dkoch     Add dependency on EXT_texture_cube_map_array
                                  and restore related language.
          5   12/18/13  dkoch     Add view classes for ETC2/EAC and ASTC formats
                                  Add interactions with RGTC and BPTC extensions.
                                  Resolve issue 3, add issue 5.
                                  Remove ARB_internalformat_query2 interaction.
                                  Added errors section based on GL 4.4.
          6   03/10/14  Jon Leech Rebase on OpenGL ES 3.1, change extension suffix
                                  to EXT, and remove R{GBA}16{,_SNORM} formats.
          7   03/26/14  Jon Leech Sync with released ES 3.1 specs. Reflow text.
          8   04/01/15  dkoch     Update contributors.
    
    人人超碰97caoporen国产