Name

    OES_copy_image

Name Strings

    GL_OES_copy_image

Contact

    Daniel Koch, NVIDIA Corporation (dkoch 'at' nvidia.com)

Contributors

    Ian Stewart, NVIDIA
    Graham Connor, Imagination
    Ben Bowman, Imagination
    Jonathan Putsman, Imagination
    And the contributors to ARB_copy_image

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 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

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 #208

Dependencies

    OpenGL ES 3.0 is required.

    This extension is written against the OpenGL ES 3.0 specification.

    This extension interacts with EXT_texture_view and OES_texture_view.

    This extension interacts with EXT_texture_buffer and OES_texture_buffer.

    This extension interacts with EXT_texture_cube_map_array and
    OES_texture_cube_map_array.

    This extension interacts with EXT_texture_compression_s3tc.

    This extension interacts with EXT_texture_compression_rgtc.

    This extension interacts with EXT_texture_compression_bptc.

    This extension interacts with KHR_texture_compression_astc_ldr.

    This extension interacts with KHR_texture_compression_astc_hdr.

    This extension interacts with OES_texture_compression_astc.

Overview

    This extension enables efficient image data transfer between image
    objects (i.e. textures and renderbuffers) without the need to bind
    the objects or otherwise configure the rendering pipeline.

    This is accomplised by adding a new entry-point CopyImageSubData,
    which takes a named source and destination.

    CopyImageSubData does not perform general-purpose conversions
    such as scaling, resizing, blending, color-space, or format
    conversions. It should be considered to operate in a manner
    similar to a CPU memcpy, but using the GPU for the copy.

    CopyImageSubData supports copies between images with different
    internal formats, if the formats are compatible as described in
    this extension.

    CopyImageSubData also supports copying between compressed and
    uncompressed images if the compressed block / uncompressed texel
    sizes are the same.

New Procedures and Functions

    void CopyImageSubDataOES(
        uint srcName, enum srcTarget, int srcLevel,
        int srcX, int srcY, int srcZ,
        uint dstName, enum dstTarget, int dstLevel,
        int dstX, int dstY, int dstZ,
        sizei srcWidth, sizei srcHeight, sizei srcDepth);

New Tokens

    None

