Name

    EXT_copy_image

Name Strings

    GL_EXT_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

Status

    Complete.

Version

    Last Modified Date: March 26, 2014
    Revision: 5

Number

    OpenGL ES Extension #175

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.

    This extension interacts with EXT_texture_buffer.

    This extension interacts with EXT_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 CopyImageSubDataEXT(
        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 CopyImageSubDataEXT(
            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_EXT
    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_EXT,
    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,                      |
    |         |                      | COMPRESSED_SIGNED_RG_RGTC2,               |
    |         |                      | COMPRESSED_RGBA_BPTC_UNORM,               |
    |         |                      | COMPRESSED_SRGB_ALPHA_BPTC_UNORM,         |
    |         |                      | COMPRESSED_RGB_BPTC_SIGNED_FLOAT,         |
    |         |                      | COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT,       |
    |         |                      | 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,                     |
    |         |                      | COMPRESSED_SIGNED_RED_RGTC1,              |
    |         |                      | 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 CopyImageSubDataEXT.
        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 CopyImageSubDataEXT.
        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:

    As written, this extension incorporates some of the "view class"
    terminology that is introduced by EXT_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 is supported, Table 4.X.2 should be replaced with
    a reference to Table 3.X.2 from that extension instead.

Dependencies on EXT_texture_buffer

    If EXT_texture_buffer is not supported, then remove all references
    to TEXTURE_BUFFER_EXT.

Dependencies on EXT_texture_cube_map_array

    If EXT_texture_cube_map_array is not supported, then 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 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

    CopyImageSubDataEXT 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
    EXT_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
    ----  ----------   --------  -----------------------------------------
     5    03/26/2014   dkoch     Update contributors.
     4    03/10/2014   Jon Leech Change suffix to EXT.
     3    02/12/2013   dkoch     Resolved issue 6.
     2    12/18/2013   dkoch     Finish the compressed texture interactions.
                                 Adding support for ETC2/EAC and ASTC textures.
                                 Eliminate the dependency on EXT_texture_view.
                                 Add language for source and destination overlap.
                                 Resolved issues 3,4,5. Added issue 6.
     1    12/02/2013   dkoch     Initial revision based on ARB_copy_image rev 4.
