Name

    CHROMIUM_copy_compressed_texture

Name Strings

    GL_CHROMIUM_copy_compressed_texture

Version

    Last Modifed Date: August 5, 2015

Dependencies

    OpenGL ES 2.0 is required.

    GL_AMD_compressed_ATC_texture, GL_ATI_texture_compression_atitc,
    GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt5,
    GL_EXT_texture_compression_s3tc and GL_OES_compressed_ETC1_RGB8_texture
    affects the definition of this extension.

Overview

    This extension provides functionality for copying compressed textures. It
    adds a new function glCompressedCopyTextureCHROMIUM that works similarly
    to glCopyTextureCHROMIUM, but for compressed textures.

    Which compressed texture formats that this extension supports depends on
    the supported texture compression formats of the host GPU.

Issues

    glCompressedCopyTextureCHROMIUM will first try to copy into a compressed
    texture of the same format as the source texture. If unsuccessful, the
    destination texture format will be changed to GL_RGBA and the texture will
    be stored uncompressed.

New Procedures and Functions

    The command

        void glCompressedCopyTextureCHROMIUM (GLuint source_id, GLuint dest_id)

    Copies the contents of a compressed texture referred to by <source_id> to
    <dest_id> texture.

    Texture level 0 is copied from the source image to level 0 of the
    destination texture.

    The internal format of the source texture must be one of the following
    symbolic constants: GL_ATC_RGB_AMD, GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD,
    GL_COMPRESSED_RGB_S3TC_DXT1_EXT, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
    GL_ETC1_RGB8_OES

    The destination texture will be created or replaced with the same internal
    format as the source texture.

    INVALID_OPERATION is generated if internal format of source texture is not
    one of the valid formats described above.

    INVALID_OPERATION is generated if destination texture is immutable.

    INVALID_VALUE is generated if <source_id> or <dest_id> are not valid texture
    objects.

    INVALID_VALUE is generated if textures corresponding to <dest_id> have not
    been bound as GL_TEXTURE_2D object.

    INVALID_VALUE is generated if level 0 of the source texture is not defined.

Errors

    None.

New Tokens

    None.

New State

    None.

Revision History

    15/6/2015    Documented the extension.
    5/8/2015     Added glCompressedCopySubTextureCHROMIUM.
    1/6/2016     Remove glCompressedCopySubTextureCHROMIUM.
    1/8/2016     Remove <target> argument.
