Ultimately, no matter how good your hardware design is in terms of spot-on feature set, flexibility and scalability, it can all be let down by poor and inefficient driver software or a lack of compatible content. But again this is an area where Imagination can fall back on many years of solid experience and an impeccable track record of delivering support across the leading operating systems and APIs, and being the driving force behind the largest mobile graphics ecosystem in the industry.
The best software optimization and development team in mobile graphics
Imagination Technologies’ driver software teams are dedicated to delivering the best possible experience for end users, and this ranges from delivering the best possible software compatibility, to the best performance to the best possible battery life.
Efforts from our teams cover a wide range of different optimisation requirements including numerous CPU architectures, such as MIPS, ARM, x86, PowerPC and even several custom processor architectures over the years.
But equally, optimisation efforts are required across a wide range of PowerVR GPU architectures (Series5, Series5XT and Series6) and – on top of that – an enormously wide range of performance points (from single pipelines to multi-core multi-pipelined designs).
While much of the GPU software stack is unified, we recognize that one size does not fit all usage cases, and we use both compile time options as well as dynamic heuristics to ensure that within specific (sometimes variable) system conditions, the GPU always manages to deliver the best possible results.
And last, but definitely not least, there are the actual optimisation of the various graphics APIs and the OS integration, which covers both Khronos APIs in Linux (actually a very wide range of Linux variants), Android and even Real Time Operating Systems (for example Nucleus from Mentor Graphics), but also the Microsoft DirectX 11 API and driver interface for mobile, embedded as well as desktop Windows operating systems.
Optimisation of the API implementation may come as a surprise, but real world API usage is variable and occasionally unexpected, especially for new APIs (such as OpenGL ES 2.0 years ago and OpenGL ES 3.0 today). This is because it’s never possible to perfectly predict how developers will practically use the API interfaces. It’s important to recognise that performance optimisations should always be generic and not application-focussed, after all benchmark recognition and hand-optimised shader replacements will not help real world usage scenarios.
The integration optimisation of operating systems is a constant race of ensuring the best possible results on always-evolving requirements from extensions to different memory management schemes to compositor enhancements, as OEMs always want to ship with the very latest version of, for example, the Android OS.
Finally, as I have already mentioned in previous posts, there is also the effort of supporting new APIs, be it OpenVG support many years ago (hardly relevant anymore, as all user experiences today expect 3D functionality) or today’s requirement for GPU compute through Khronos OpenCL or Android’s Renderscript/Filterscript.
Without the daily efforts of our driver teams, the PowerVR hardware would not be where it is today and this is a fact which is all too often forgotten. We all obsess over hardware performance and feature sets, but in doing so ignore the essential impact that software has on the final consumer experience.
Of course even at the software level, efficiency comes into play from two angles: first in driving the PowerVR hardware as efficiently as possible, but likely even more importantly, doing it with minimal CPU workload.
Imagination’s teams strive to achieve efficiency across all aspects of hardware and software development, leading to the recognised highest performance as well as power efficiency of our designs.
In my final blog post of this series, I will discuss how the PowerVR Insider ecosystem has grown to be the largest mobile graphics development program in existence today.
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)