Stay organized with collections
Save and categorize content based on your preferences.
The Commands pane displays the calls made by the application, grouped by frame and draw call or by user markers.
Figure 1. Initial View of either an OpenGL or Vulkan traceFigure 2. Viewing an OpenGL traceFigure 3. Viewing a Vulkan traceFigure 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.
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:
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2023-02-01 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-02-01 UTC."],[],[],null,["# Commands pane\n\nThe Commands pane displays the calls made by the application, grouped by frame and draw call or by user markers.\n**Figure 1.**Initial View of either an OpenGL or Vulkan trace **Figure 2.**Viewing an OpenGL trace **Figure 3.**Viewing a Vulkan trace **Figure 4.**Searching for a command in a Vulkan trace\n\nOperations\n----------\n\nYou can perform the following operations in this pane:\n\n| Operation | Description |\n|------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Show result | Click a command or group to update the other panes to reflect the state after the selected command or group. |\n| 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. |\n| 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().` |\n| 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. |\n| 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. |\n| 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. |\n| 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. |\n\nOpenGL ES command hierarchy\n---------------------------\n\nOpenGL ES commands are translated to Vulkan, and the Vulkan commands are\nanalyzed. As a result, OpenGL ES commands are shown with both OpenGL ES and\nVulkan commands shown in the expanded hierarchy. In the preceding example, you can\nsee multiple `glDrawElement` commands under the `RenderPass`. The second\n`glDrawElements` command hierarchy was expanded, and shows **OpenGL ES Commands**\nand **DrawIndexed**. You can expand both of these hierarchies to show the\nrelated OpenGL ES commands, as well as the Vulkan commands that they were translated\ninto.\n\nBecause there isn't a one-to-one relationship between OpenGL ES and Vulkan,\nthere may be some differences. For example, a `glClear` command that occurs\nbefore the first `glDraw*` command appears before a `RenderPass`. If you expand\nthe hierarchy of the `glClear`, there will be no Vulkan commands. That is because\nthe clear will be deferred and done as part of starting the Vulkan `RenderPass`.\n\nDebug markers\n-------------\n\nDepending on your app, the **Commands** pane can contain a very long list of\ncommands within one frame. For better navigation and readability, you can define\ndebug markers that group calls together under a heading in the tree. This could\ninclude a grouping, for example, named \"Setup\" or \"Render World.\"\n\nIf debug markers are enabled, click the **Commands** pane to reveal a\nlink to this information. OpenGL ES has the following APIs to group commands:\n\n| EXTENSION / VERSION | PUSH | POP |\n|-----------------------------------------------------------------------------------------------|-------------------------|------------------------|\n| [KHR_debug](https://www.khronos.org/registry/gles/extensions/KHR/KHR_debug.txt) | `glPushDebugGroupKHR()` | `glPopDebugGroupKHR()` |\n| [EXT_debug_marker](https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt) | `String` | `String` |\n| [OpenGL ES 3.2](https://www.khronos.org/opengles/sdk/docs/man32/html/glPopDebugGroup.xhtml) | `String` | `String` |\n\nVulkan has the following APIs to group commands:\n\n| EXTENSION / VERSION | PUSH | POP |\n|-------------------------------------------------------------------------------------------------------------------------------|-------------------------|------------------------|\n| [VK_EXT_debug_marker](https://github.com/KhronosGroup/Vulkan-Docs/blob/1.0/doc/specs/vulkan/chapters/VK_EXT_debug_marker.txt) | `glPushDebugGroupKHR()` | `glPopDebugGroupKHR()` |"]]