Great news for all developers working on mobile games and other embedded graphics applications: our Tools Software team have just finished a refresh of the Developer Documentation site.
These pages contain a wealth of information from computer graphics fundamentals to making the most out of Imagination’s power-efficient PowerVR GPU architecture. The refresh adds guidance on how best to develop for our latest architectural generations and for compute tasks while also adding details into the existing materials on getting started with PowerVR, OpenGL ES & Vulkan and our Tools Manuals.
Optimising for PowerVR means that your applications will run faster and more efficiently on all handsets with our GPUs inside - about 20% of those currently in ciruculation, including premium Android smartphones. We are also the leading GPU IP provider into the automotive market, where the Android applications are increasingly popular driven by the rise of software-defined vehicles and the growing demand for personalised in-car experiences.
While graphics engines and graphics APIs do provide a level of abstraction from the hardware in order to assist with cross-platform portability, if you’re looking to achieve maximum performance on a device you need to understand the shader, core, memory hierarchy and pipeline structures that you’re working with and tweak code accordingly to remove bottlenecks and improve power efficiency.
The Developer Documentation site has a full overview of the Imagination architecture, the tools available to programmers and all the details you need to make exceptional experiences. Here are some of our top tips.
Before optimizing, grasp how API calls are processed by our driver and mapped to the GPU’s pipeline. This helps you avoid costly operations and design more efficient rendering strategies.
Use PowerVR’s profiling tools to identify bottlenecks. Many performance issues stem from simple mistakes that could be caught early with proper analysis.
PowerVR GPUs come in different core families (Rogue, Volcanic, etc.). Know your target device’s architecture to tailor optimizations effectively, especially for compute workloads. Find out more about your GPU’s architecture here.
Reducing CPU overhead benefits the entire SoC. Vulkan is particularly effective here due to its low-overhead driver model, which can reduce thermal output and improve GPU performance.
Mobile APIs like OpenGL ES and Vulkan differ from desktop counterparts. Be aware of their limitations and leverage PowerVR-specific extensions for advanced features.
PowerVR’s USCs execute entire work-groups. Efficient shader code that aligns with USC execution patterns can dramatically improve performance.
Overdraw is a common performance killer. Use techniques like depth pre-pass and occlusion culling to reduce unnecessary fragment processing.
PowerVR supports MRTs, but inefficient use can lead to memory bandwidth issues. Batch operations and avoid excessive switching between targets.
Understanding how PowerVR handles memory (shared, private, constant) helps you write compute shaders that are both fast and scalable.
Imagination provides a set of best practices that apply across mobile graphics architectures. These include batching draw calls, minimizing state changes, and avoiding expensive operations in shaders.
For more tips covering everything from managing and storing vertex data to choosing the right texture size for your application, visit the Imagination Developer Documentation site. Our next blog will go into more detail on the new section that covers how to optimise for compute tasks on Imagination GPUs.