Introduction to PVRCarbon#

PVRCarbon is a suite of tools which allow developers to record and analyse how an application uses Vulkan, OpenGL ES 2.0+, OpenGL SC 2.0, EGL, and OpenCL.

PVRCarbon offers a host of features such as:

  • Portability - PVRCarbon recordings are small, lightweight, and can be played back on a wide range of platforms and operating systems, allowing simple collaboration without the need to transfer big source files;

  • C++ export - PVRCarbon recordings can be exported as C++ source code, allowing for debugging and modifications without the original source code;

  • Remote recording - record applications running on devices over a local network with just a few clicks;

  • Low overhead recording - minimising the impact on the application during runtime.

Overview of PVRCarbon#

PVRCarbon can be broken down into three main components:

  • GUI

  • Recorder

  • Player


The GUI is the main component of PVRCarbon. It is used for opening, analysing, and processing PVRCarbon recordings.

Recordings can be taken using the Recorder component or directly in the GUI using the remote recorder. The remote recorder can be accessed by selecting ‘Capture’ from the starting screen when first opening PVRCarbon.


The IP address of the device is required to connect.


Recordings are stored as .pvrcbn files.

Once a PVRCarbon recording has been loaded it can be analysed in various ways including:

  • Viewing all of the API calls which occurred during the recording;

  • Performing static analysis on the captured API calls;

  • Exporting the recording as C++ source code;

  • Playing back the API calls to render a frame;

  • Individual frame analysis.

The GUI is available for Windows, macOS, and Linux.


The PVRCarbon Recorder is a set of libraries that are used to intercept the API calls made by an application before forwarding them on to the graphics drivers. These libraries allow calls to be saved out to a PVRCarbon file (.pvrcbn) or streamed over the network to the GUI.

While the Recorder libraries can be used manually on all platforms to take recordings, the PVRCarbon GUI can be used to deploy them automatically and take remote recordings in most cases.

The Recorder libraries are available for Android, Windows, and Linux.


The PVRCarbon Player is a component used to play back a PVRCarbon recording. It replicates the sequence of API calls that were captured during the recording as closely as possible.

While the GUI contains its own internal Player, it can also connect to a stand-alone instance that is running remotely, such as on a connected phone or tablet. Alternatively, a stand-alone Player can play back a recording from a PVRCarbon file (.pvrcbn) directly, without the need for the GUI.

The stand-alone Player is available for Android, Windows, and Linux.