Optimising Applications for PowerVR Graphics Cores

Before diving into tools or performance recommendations, it is important to consider the capabilities and characteristics of the target device.

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 submitted calls will map to the graphics hardware's processing pipeline.

The following documents are recommended to become familiar with the PowerVR graphics architecture:

These documents are also packaged with the PowerVR SDK and Tools.

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.2, Vulkan, 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 this document, as well as those in the Golden Rules of Development and the PowerVR Supported Extensions documents apply to all mobile graphics architectures. These documents also detail PowerVR-specific behaviour and describe OpenGL ES extensions exposed by the PowerVR reference driver for advanced hardware features.

Thermal design power (Embedded devices)

These recommendations for optimisations focus specifically on the PowerVR graphics core. However, reducing an application's workload on the CPU can be beneficial to the entire System-on-Chip (SoC), including the graphics core. This is because the CPU and the GPU share Thermal Design Power (TDP), meaning a reduction in CPU workload can not only reduce power draw for the entire SoC, but also reduce thermal output. This will help to prevent thermal throttling which would reduce the amount of power being sent to the SoC, potentially increasing the performance of the graphics core.

One of the primary advantages of the Vulkan API when used correctly is that it can reduce CPU workload. This is in part due to Vulkan drivers being very efficient and lightweight, which reduces overheads when using the API. This means that Vulkan has the potential to reduce the overall power consumption and thermal output of the entire SoC.