Understanding PowerVR Series5XT: YUV colour space conversions and the 2D core
Simple 2D operations continue to be very common in embedded systems. But as modern embedded GPUs increasingly become GFLOPS monsters to handle advanced functionality such as complex 3D graphics and compute, they become increasingly less efficient at handling simple 2D data movement operations.
Data handling with PowerVR’s dedicated 2D core
Staying true to the concept of ‘the right core for the right job’, PowerVR SGX544MP designs include a 2D data movement core for handling simple operations with minimal power consumption. Typical usage scenarios for this data movement core include the upload of texture data from the OpenGL ES client side (the application) and the server side (the driver / GPU side).
This copy operation is an inherent requirement of how the OpenGL ES API works, and it can be handled most efficiently through the 2D core.
Competitor designs frequently use the 3D core for such copies, or even worse use the CPU. Both of these approaches lead to performance loss (synchronisation cost between different components) and increased power consumption at the system level.
YUV colour space conversions made easy
A similar example of using the right resources for specific tasks relates to YUV colour space handling. Modern GPU cores operate in the RGBA space, where video cores and camera interfaces typically use a YUV colour space (lossy compressed). Conversion between these colour spaces is possible using shader operations; however this will typically cost between 2 and 3 cycles on most GPU instruction sets, depending on the YUV format (e.g. interleaved, semi-planer or full planar).
On today’s mobile devices, YUV texturing using the GPU is increasingly common for accelerated camera interfaces and augmented reality applications.
However at Retina resolutions of 2560×1600 (4MPixels) at 60 FPS, this becomes a highly significant workload for 2 instruction slots. If you go down the path of not including a 2D core, you could effectively be using up a typical whole 500MHz GPU core just to handle the colour space conversion shader load.
Obviously this is highly inefficient, and again our architects recognised the need for efficiency and hence PowerVR SGX544 cores contain dedicated power-optimised logic (the right level of precision is used) which can handle this colour space operation for free as part of our texturing hardware.
Both the 2D hardware and YUV colour space conversion hardware help to keep power consumption down while maximising usage of the 3D core GFLOPS operations for useful scenarios (e.g. image enhancement processing rather than just colour space conversion).
In the next blog post, I will discuss how PowerVR GPUs achieve market leading fillrate efficiency.
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 @ImaginationPR) 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)