Additions to Chapter 4 of the OpenGL ES 3.0 Specification (Per-Fragment
Operations and the Framebuffer)

    Append to section 4.3.3 (Copying Pixels):

    The function

        void CopyImageSubDataOES(
            uint srcName, enum srcTarget, int srcLevel,
            int srcX, int srcY, int srcZ,
            uint dstName, enum dstTarget, int dstLevel,
            int dstX, int dstY, int dstZ,
            sizei srcWidth, sizei srcHeight, sizei srcDepth);

    may be used to copy a region of texel data between two image
    objects.  An image object may be either a texture or a
    renderbuffer.

    CopyImageSubData does not perform general-purpose conversions
    such as scaling, resizing, blending, color-space, or format
    conversions. It should be considered to operate in a manner
    similar to a CPU memcpy. CopyImageSubData can copy between
    images with different internal formats, provided
    the formats are compatible.

    CopyImageSubData also allows copying between certain
    types of compressed and uncompressed internal formats as detailed
    in Table 4.X.1. This copy does not perform on-the-fly compression
    or decompression. When copying from an uncompressed internal format
    to a compressed internal format, each texel of uncompressed data
    becomes a single block of compressed data. When copying from a
    compressed internal format to an uncompressed internal format,
    a block of compressed data becomes a single texel of uncompressed
    data. The texel size of the uncompressed format must be the same
    size the block size of the compressed formats. Thus it is permitted
    to copy between a 128-bit uncompressed format and a compressed
    format which uses 8-bit 4x4 blocks, or between a 64-bit uncompressed
    format and a compressed format which uses 4-bit 4x4 blocks.
    INVALID_OPERATION is generated if the texel size of
    the uncompressed image is not equal to the block size of the
    compressed image.

    The source object is identified by <srcName> and <srcTarget>.
    Similarly the destination object is identified by <dstName> and
    <dstTarget>.  The interpretation of the name depends on the value
    of the corresponding target parameter.  If the target parameter is
    RENDERBUFFER, the name is interpreted as the name of a
    renderbuffer object.  If the target parameter is a texture target,
    the name is interpreted as a texture object.  All
    texture targets are accepted, with the exception of TEXTURE_BUFFER_OES
    and the cubemap face selectors described in table 3.17.
    INVALID_ENUM is generated if either target is not RENDERBUFFER
    or a valid texture target, or is TEXTURE_BUFFER, or is one
    of the cubemap face selectors described in table 3.21, or if the
    target does not match the type of the object. INVALID_OPERATION
    is generated if either object is a texture and the texture is
    not complete (as defined in section 3.8.13), if the source and
    destination internal formats are not compatible (see below),
    or if the number of samples do not match.
    INVALID_VALUE is generated if either name does not correspond to a
    valid renderbuffer or texture object according to the corresponding
    target parameter.

    <srcLevel> and <dstLevel> identify the source and destination
    level of detail.  For textures, this must be a valid level of
    detail in the texture object.  For renderbuffers, this value must
    be zero. INVALID_VALUE is generated if the specified level is not
    a valid level for the image.

    <srcX>, <srcY>, and <srcZ> specify the lower left texel
    coordinates of a <srcWidth>-wide by <srcHeight>-high by
    <srcDepth>-deep rectangular subregion of the source texel array.
    Similarly, <dstX>, <dstY> and <dstZ> specify the coordinates of a
    subregion of the destination texel array.  The source and destination
    subregions must be contained entirely within the specified level of the
    corresponding image objects.
    The dimensions are always specified in texels, even for compressed
    texture formats. But it should be noted that if only one of the
    source and destination textures is compressed then the number of
    texels touched in the compressed image will be a factor of the
    block size larger than in the uncompressed image.
    INVALID_VALUE is generated if the
    dimensions of the either subregion exceeds the boundaries of the
    corresponding image object, or if the image format is compressed
    and the dimensions of the subregion fail to meet the alignment
    constraints of the format.

    If the source and destination images are identical, and the source
    and destination rectangles overlap, the result of the operation is
    undefined.

    Slices of a TEXTURE_2D_ARRAY, TEXTURE_CUBE_MAP_ARRAY_OES,
    TEXTURE_3D and faces of TEXTURE_CUBE_MAP are all compatible provided
    they share a compatible internal format, and multiple slices or faces
    may be copied between these objects with a single call by specifying the
    starting slice with <srcZ> and <dstZ>, and the number of slices to
    be copied with <srcDepth>.  Cubemap textures always have six faces
    which are selected by a zero-based face index, according to the
    order specified in table 3.21.

    For the purposes of CopyImageSubData, two internal formats
    are considered compatible if any of the following conditions are
    met:
     * the formats are the same,
     * the formats are both listed in the same entry of Table 4.X.2, or
     * one format is compressed and the other is uncompressed and
       Table 4.X.1 lists the two formats in the same row.
    If the formats are not compatible INVALID_OPERATION is generated.

    ------------------------------------------------------------------------------
    | Texel / | Uncompressed         |                                           |
    | Block   | internal format      | Compressed internal format                |
    | size    |                      |                                           |
    ------------------------------------------------------------------------------
    | 128-bit | RGBA32UI,            | COMPRESSED_RGBA_S3TC_DXT3_EXT,            |
    |         | RGBA32I,             | COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,      |
    |         | RGBA32F              | COMPRESSED_RGBA_S3TC_DXT5_EXT,            |
    |         |                      | COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,      |
    |         |                      | COMPRESSED_RG_RGTC2_EXT,                  |
    |         |                      | COMPRESSED_SIGNED_RG_RGTC2_EXT,           |
    |         |                      | COMPRESSED_RGBA_BPTC_UNORM_EXT,           |
    |         |                      | COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT,     |
    |         |                      | COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,     |
    |         |                      | COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,   |
    |         |                      | COMPRESSED_RGBA8_ETC2_EAC,                |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,         |
    |         |                      | COMPRESSED_RG11_EAC,                      |
    |         |                      | COMPRESSED_SIGNED_RG11_EAC,               |
    |         |                      | COMPRESSED_RGBA_ASTC_4x4_KHR,             |
    |         |                      | COMPRESSED_RGBA_ASTC_5x4_KHR,             |
    |         |                      | COMPRESSED_RGBA_ASTC_5x5_KHR,             |
    |         |                      | COMPRESSED_RGBA_ASTC_6x5_KHR,             |
    |         |                      | COMPRESSED_RGBA_ASTC_6x6_KHR,             |
    |         |                      | COMPRESSED_RGBA_ASTC_8x5_KHR,             |
    |         |                      | COMPRESSED_RGBA_ASTC_8x6_KHR,             |
    |         |                      | COMPRESSED_RGBA_ASTC_8x8_KHR,             |
    |         |                      | COMPRESSED_RGBA_ASTC_10x5_KHR,            |
    |         |                      | COMPRESSED_RGBA_ASTC_10x6_KHR,            |
    |         |                      | COMPRESSED_RGBA_ASTC_10x8_KHR,            |
    |         |                      | COMPRESSED_RGBA_ASTC_10x10_KHR,           |
    |         |                      | COMPRESSED_RGBA_ASTC_12x10_KHR,           |
    |         |                      | COMPRESSED_RGBA_ASTC_12x12_KHR,           |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,     |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,     |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,     |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,     |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,     |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,     |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,     |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,     |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,    |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,    |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,    |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,   |
    |         |                      | COMPRESSED_RGBA_ASTC_3x3x3_OES,           |
    |         |                      | COMPRESSED_RGBA_ASTC_4x3x3_OES,           |
    |         |                      | COMPRESSED_RGBA_ASTC_4x4x3_OES,           |
    |         |                      | COMPRESSED_RGBA_ASTC_4x4x4_OES,           |
    |         |                      | COMPRESSED_RGBA_ASTC_5x4x4_OES,           |
    |         |                      | COMPRESSED_RGBA_ASTC_5x5x4_OES,           |
    |         |                      | COMPRESSED_RGBA_ASTC_5x5x5_OES,           |
    |         |                      | COMPRESSED_RGBA_ASTC_6x5x5_OES,           |
    |         |                      | COMPRESSED_RGBA_ASTC_6x6x5_OES,           |
    |         |                      | COMPRESSED_RGBA_ASTC_6x6x6_OES,           |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES,   |
    |         |                      | COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES    |
    ------------------------------------------------------------------------------
    | 64-bit  | RGBA16F, RG32F,      | COMPRESSED_RGB_S3TC_DXT1_EXT,             |
    |         | RGBA16UI, RG32UI,    | COMPRESSED_SRGB_S3TC_DXT1_EXT,            |
    |         | RGBA16I, RG32I,      | COMPRESSED_RGBA_S3TC_DXT1_EXT,            |
    |         |                      | COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,      |
    |         |                      | COMPRESSED_RED_RGTC1_EXT,                 |
    |         |                      | COMPRESSED_SIGNED_RED_RGTC1_EXT,          |
    |         |                      | COMPRESSED_RGB8_ETC2,                     |
    |         |                      | COMPRESSED_SRGB8_ETC2,                    |
    |         |                      | COMPRESSED_R11_EAC,                       |
    |         |                      | COMPRESSED_SIGNED_R11_EAC,                |
    |         |                      | COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, |
    |         |                      | COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 |
    ------------------------------------------------------------------------------

        Table 4.X.1: Compatible internal formats for copying between
        compressed and uncompressed internal formats with CopyImageSubDataOES.
        Formats in the same row can be copied between each other.

    --------------------------------------------------------------------------
    | 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 4.X.2: Compatible internal formats for CopyImageSubDataOES.
        Formats in the same entry may be copied between each other.
        [[Note that if texture_view is supported, this table should
        be replaced with a reference to Table 3.X.2 from that extension.]]

    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 3.8.X (Texture Image
    Loads and Stores).

