Name

    AMD_compressed_ATC_texture

Name Strings

    GL_AMD_compressed_ATC_texture

Contributors

    Aaftab Munshi
    Benj Lipchak
	
Contact

    Maurice Ribble, Qualcomm (mribble 'at' qualcomm.com)

IP Status

    Please contact AMD regarding any intellectual property questions/issues 
    associated with this extension.

Status

    Complete.

Version

    Last Modified Date: February 26, 2008
    Revision: 7

Number

    OpenGL ES Extension #40

Dependencies

    Written based on the wording of the OpenGL ES 1.1 specification.

Overview

    This extension enables support for ATC compressed texture formats.  ATC is 
    AMD's proprietary compression algorithm for compressing textures for 
    handheld devices to save on power consumption, memory footprint and 
    bandwidth.

    Three compression formats are introduced:

    - A compression format for RGB textures.
    - A compression format for RGBA textures using explicit alpha encoding.
    - A compression format for RGBA textures using interpolated alpha encoding.

New Procedures and Functions

    None.

New Tokens

    Accepted by the <internalformat> parameter of CompressedTexImage2D and
    CompressedTexImage3DOES.

        ATC_RGB_AMD                        0x8C92
        ATC_RGBA_EXPLICIT_ALPHA_AMD        0x8C93
        ATC_RGBA_INTERPOLATED_ALPHA_AMD    0x87EE

Additions to Chapter 2 of the OpenGL 1.3 Specification (OpenGL Operation)

    None.

Additions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization)

    Add to Table 3.17:  Specific Compressed Internal Formats

        Compressed Internal Format         Base Internal Format
        ===============================    ====================
        ATC_RGB_AMD                        RGB
        ATC_RGBA_EXPLICIT_ALPHA_AMD        RGBA
        ATC_RGBA_INTERPOLATED_ALPHA_AMD    RGBA


    Add to Section 3.8.3, Alternate Image Specification

    The details of these formats is not disclosed, so refer to AMD's 
    Compressonator tool in order to encode your textures offline:
    http://ati.amd.com/developer/compressonator.html
    
    OpenGL ES requires that all mip-levels have to be specified when
    CompressedTexImage2D is called to load a palettized texture.  In this case 
    the "level" value is either 0 or a negative number to indicate the number of
    mip-levels.  This rule is not followed when loading an ATC texture.  The 
    "level" number in this case represents the actual mip-level number,
    so a negative number will raise an error.

    Compressed texture images stored using the ATC compressed image formats are
    represented as a collection of 4x4 texel blocks.

    ATC_RGB_AMD Format
    ==================

    This format compresses blocks of source texels down to 4 bits per texel.
    Assuming 8-bit component source texels, this represents a 8:1 compression
    ratio.  This is the best format to use when no alpha channel is needed.

    ATC_RGBA_EXPLICIT_ALPHA_AMD Format
    ==================================

    This format compresses blocks of source texels down to 8 bits per texel.
    Assuming 8-bit component source texels, this represents a 4:1 compression
    ratio.  This is generally the best format to use when alpha transitions are
    sharp.

    ATC_RGBA_INTERPOLATED_ALPHA_AMD Format
    ======================================

    This format compresses blocks of source texels down to 8 bits per texel.
    Assuming 8-bit component source texels, this represents a 4:1 compression
    ratio.  This is generally the best format to use when alpha transitions are
    gradient.

    The size in bytes of a compressed ATC_RGB_AMD image is:

    ((width_in_texels+3)/4) * ((height_in_texels+3)/4) * 8

    The size in bytes of a compressed ATC_RGBA_EXPLICIT_ALPHA_AMD or
    ATC_RGBA_INTERPOLATED_ALPHA_AMD image is:

    ((width_in_texels+3)/4) * ((height_in_texels+3)/4) * 16

Errors

    INVALID_OPERATION is generated by TexImage2D, TexSubImage2D, 
    CompressedTexSubImage2D, or CopyTexSubImage2D if <internalformat> or 
    <format> is ATC_RGB_AMD, ATC_RGBA_EXPLICIT_ALPHA_AMD, or 
    ATC_RGBA_INTERPOLATED_ALPHA_AMD.

New State

    The queries for NUM_COMPRESSED_TEXTURE_FORMATS and 
    COMPRESSED_TEXTURE_FORMATS include ATC_RGB_AMD, ATC_RGBA_EXPLICIT_ALPHA_AMD,
    and ATC_RGBA_INTERPOLATED_ALPHA_AMD.

Revision History

    09/06/2012    Maurice Ribble   Update contact and add block size data.
    02/26/2008    Benj Lipchak     Throw INVALID_OPERATION on subimage updates.
    10/24/2007    Benj Lipchak     Add interpolated alpha RGBA format.
    09/24/2007    Jon Leech        Assign extension number.
    09/05/2007    Benj Lipchak     Cosmetic changes.
    08/01/2007    Benj Lipchak     Publication readiness.
    07/07/2005    Aaftab Munshi    Fixed typos.
    09/15/2004    Aaftab Munshi    Created the document.
