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](https://developer.android.com/static/images/agi/command-pane-images/command-pane-1.png)**Figure 1.**Initial View of either an OpenGL or Vulkan trace![Viewing an OpenGL trace](https://developer.android.com/static/images/agi/command-pane-images/command-pane-2.png)**Figure 2.**Viewing an OpenGL trace![Viewing a Vulkan trace](https://developer.android.com/static/images/agi/command-pane-images/command-pane-3.png)**Figure 3.**Viewing a Vulkan trace![Viewing a Vulkan trace](https://developer.android.com/static/images/agi/command-pane-images/command-pane-4.png)**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. <br /> 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](https://developer.android.com/static/images/agi/command-pane-images/command-pane-5.png)

## 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](https://www.khronos.org/registry/gles/extensions/KHR/KHR_debug.txt)               | `glPushDebugGroupKHR()` | `glPopDebugGroupKHR()` |
| [EXT_debug_marker](https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt) | `String`                | `String`               |
| [OpenGL ES 3.2](https://www.khronos.org/opengles/sdk/docs/man32/html/glPopDebugGroup.xhtml)   | `String`                | `String`               |

Vulkan has the following APIs to group commands:

|                                                      EXTENSION / VERSION                                                      |          PUSH           |          POP           |
|-------------------------------------------------------------------------------------------------------------------------------|-------------------------|------------------------|
| [VK_EXT_debug_marker](https://github.com/KhronosGroup/Vulkan-Docs/blob/1.0/doc/specs/vulkan/chapters/VK_EXT_debug_marker.txt) | `glPushDebugGroupKHR()` | `glPopDebugGroupKHR()` |