Dependencies on EXT_texture_view or OES_texture_view:

    As written, this extension incorporates some of the "view class"
    terminology that is introduced by EXT_texture_view or OES_texture_view.
    However this is only enough to define the equivalence classes and does
    not actually imply the texture view capability.

    If EXT_texture_view or OES_texture_view is supported, Table 4.X.2 should
    be replaced with a reference to Table 3.X.2 from the appropriate extension
    instead.

Dependencies on EXT_texture_buffer or OES_texture_buffer

    If EXT_texture_buffer or OES_texture_buffer is not supported, then remove
    all references to TEXTURE_BUFFER_EXT or TEXTURE_BUFFER_OES, respectively.

    If EXT_texture_buffer is supported but OES_texture_buffer is not,
    replace all references to TEXTURE_BUFFER_OES with TEXTURE_BUFFER_EXT.

Dependencies on EXT_texture_cube_map_array or OES_texture_cube_map_array

    If EXT_texture_cube_map_array or OES_texture_cube_map_array is not supported,
    then remove all references to TEXTURE_CUBE_MAP_ARRAY_EXT or
    TEXTURE_CUBE_MAP_ARRAY_OES, respectively.

    If EXT_texture_cube_map_array is supported but OES_texture_cube_map_array
    is not, replace all references to TEXTURE_CUBE_MAP_ARRAY_OES with
    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 PBTC 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.

