Name

    CHROMIUM_compressed_texture_etc

Name Strings

    GL_CHROMIUM_compressed_texture_etc

Version

    Last Modifed Date: September 19, 2016

Dependencies

    OpenGL ES 2.0 is required.

Overview

    This extension exposes the OpenGL ES 3.0 core compressed texture
    formats in OpenGL ES 2.0.

New Procedures and Functions

    None

New Tokens

    Accepted by the <internalformat> parameter of CompressedTexImage2D and the
    <format> parameter of CompressedTexSubImage2D:

        COMPRESSED_R11_EAC                                0x9270
        COMPRESSED_SIGNED_R11_EAC                         0x9271
        COMPRESSED_RG11_EAC                               0x9272
        COMPRESSED_SIGNED_RG11_EAC                        0x9273
        COMPRESSED_RGB8_ETC2                              0x9274
        COMPRESSED_SRGB8_ETC2                             0x9275
        COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2          0x9276
        COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2         0x9277
        COMPRESSED_RGBA8_ETC2_EAC                         0x9278
        COMPRESSED_SRGB8_ALPHA8_ETC2_EAC                  0x9279

    Querying COMPRESSED_TEXTURE_FORMATS will include these new formats.

New Procedures and Functions

    None.

Errors

    The error INVALID_VALUE is generated if the <internalformat> parameter of
    CompressedTexImage2D or the <format> parameter of CompressedTexSubImage2D is
    COMPRESSED_R11_EAC, COMPRESSED_SIGNED_R11_EAC, COMPRESSED_RGB8_ETC2,
    COMPRESSED_SRGB8_ETC2, COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 or
    COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, and imageSize is not

        floor((width + 3) / 4) * floor((height + 3) / 4) * 8

    The error INVALID_VALUE is generated if the <internalformat> parameter of
    CompressedTexImage2D or the <format> paremeter of CompressedTexSubImage2D is
    COMPRESSED_RG11_EAC, COMPRESSED_SIGNED_RG11_EAC, COMPRESSED_RGBA8_ETC2_EAC,
    or COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, and imageSize is not

        floor((width + 3) / 4) * floor((height + 3) / 4) * 16


New State

    None.

Revision History

    9/19/2016   First revision
