Frame profiling overview

With Android GPU Inspector (AGI), you can profile a specific frame of your Android app and use it to perform an in-depth analysis of the app's GPU usage. This profiling data can give you a deeper understand of your app's GPU usage than with system profiling alone.

Frame profiling with AGI starts by collecting traces and other performance data and then measuring and displaying it for analysis.

The available frame profiling data includes the following:

  • Vulkan API calls

  • Framebuffer content

  • Rendered mesh draw calls

  • RAM and GPU memory values for commands

  • GPU performance data for rendering events

  • Pipeline data

  • Render state data

  • Texture and shader resources

Get started

The AGI quickstart describes how to set up AGI, capture frame profile data, and then open the resulting trace file. The next section describes the configuration options in more detail.

Profiling options

This sections describes the main options that are available when you capture a frame profile.

Graphics API options

The Graphics API options indicate the graphics API used by your app. The options are available in the Type list of the Capture System Profile dialog. These are the available options:

  • Vulkan: for apps that use the Vulkan API directly.
  • OpenGL on ANGLE: for apps that use OpenGL ES.

AGI traces Vulkan commands directly. However, if your app uses OpenGL ES, AGI uses a custom ANGLE build to translate the commands into Vulkan commands before tracing the app.

Additional arguments

The Additional Arguments field is for passing additional flags to the adb am start-activity command, which is sent to your device to start your app during profiling. For more information, see adb commands.

Start and duration options

In the Start and Duration section, you can specify how AGI captures the frame to profile. The following options are available:

  • Beginning: AGI captures all commands from application startup to the end of the first rendered frame.

  • Manual: Press a button in the tracing dialog to manually capture the frame.

  • Time: AGI automatically captures a frame after the given number of seconds elapse.

  • Frame: AGI automatically captures the specified frame.

Trace options

The Trace Options section contains settings that configure tracing flags. These are the available settings:

  • Disable Buffering: Disable memory buffering on the device when capturing data. This option is useful for debugging an app crash because it ensures that all tracing data is serialized up to the crash. However, it slightly increases the overhead of AGI during profiling.

  • Include Unsupported Extensions: Include extensions that are not supported by AGI on the device. If your app uses an extension that isn't supported by AGI, you might encounter undesirable behavior, including subtle errors or crashes, when replaying the trace. Browse a list of supported extensions.

  • Clear Package Data: Use the pm clear adb command to request that the device clear your app's user data before launching.

Output settings

The Output section contains settings for trace file storage, such as:

  • Specify the directory to store the trace file.

  • Modify the automatically generated file name for the trace file.

View the results

When you open a trace file that contains frame profiling data, AGI displays the data in the Frame Profiler UI for analysis.

Frame Profiler is the AGI component that manages the UI and instrumentation for profiling an individual frame. Frame Profiler displays data in the following UI elements:

Analyze the results

These topics describe how to analyze frame profiling data with AGI: