Android GPU Inspector (AGI) is currently in open beta. Learn more.

Commands pane

The Commands pane displays the calls made by the application, grouped by frame and draw call or by user markers.

Initial View of either an OpenGL or Vulkan trace
Figure 1: Initial View of either an OpenGL or Vulkan trace
Viewing an OpenGL trace
Figure 2: Viewing an OpenGL trace
Viewing a Vulkan trace
Figure 3: Viewing a Vulkan trace
Viewing a Vulkan trace
Figure 4: Searching for a command in a Vulkan trace

Operations

You can perform the following operations in this pane:

Operation Description
Show result Click a command or group to update the other panes to reflect the state after the selected command or group.
Expand or collapse the command hierarchy Click the gray triangle to the left of a grouping or double-click the grouping to expand or collapse it.
Search Type a string in the search bar at the top of the pane, and then press Return (see the preceding image). To find the next occurrence, make sure the bar is selected and press Return again.

Select the Regex box to use a regular expression search pattern. For example, glClear.* matches both commands glClear() and glClearColor(). You can also search for command parameter values such as buffer: 2, which is used in glBindBuffer().
Edit Right-click a command and select Edit. In the Edit dialog, change one or more values and click OK. Note: This is only valid for Vulkan commands, and not for OpenGL commands.
View state or memory information Click a command argument that refers to a state parameter, such as a texture ID. The State pane displays additional information. Click a memory address or pointer to open the Memory pane. Note: This is only valid for Vulkan commands, and not for OpenGL commands.
Copy commands Select items in the pane and press Control+C (or Command+C) to copy commands with their argument values. You can paste this information into a text file.
Magnify thumbnail The thumbnail appears to the left of a call as shown in the following image. Hover the cursor over the thumbnail to enlarge it.
CAPTION

OpenGL ES command hierarchy

OpenGL ES commands are translated to Vulkan, and the Vulkan commands are analyzed. As a result, OpenGL ES commands are shown with both OpenGL ES and Vulkan commands shown in the expanded hierarchy. In the preceding example, you can see multiple glDrawElement commands under the RenderPass. The second glDrawElements command hierarchy was expanded, and shows OpenGL ES Commands and DrawIndexed. You can expand both of these hierarchies to show the related OpenGL ES commands, as well as the Vulkan commands that they were translated into.

Because there isn’t a one-to-one relationship between OpenGL ES and Vulkan, there may be some differences. For example, a glClear command that occurs before the first glDraw* command appears before a RenderPass. If you expand the hierarchy of the glClear, there will be no Vulkan commands. That is because the clear will be deferred and done as part of starting the Vulkan RenderPass.

Debug markers

Depending on your app, the Commands pane can contain a very long list of commands within one frame. For better navigation and readability, you can define debug markers that group calls together under a heading in the tree. This could include a grouping, for example, named "Setup" or "Render World."

If debug markers are enabled, click the Commands pane to reveal a link to this information. OpenGL ES has the following APIs to group commands:

EXTENSION / VERSION PUSH POP
KHR_debug glPushDebugGroupKHR() glPopDebugGroupKHR()
EXT_debug_marker String String
OpenGL ES 3.2 String String

Vulkan has the following APIs to group commands:

EXTENSION / VERSION PUSH POP
VK_EXT_debug_marker glPushDebugGroupKHR() glPopDebugGroupKHR()