Errors

    CopyImageSubDataOES may fail with any of the following errors:

    INVALID_ENUM is generated
     * if either <srcTarget> or <dstTarget>
      - is not RENDERBUFFER or a valid non-proxy texture target
      - is TEXTURE_BUFFER, or
      - is one of the cubemap face selectors described in table 3.17,
     * if the target does not match the type of the object.

    INVALID_OPERATION is generated
     * if either object is a texture and the texture is not complete,
     * if the source and destination formats are not compatible,
     * if the source and destination number of samples do not match,
     * if one image is compressed and the other is uncompressed and the
       block size of compressed image is not equal to the texel size
       of the compressed image.

    INVALID_VALUE is generated
     * if either <srcName> or <dstName> does not correspond to a valid
       renderbuffer or texture object according to the corresponding
       target parameter, or
     * if the specified level is not a valid level for the image, or
     * if the dimensions of the either subregion exceeds the boundaries
       of the corresponding image object, or
     * if the image format is compressed and the dimensions of the
       subregion fail to meet the alignment constraints of the format.

Sample Code

    TBD

Issues

    Note: these issues apply specifically to the definition of
    OES_copy_image, which is based on the OpenGL ARB_copy_image extension
    as updated by OpenGL 4.4. Resolved issues from ARB_copy_image have
    been removed but remain largely applicable to this extension. That
    extension can be found in the OpenGL Registry.

    (1) What functionality was removed from ARB_copy_image?

      - removed mention of proxy textures, TEXTURE_1D_ARRAY target
      - removed mention of RGBA16, RGBA16_SNORM texture formats
      - removed compatibility profile interactions and negative borders

    (2) What functionality was changed or added relative to ARB_copy_image?

      - added compatibility class definition to avoid texture_view dependency
      - added ability to copy to/from ETC2/EAC formats and uncompressed formats
      - added ability to copy between ETC2/EAC formats that are compatible
      - added ability to copy to/from ASTC formats and uncompressed formats
      - added ability to copy between ASTC formats that are compatible

    (3) Is copying from/to images with ETC2/EAC compressed texture formats
        defined?

    RESOLVED: Yes. This extension adds support for copying between ETC2/EAC
    compressed texture formats that belong to the same view class. It also
    adds the ability to copy between uncompressed texture formats and
    compressed ETC2/EAC texture formats and in a similar fashion the other
    compressed formats.  This was requirement was not added to GL 4.x,
    because at the time GL 4.x HW did not natively support ETC2/EAC compressed
    textures, and thus it was expected that they may be uncompressed or
    transcoded. It is expected that this may be a very useful capability
    for mobile parts and so this capability is included here.  For GL 4.x
    hardware that wishes to expose this capability, it will need to
    transparently handle these copies as if the compressed formats where
    natively supported.

    (4) Is copying from/to images with ASTC compressed texture formats
        defined?

    RESOLVED. Yes, as in issue 3.  Any of the ASTC LHR, HDR, or 3D formats
    that are supported may be copied within their compatibility class.

    (5) What is the behavior when the source and destination images are the
        same?

    RESOLVED: This was also not stated in GL 4.4, ARB_copy_image or
    NV_copy_image. This was clarified to be undefined behaviour in Bug 11355.
    We follow that resolution here.

    (6) Should the R16, RG16, RGB16, and RGBA16 (and _SNORM) texture formats
        be supported?

    RESOLVED.  No. OpenGL ES 3.0 does not support these formats. They were
    considered for late addition to OpenGL ES 3.1 in Bug 11366, but didn't
    make the cut. In the absence of another extension to add them, they
    are not supported here either.

Revision History

    Rev.    Date       Author    Changes
    ----  ----------   --------  -----------------------------------------
     1    06/18/2014   dkoch     Initial OES version based on EXT.
                                 No functional changes.

