PowerVR Graphics SDK tools explained: Capturing a render with PVRTrace

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

PVRTrace – the PowerVR OpenGL ES analysis tool inside the PowerVR Graphics SDK – simplifies the process of identifying errors, redundancies & performance bottlenecks in your application’s graphics API calls.

PVRTrace - OpenGL ES calls - ShadowGun

In this blog series, I’ll detail how the tool works, how it can speed up your OpenGL ES development process and what features have been added to our latest release to make 3D graphics debugging even easier!

What does PVRTrace capture?

PVRTrace captures API calls and data (buffer, textures & shaders) of OpenGL ES applications running on PowerVR devices or through our PVRVFrame OpenGL ES emulation. Recorded PVRT files can then be inspected in the PVRTraceGUI analysis tool or replayed with the standalone PVRTrace Playback binary.

How does PVRTrace capture?

PVRTrace - OpenGL ES (1)

Rather than being built into a device’s graphics driver, PVRTrace libraries are a separate entity that act as a middleman between an application and host OpenGL ES drivers. This approach has a number of benefits:

  1. Host drivers don’t need to change: Instead of being restricted by the version of profiling tools built into the host driver or requiring custom profiling drivers to be installed, our standalone libraries allow the latest & greatest version of the tool to be used on any device
  2. Can be used with PVRVFrame emulation: The standalone library approach means we can provide recording libraries that work with our PVRVFrame OpenGL ES emulation. This allows users to record and analyse their applications without even needing to touch a PowerVR device!

pvrtrace.cfg is used to configure the behaviour of the recording libraries, for example setting the location of host OpenGL ES libraries, stating where the PVRT file should be written and specifying the range of frames should be recorded.

PVRTrace - OpenGL ES (2)

On Android, we provide PVRTraceSetup.apk to configure pvrtrace.cfg and install the PVRTrace libraries on rooted devices. It’s also possible to build the PVRTrace libraries into your APKs to record on non-rooted Android devices – this has been already covered in this blog article.

Which platforms are supported?

PVRTrace - OpenGL ES (3)


In the next post, I’ll dive into PVRTraceGUI and explain how it can be used to optimize your render. In the meantime, you can check out the PVRTrace Quick Start and User Manual documents in our PowerVR Graphics SDK or post any questions you have on our forum. Remember to follow us on Twitter (@ImaginationTech and @PowerVRInsider) and subscribe to our blog.

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.

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

Tel: +44 (0)1923 260 511

Search by Tag

Search by Author

Related blog articles

pvrtune complete

What is PVRTune Complete?

PVR Tune Complete highlights exactly what the application is doing at the GPU level, helping to identify any bottlenecks in the compute stage, the renderer, and the tiler.

Read More »
shutterstock 1175807410 1

Vulkan synchronisation and graphics-compute-graphics hazards: Part I

How do you mix and match rasterisation and compute in a modern GPU? In modern rendering environments, there are a lot of cases where a compute workload is used during a frame. Compute is generic (non-fixed function) parallel programming on the GPU, commonly used for techniques that are either challenging, outright impossible, or simply inefficient to implement with the standard graphics pipeline (vertex/geometry/tessellation/raster/fragment).

Read More »


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