Optimizing graphics applications for PowerVR GPUs

Share on linkedin
Share on twitter
Share on facebook
Share on reddit
Share on digg
Share on email

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.
Graphics architecture

PowerVRTBDRPowerVR GPUs implement a unique TBDR graphics architecture

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:

  1. PowerVR Hardware Architecture Overview for Developers
  2. PowerVR Series5 Architecture Guide for Developers
  3. 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.

  1. PowerVR Performance Recommendations: The Golden Rules
  2. PowerVR Performance Recommendations
  3. PowerVR Supported Extensions

Analyzing your app’s performance

The process of optimization graphics applications

OptimizationProcessThe optimization process for 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:

  1. PVRMonitor
    Renders a real-time overlay of CPU and GPU stats on Android devices integrating PowerVR GPUs
  2. PVRTune
    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
  3. PVRShaderEditor
    Off-line shader editor & performance analyser. Generates disassembly in real-time for Series6 and Series6XT GPUs
  4. PVRTrace
    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.

Joe Davis

Joe Davis

Joe Davis leads the PowerVR Graphics developer support team. He and his team support a wide variety of graphics developers including those writing games, middleware, UIs, navigation systems, operating systems and web browsers. Joe regularly attends and presents at developer conferences to help graphics developers get the most out of PowerVR GPUs. You can follow him on Twitter @joedavisdev.

2 thoughts on “Optimizing graphics applications for PowerVR GPUs”

Please leave a comment below

Comment policy: We love comments and appreciate the time that readers spend to share ideas and give feedback. However, all comments are manually moderated and those deemed to be spam or solely promotional will be deleted. We respect your privacy and will not publish your personal details.

Blog Contact

If you have any enquiries regarding any of our blog posts, please contact:

United Kingdom

benny.har-even@imgtec.com
Tel: +44 (0)1923 260 511

Search by Tag

Search by Author

Related blog articles

PowerVR Hidden Surface Removal

Sorting Objects and Geometry on PowerVR Hardware

It can be tough trying to figure out the best way to optimise your applications for the hardware during development. Luckily, we’re here to help and – this is the first of an ongoing series of blog posts highlighting useful tips and tricks from our brand-new documentation website.

Stay up-to-date with Imagination

Sign up to receive the latest news and product updates from Imagination straight to your inbox.

  • This field is for validation purposes and should be left unchanged.

Subscribe to our newsletter

  • This field is for validation purposes and should be left unchanged.