One of the biggest contributors to bandwidth in mobile graphics is the bandwidth linked to texture mapping. This is especially true with increasing screen resolutions, as ever-higher resolution textures are required to maintain image quality, and thus ever more data is being read by the GPU.
Reducing texture bandwidth and power with PVRTC and PVRTC2
Imagination recognised this fact early on. PowerVR MBX was our first PowerVR core for mobile devices that included support for our proprietary PVRTC texture compression. For reference, this was in 2001. More than 12 years ago, we already recognised that reducing texture bandwidth (and related power consumption), as well as reducing the memory footprint and application distribution size were essential for success in the mobile market.
Image compression vs. texture compression
Given that in these early days, silicon area was a key factor for system architectures, the PVRTC decompression hardware was designed to be very small and of course extremely low power. PowerVR customers and partners have benefited from PVRTC compression down to 4 or even only 2 bits per pixel across RGB and RGBA formats ever since 2001, and this revolutionary ability is just one of many that have helped PowerVR become the dominant player in the mobile space.
Khronos recognised this issue too and started working on the ASTC compression standard in 2012. As of the writing of this post, there are still no devices shipping with this new standard while PVRTC and PVRTC2 can be found in millions of smartphones and tablets worldwide. Even though it has taken this long for the rest of the industry to recognise the need for texture compression, we are glad to see more people acknowledging our assertion that high quality 2bpp (bit per pixel) compression of RGBA texture data is essential.
With PowerVR Series5XT, we’ve introduced an enhanced version of PVRTC which removed several of the original limitations (which existed primarily for silicon area savings). For example, we eliminated assumed wraparound of textures with the introduction of NPOT (Non Power Of Two) support. We also added many other features designed to improve visual quality and allow for advanced texturing, such as atlases.
These improvements resulted in the updated PVRTC2 format . PVRTC2 has even better image quality than the original PVRTC format, which already surpassed the capabilities of DXT1. Many more details about PVRTC, PVRTC2 and their benefits can be found in the whitepaper available on our Developer Technology Website.
A case study of texture compression quality
To have a fair estimate of the quality difference between different compression schemes, we have compressed a set of images that included natural photographs, some actual game textures and some game screenshots. We then computed the average quality difference between the different schemes, using different metrics: SSIM, PSNR and RMS, VIF, etc.
If you want to get started right away with PVRTC and PVRTC2 compression, we recommend you try out our PVRTexTool package, part of our PowerVR Graphics SDK. PVRTexTool is a suite of utilities for compressing textures which supports PVRTC, PVRTC2 and ETC, as well as all of the core texture formats for a variety of different APIs.
In the next blog post, I will discuss how PowerVR GPUs handle YUV color space conversions more efficiently compared to other graphics processors.
If you have any questions or feedback about Imagination’s graphics IP, please use the comments box below. To keep up to date with the latest developments on PowerVR, follow us on Twitter (@GPUCompute, @PowerVRInsider and @ImaginationTech) and subscribe to our blog feed.
‘Understanding PowerVR’ is an on-going, multi-part series of blog posts from Kristof Beets, Imagination’s Senior Business Development Manager for PowerVR. These articles not only focus on the features that make PowerVR GPUs great, but also provide a detailed look at graphics hardware architectures and software ecosystems in mobile markets.
If you’ve missed any of the posts, here are some backlinks:
- PowerVR GPUs and graphics API standards (part 1)
- PowerVR GPUs and graphics API standards (part 2)
- PowerVR and GPU compute (part 3)
- PowerVR, TBDR and architecture efficiency (part 4)
- Multithreading, multitasking ALUs, the MicroKernel and core scalability (part 5)
- PVRTC, PVRTC2 and texture compression (part 6)
- YUV colour space conversions and the 2D core (part 7)
- PowerVR’s market leading fillrate efficiency (part 8)
- PowerVR’s hardware is nothing without software optimization (part 9)
- The PowerVR Insider ecosystem and final thoughts (part 10)
Luis Matos has contributed to this article.