blob: 2ffe45cd18dfca4b2f0ba1f2a82b11b06e7cc0d2 [file] [log] [blame]
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.