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.4 Release
    All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
    GL_OES_texture_view
    Name
    
        OES_texture_view
    
    Name Strings
    
        GL_OES_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
    
    Specification Update Policy
    
        Khronos-approved extension specifications are updated in response to
        issues and bugs prioritized by the Khronos OpenGL ES Working Group. For
        extensions which have been promoted to a core Specification, fixes will
        first appear in the latest version of that core Specification, and will
        eventually be backported to the extension document. This policy is
        described in more detail at
            https://www.khronos.org/registry/OpenGL/docs/update_policy.php
    
        Portions Copyright (c) 2013-2014 NVIDIA Corporation.
    
    Status
    
        Approved by the OpenGL ES Working Group
        Ratified by the Khronos Board of Promoters on November 7, 2014
    
    Version
    
        Last Modified Date: June 18, 2014
        Revision: 1
    
    Number
    
        OpenGL ES Extension #218
    
    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.
    
        OES_texture_buffer and EXT_texture_buffer affect the definition of this
        extension.
    
        OES_texture_cube_map_array and EXT_texture_cube_map_array affects the
        definition of this extension.
    
        OES_texture_storage_multisample_2d_array interacts with 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 TextureViewOES(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_OES                      0x82DB
            TEXTURE_VIEW_NUM_LEVELS_OES                     0x82DC
            TEXTURE_VIEW_MIN_LAYER_OES                      0x82DD
            TEXTURE_VIEW_NUM_LAYERS_OES                     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 TextureViewOES, 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_OES, TEXTURE_VIEW_NUM_LEVELS_OES,
        TEXTURE_VIEW_MIN_LAYER_OES, TEXTURE_VIEW_NUM_LAYERS_OES, 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 TextureViewOES(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_OES is set to <minlevel> plus the value of
           TEXTURE_VIEW_MIN_LEVEL_OES for <origtexture>.
    
         - TEXTURE_VIEW_MIN_LAYER_OES is set to <minlayer> plus the value of
           TEXTURE_VIEW_MIN_LAYER_OES for <origtexture>.
    
         - TEXTURE_VIEW_NUM_LEVELS_OES is set to the lesser of <numlevels> and
           the value of TEXTURE_VIEW_NUM_LEVELS_OES for <origtexture> minus
           <minlevels>.
    
         - TEXTURE_VIEW_NUM_LAYERS_OES is set to the lesser of <numlayers> and
           the value of TEXTURE_VIEW_NUM_LAYERS_OES 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_OES                                |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_BUFFER_OES          |  <none>                                                    |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_2D_ARRAY            |  TEXTURE_2D_ARRAY, TEXTURE_2D, TEXTURE_CUBE_MAP,           |
            |                             |  TEXTURE_CUBE_MAP_ARRAY_OES                                |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_CUBE_MAP_ARRAY      |  TEXTURE_CUBE_MAP_ARRAY_OES, TEXTURE_2D_ARRAY, TEXTURE_2D, |
            |                             |  TEXTURE_CUBE_MAP                                          |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_2D_MULTISAMPLE      |  TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY_OES  |
            |------------------------------------------------------------------------------------------|
            | TEXTURE_2D_MULTISAMPLE_ARRAY_OES|TEXTURE_2D_MULTISAMPLE, TEXTURE_2D_MULTISAMPLE_ARRAY_OES|
            --------------------------------------------------------------------------------------------
    
            Table 8.X.1: Legal texture targets for TextureViewOES.
    
        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_OES with 6 layer-faces.
    
        The two textures' internal formats must be compatible according to Table
        8.X.2 (Compatible internal formats for TextureViewOES) 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 TextureViewOES. 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_OES.
    
    
        Errors
    
        An INVALID_VALUE error is generated if <texture> is zero.
    
        An INVALID_OPERATION error is generated by TextureViewOES 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_OES 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_OES, 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_OES become
        <levels>. If the texture target is TEXTURE_2D_ARRAY,
        TEXTURE_CUBE_MAP_ARRAY, or TEXTURE_2D_MULTISAMPLE_ARRAY_OES then
        TEXTURE_VIEW_NUM_LAYERS_OES becomes <depth>. If the texture target is
        TEXTURE_CUBE_MAP, then TEXTURE_VIEW_NUM_LAYERS_OES becomes 6. For any
        other texture target, TEXTURE_VIEW_NUM_LAYERS_OES 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_OES,
        TEXTURE_VIEW_NUM_LEVELS_OES, TEXTURE_VIEW_MIN_LAYER_OES,
        TEXTURE_VIEW_NUM_LAYERS_OES are each zero."
    
    
    Dependencies on OES_texture_buffer or EXT_texture_buffer
    
        If OES_texture_buffer or EXT_texture_buffer is not supported, remove
        TEXTURE_BUFFER_OES from the list of targets in table 8.X.1.
    
    Dependencies on OES_texture_cube_map_array or EXT_texture_cube_map_array
    
        If OES_texture_cube_map_array or EXT_texture_cube_map_array is not
        supported, remove all references to TEXTURE_CUBE_MAP_ARRAY_OES.
    
    Dependencies on OES_texture_storage_multisample_2d_array
    
        If OES_texture_storage_multisample_2d_array is not supported, remove all
        references to TEXTURE_2D_MULTISAMPLE_ARRAY_OES
    
    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_OES    Z+    GetTexParameter  0        view base texture level       8.16view
        TEXTURE_VIEW_NUM_LEVELS_OES   Z+    GetTexParameter  0        view number of texture levels 8.16view
        TEXTURE_VIEW_MIN_LAYER_OES    Z+    GetTexParameter  0        view min array layer          8.16view
        TEXTURE_VIEW_NUM_LAYERS_OES   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
        OES_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    06/18/2014   dkoch     Initial OES version based on EXT.
                                     No functional changes.
    
    人人超碰97caoporen国产