Getting started with Adaptive Scalable Texture Compression

Getting started with Adaptive Scalable Texture Compression

By Anand Patel

January 23rd 2014 at 4:54PM

ARM developer resources manager Anand Patel details a new image compression technique

Ever since texture mapping took off back in the 1990s, texture access has been recognised as one of the most important consumers of memory bandwidth in graphics systems - to the point where the amount of bandwidth available for texture fetches ends up limiting the performance of the GPU.

When developing for mobile devices, bandwidth is even more important because reading main memory costs a lot of power and drains the limited battery supply very quickly. Often the best way to make a graphics application run faster and more efficiently is to reduce the size of the textures. The more you can reduce your textures, the lower the bandwidth of your application and the longer your customers will be able to play it.

Adaptive Scalable Texture Compression is the new texture compression format that has been adopted by The Khronos Group into both the OpenGL and OpenGL ES APIs. It brings to the table a vast increase in control over what bit rates and colour formats you can use, along with a huge step up in image quality and bandwidth reduction.

The central tenet of ASTC is that, unlike previous formats, it is non-proprietary and can, on its own, compress an input image in every commonly used format and output that image in any user selected bit rate, from 8bpp to a tiny 0.89bpp.

With the launch of the Samsung Galaxy Note 3 with its ARM® Mali-T628 GPU, ASTC became available on hardware for developers to start playing with and over the next couple of years its benefits could make it a standard feature across many devices and GPU vendors. Furthermore, ASTC is also supported in Unity 4.3.

So how can you get started with ASTC?

Firstly, if you don’t believe that ASTC can compress an RGBA image to less than one bit per pixel, this blog will uncover all you need to know to change your mind.

Follow the blog up with a read of this developer guide which goes into much more detail, including “Getting Started” instructions, code that will show you how to easily use ASTC texture files in an arbitrary graphics project, as well as a detailed explanation of the command line arguments that will help you get the most out of the evaluation codec.

Finally, there are a number of developer tools available for ASTC that will improve your texture compression no end:

ASTC Evaluation Codec - running on a standard PC, this tool allows content developers to evaluate the quality and size benefits of ASTC, before moving onto mobile hardware.

ARM Mali GPU Texture Compression Tool – with support for ETC1 / ETC2 / EAC texture compression formats as well as ASTC.

OpenGL ES 3.0 Emulator – a tool that runs on a standard PC, it is a library that maps OpenGL ES 3.0 API calls to the OpenGL API with support for ASTC.