Taking texture compression to a new dimension with PVRTC2

Share on linkedin
Share on twitter
Share on facebook
Share on reddit
Share on digg
Share on email

Released at GDC 2012, Imagination’s updated PVRTC2 texture compression technology provides significant enhancements in quality and efficiency offering application developers unrivaled performance while lowering system memory usage and reducing GPU processing overhead for the low power-driven world of mobile graphics.

Everything just got better: high contrast textures, NPOT support and sub-texturing

Imagination’s PVRTC texture compression format is currently the most efficient texture compression format in the mobile industry. More than 800m devices with PowerVR GPUs provide fully hardware-accelerated texture compression including all PowerVR Series4 (MBX), Series 5/5T (SGX) and Series6 (Rogue) GPU cores.

We believe PVRTC2 is a major update for game developers who use texture compression, bringing new capabilities to all platforms which integrate our PowerVR Series5XT and Series6 cores. A wide range of features were added, giving developers and artists the right combination of tools and standards that allows them to create applications with breath-taking visuals but that can run faster and burn less power.

PVRTC2 vs PVRTC at 2bppPVRTC2 vs PVRTC at 2bpp

PVRTC2 builds on the success of our previous texture compression standard, PVRTC, by bringing several vital improvements. Therefore, if your target platform has a Series5XT or Series6 GPU, you should use PVRTC2 as the results will be significantly better compared to PVRTC.

Alongside RGB and RGBA support with 4bpp and 2bpp encoding, PVRTC2 offers better image quality, especially for textures with large areas of colour discontinuity. Developers will not have to worry about texture manipulation techniques such as border expansion to eliminate previous issues in normal mapping or for collection of sub-images (texture atlases).

PVRTC2 vs PVRTC at 4bpp


PVRTC2 vs PVRTC at 4bpp

Non-tiling textures will also look much better thanks to the addition of dedicated modes for dealing with areas of high contrast between texture sections. This also simplifies working with images in a skybox as borders around them are no longer needed.

To increase the efficient use of memory, PVRTC2 also introduces support for NPOT (Non Power of Two) textures that were introduced with OpenGL ES 2.0. These textures eliminate the need for increasing pixel surfaces to match powers of two, especially for larger texture dimensions: for example a 1600×1200 texture would have required using a 2048×2048 pixel surface which wasted a lot of memory. PVRTC2 can natively support any size the developer chooses to use.

PVRTC2 and PVRTC compared against ETC1, ETC2 and BC1PVRTC2 and PVRTC compared against ETC1, ETC2 and BC1

For applications that use many small textures frequently, using sub-textures from a texture atlas can be often a more efficient way of using the graphics hardware’s resources. Tile-based games usually benefit greatly in performance from a texture atlas. PVRTC2 supports sub-texturing at data-word boundaries (4×4 or 8×4 for PVRTC2 4bpp or PVRTC2 2bpp respectively).

PVRTC2: How it works

Every texture compression standard should follow two simple guidelines

–          the decompression algorithm should be straightforward

–          the bits per pixel value is fixed (unlike, say, JPG or GIF).

These two considerations make random addressing (a must-have of every texture compression standard) far simpler which in turns leads to more efficient hardware. Optimized hardware equals low power requirements and increased performance capabilities.

A complicated decompression scheme and variable bits per pixel values were not designed for the mobile space. Therefore GPUs have to add more silicon area to support them and consume more power that they would traditionally do with a hardware-optimized texture compression standard such as Imagination’s PVRTC and PVRTC2.

PVRTC2: how it worksPVRTC2: how it works

Decompressing PVRTC2 data-words is very similar to PVRTC, although there are two main features that stand out:

–          PVRTC2 has a single ‘opacity flag’ for the entire data-word as opposed to PVRTC which uses an ‘opacity flag’ for each colour segment

–          PVRTC2 introduces a ‘hard transition flag’ for sub-texturing

Setting the single ‘opacity flag’ to 1 means both colour segments are opaque whereas when it is 0, both segments must be interpreted in Transparent Mode as shown below.

A PVRTC2 data wordA PVRTC2 data word

The ‘hard transition flag’ and the ‘modulation flag’ provide additional options for interpreting the modulation data. This doubles the number of options previously available in PVRTC.

PVRTC2 flag optionsPVRTC2 flag options

The new ‘non-interpolated’ and ‘local palette’ modes improve the quality of PVRTC2 when dealing with textures that contain colour discontinuities. Developers should use the ‘non-interpolated’ mode when textures do not tile seamlessly (discontinuities exist along the image boundary) whereas textures containing local areas with a variety of very distinct colours will benefit from the ‘local palette’ mode.

