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 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 or 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.