Knowing where to look for help is half of the battle when it comes to optimizing your application. This blog post is intended to ease your 3D graphics development process by not only directing you to relevant learning resources, but also explaining what analysis tools are available and detailing the various ways to contact our developer support team.
Know your target
Before diving into tools or performance recommendations, let’s consider the capabilities and characteristics of your target device.
A basic understanding of how API calls are processed by the driver, inserted into the graphics hardware’s command stream and converted into coloured pixels goes a long way. It provides an immediate appreciation of why certain graphics API calls are costly and how your submitted calls will map to the graphics hardware’s processing pipeline. To familiarize yourself with the PowerVR graphics architecture, we recommend downloading and reading the following documents:
- PowerVR Hardware Architecture Overview for Developers
- PowerVR Series5 Architecture Guide for Developers
- PowerVR Series6 Compiler Instruction Set Reference
Mobile graphics APIs
Mobile graphics APIs are a subset of their desktop counterparts, with imposed restrictions and specific features to suit the performance characteristics of mobile devices and the batteries that power them. Although the latest APIs, such as OpenGL ES 3.1 and the Android Extension Pack, have brought many of the desktop and console features to low power devices, there are still differences that need to be considered.
Many of the recommendations in the documents below apply to all mobile graphics architectures. Of course, they also detail PowerVR specific behaviour and describe OpenGL ES extensions exposed by our reference driver for advanced hardware features.
- PowerVR Performance Recommendations: The Golden Rules
- PowerVR Performance Recommendations
- PowerVR Supported Extensions
Analyzing your app’s performance
The process of optimization graphics applications
Optimizing graphics applications seems like a straightforward process. Although the steps in the diagram above may seem obvious, we’ve seen beginner and experienced developers alike make simple mistakes that have cost large amounts of development time to resolve. Developers tend to run their analysis tools, identify a bottleneck, modify their application and consider the work done. One of the most important stages of optimisation though is to verify the change has actually improved performance. Without analysing performance after a modification, it’s easy for new (and possibly worse) bottlenecks to creep their way into your renderer.
The right tools for the job
As you may already know, our SDK includes profilers, debuggers and a variety of other analysis tools to help you track down issues. Here’s a quick overview of the key utilities:
Renders a real-time overlay of CPU and GPU stats on Android devices integrating PowerVR GPUs
Remote GPU performance analyser (server on the target, GUI analysis tool on your development machine). Captures timing data and counters, such as hardware unit loads and throughput data, in real-time
Off-line shader editor & performance analyser. Generates disassembly in real-time for Series6 and Series6XT GPUs
OpenGL ES 1.x, 2.0 & 3.x capture and analysis tool
The Further Reading section of each tool’s web page has tutorial videos, blog posts and user manuals. If you want to know more about our entire suite of development tools, check out our PowerVR Tools landing page here.
Ask for help
Of course, documentation and software only gets you so far; after reading the documents, watching the videos and running the tools, you may still have questions. Our FAQ tries to address the most common queries we receive – if the FAQ doesn’t help you, you can contact us through our public forum or through our confidential ticket support system (both of which are completely free to use!).
Make sure you also follow us on Twitter (@ImaginationTech, @PowerVRinsider) for the latest news and announcements from our PowerVR developer ecosystem.