This blog post is about the PVRTune, the PowerVR hardware performance analysis tool included in the PowerVR Graphics SDK. Here I am going to cover the basics of the PVRTune GUI.

PVRTuneGUI basics_1

The first blog post of this series can be found here: PowerVR Graphics SDK tools explained: Profiling a render with PVRTune.

Connection box

PVRTuneGUI basics_2

Placed in the center of the starting UI, the connection box is used to either connect to a device running PVRPerfServer or load a saved PVRTune recording file.

The PVRTune GUI will listen for active PVRPerfServer sessions broadcasting themselves on the same network as the host. A list of identified servers is shown in the “Broadcasting servers on subnet” box and a list of recent connections or files opened is displayed here as well.

Timing Data view

PVRTuneGUI basics_3

Placed on the center of the UI once the connection has been established, this is the Graph View; all the timing events, counter values and loads are displayed here.

PVRTuneGUI basics_4

Time moves from left to right in the Graph View (oldest data to newest). A row is created for each hardware block that timing data has been captured for. Captured timing data is visualized as bars. As the hardware blocks operate independently, timing data on different rows can (and will) overlap.

The main timing events are the TA and 3D where each block represents a different GPU task:

  • TA: Represents TA Core Time. This is a measure of time spent tiling/culling the frame and running vertex shaders.
  • 3D: Represents 3D Core Time. This is a measure of how much time is spent fetching textures, processing fragment shaders and other fragment processing tasks (such as PowerVR’s Hidden Surface Removal).

There are also other events displayed in the Timing Data view such as compute tasks, 2D tasks, PVRScope custom events, etc…

For enhanced readability all the timing blocks follow a common colour convention:

PVRTuneGUI basics_5

Counter Table view

PVRTuneGUI basics_6

This view contains all the counters and loads that can be accessed from the selected Active Group (where Active Group is the current set of counters retrieved by PVRPerfServer). In order to display a given value just drag (and drop) it on the Timing Data view. The counters displayed are listed on the left of the Timing Data view.

Clicking on a counter will load its description in the Counter Properties view:

PVRTuneGUI basics_7

The Counter Properties view contains all the relevant information of a given value. It also allows you to change the Y Axis value.

Search view

PVRTuneGUI basics_8

Recently added in the PowerVR Graphics SDK v3.2, the Search view is a powerful widget that will allow you to search for a word or value across the entire PVRTune recording.

Conclusion

In this blog post I’ve covered the core PVRTune GUI functionality which should be more than enough to get you started with your next game profiling. Stay tuned (pardon the pun) if you want to know more about some advanced functionality such as the render state override or how to include the API calls in the time line.

For an overview of the PowerVR Graphics SDK 3.2, check out this blog post we’ve written at launch. Make sure you follow us on Twitter (@PowerVRInsider) for the latest news and announcements from the PowerVR Developer Technology team.

About the author: Guillem Vinals Gangolells

Profile photo of GuillemV

I'm a Developer Technologies Engineer for the PowerVR division in Imagination Technologies, company in which I've been working since early 2011.My main task consists in the design of developer tools as well as in the integration of the PowerVR graphics in the Android ecosystem. Leaving the technical part aside, I also travel to some international events in order to collect feedback, give technical talks and meet with other companies

View all posts by Guillem Vinals Gangolells