Compression types for mobile: part 1 of our case study

There are currently six well-known compression types supported by OpenGL ES:

–          PVRTC, Imagination’s widely used PowerVR texture compression

–          PVRTC2, the recently updated PowerVR texture compression

–          ETC1 (Ericsson texture compression) and ETC2/EAC (backwards compatible with ETC1 and mandatory in the OpenGL ES 3.0 graphics standard)

–          ASTC (Adaptive scalable texture compression), a new optional extension for both OpenGL and OpenGL ES

–          ATITC (ATI texture compression)

–          S3TC (S3 texture compression), also called DXTn, DXTC or BCn

This case study will focus on PVRTC2, comparing it to other compression standards supported by existing silicon to test their visual efficiency. We’ve chosen four types of distinct images and different quality settings to cover a wide spectrum of possibilities:

PVRTC2: data for texture comparison

For PVRTC2, the PVRTexTool from the PowerVR Graphics SDK v3.0 has been used to compress the images mentioned above. Our tool includes an intuitive GUI, support for other popular texture compressions formats and implements error metrics which allow you to compare between results.

PVRTC2 at 4bpp and 2bpp vs ETC1, ETC2 and BC3 at 4bpp PVRTC2 at 4bpp and 2bpp vs ETC1, ETC2 and BC3 at 4bpp PVRTC2 at 4bpp and 2bpp vs ETC1, ETC2 and BC3 at 4bpp PVRTC2 at 4bpp and 2bpp vs ETC1, ETC2 and BC3 at 4bppPVRTC2 at 4bpp and 2bpp vs ETC1, ETC2 and BC3 at 4bpp

As texture data can take up to 70% of a software application, texture compression affects everything from app store download and update times to main memory usage in any mobile computing platform. File compression can also be used to reduce texture size even further, as PVRTC and PVRTC2 data can be losslessly compressed to reduce storage space.

PVRTC2 delivers the best possible image quality at any given bitrate with much less noticeable artifacts than other solutions while our PowerVR graphics architecture is designed to provide full on-chip acceleration for texture decompression offering developers and gamers alike a consistent look and feel across thousands of applications and devices as well as major savings in battery life.

If you want to know more about PVRTC, you can contact our DevTech support team on Imagination’s PowerVR Insider dedicated forum. Among other interesting and useful threads, you can find a dedicated PowerVR FAQ list that covers devices supporting PVRTC2 and briefly explains what the PVRTC standard is about. For more on PVRTC and texture compression, follow us on Twitter (@ImaginationTech and @PowerVRInsider) and subscribe to our blog.

Alex Voica

Alex Voica

Before deciding to pursue his dream of working in technology marketing, Alexandru held various engineering roles at leading semiconductor companies in Europe. His background also includes research in computer graphics and VR at the School of Advanced Studies Sant'Anna in Pisa. You can follow him on Twitter @alexvoica.

8 thoughts on “Taking texture compression to a new dimension with PVRTC2”

Please leave a comment below

Comment policy: We love comments and appreciate the time that readers spend to share ideas and give feedback. However, all comments are manually moderated and those deemed to be spam or solely promotional will be deleted. We respect your privacy and will not publish your personal details.

Blog Contact

If you have any enquiries regarding any of our blog posts, please contact:

United Kingdom

Tel: +44 (0)1923 260 511

Search by Tag

Search by Author

Related blog articles

bseries imgic technology

Back in the high-performance game

My first encounter with the PowerVR GPU was helping the then VideoLogic launch boards for Matrox in Europe. Not long after I joined the company, working on the rebrand to Imagination Technologies and promoting both our own VideoLogic-branded boards and those of our partners using ST’s Kyro processors. There were tens of board partners but only for one brief moment did we have two partners in the desktop space: NEC and ST.

Read More »
b series hero banner 2

IMG B-Series – a multi-core revolution for a new world

B-Series uses multi-core to deliver an incredible 33 core variations for the widest range of options at all levels of performance points. From the smallest IoT cores up to the mid-range desktop equivalent B-Series an outperform mid-range next-gen consoles. Learn more in this blog post.

Read More »
pvrtune complete

What is PVRTune Complete?

PVR Tune Complete highlights exactly what the application is doing at the GPU level, helping to identify any bottlenecks in the compute stage, the renderer, and the tiler.

Read More »


Sign up to receive the latest news and product updates from Imagination straight to your inbox.