Introduction to PerfHUD

What is PerfHUD ES? 

PerfHUD ES enables experimentation and in-depth analysis of OpenGL ES applications. Through data provided by the OpenGL ES driver and the NVIDIA GPU, developers are given access to GPU performance and bottleneck information, in order to target optimizations where they are most needed. The debugging capabilities give full access to the state of the OpenGL ES pipeline, related textures and shaders, and all rendering states to help find the causes for improper setup and rendering anomalies.

Why is it called "PerfHUD ES"?

PerfHUD ES is inspired by NVIDIA’s PerfHUD for PC (Perf = Performance, HUD = Heads-Up Display). While PerfHUD ES does not use a heads-up display, its features are modeled after PerfHUD PC. PerfHUD for PC is mature and industry-proven, used by top game developers like Epic, Crytek, DICE, Relic Entertainment, Blizzard, and more.

How PerfHUD ES Works

PerfHUD ES uses a client-server model. The target device runs a special instrumented driver that communicates across a TCP/IP, USB, or ActiveSync connection with the PerfHUD ES Host application (subsequently referred to as the PerfHUD Host). When first started, the PerfHUD Host will attempt to connect to running applications on the target device using ADB, if ADB exists on your host system. If ADB does not exist, or if no connection is found, then you will need to select the "Not connected" button at the bottom right of the PerfHUD ES main screen. Selecting the "Not connected" button presents the developer with a connection interface, as shown in Figure 1. The connection between the PerfHUD Host and target can be established at any time while the target application is running.

Figure 1. PerfHUD Host Connection Interface

Note that the screenshot images in this guide may be slightly different than what you experience, as multiple platforms and projects are supported.

The ADB Forwarding checkbox is only available for Android targets and is the easiest way to connect. Simply select the checkbox, and PerfHUD ES will use ADB to discover all of the running graphics applications on the target device. Alternatively, you can use the advanced method listed below.

Switch between Different Graphics Processes

On some systems, multiple graphics applications may be running on the target at the same time. If you want to switch between these different graphics processes, you need go to FileIP Address (or press Ctrl+I) to open the Target IP Setting dialog.

When the target's host name and IP is set in this dialog, click the Refresh button, and you will see a list of processes running on the target side. You can connect to a process by double-clicking the entry, or single-click the entry and choose the Connect button.

On the target, when PerfHUD finds the default port 7876 is used by an existing graphics process, it will increase the port number and try to listen on that port until the upper boundary 7976 is reached. If localhost is used as the host name/IP, then ports in this range must be forwarded, in order for the processes to be visible in the list.

System Requirements

The PerfHUD host can run on any PC that supports OpenGL 1.5 (or higher) and the following OpenGL extensions:

If your PC has NVIDIA hardware, then any GeForce 6 series GPU (or higher) should suffice.

For Windows CE based devices, you need to install ActiveSync 4.5 (or higher) in order for the PerfHUD ES host to establish connection with target.

PerfHUD ES for Tegra currently only supports OpenGL ES 2.0 applications. However, you can leverage PerfHUD ES for your OpenGL ES 1.X applications if your target OpenGL ES 1.X driver is a wrapper around an OpenGL ES 2 driver.




NVIDIA® GameWorks™ Documentation Rev. 1.0.220830 ©2014-2022. NVIDIA Corporation and affiliates. All Rights Reserved.