本主题介绍了如何解决使用 Android GPU 检查器时的常见问题 (AGI) 。
重置 AGI 设置
AGI 将其设置存储在 ~/.agic
文件中。
移除此文件会删除所有 AGI 设置,包括
最近打开的跟踪记录和设备验证结果。
AGI 在某些设备上无法使用
请确保您的设置符合所有 要求。
以下设置也会有所帮助:
停止任何可能通过 adb 与设备交互的程序,如 Android Studio。
启用
Stay awake
选项(在 Android 上的“开发者选项”下)可执行以下操作: 防止设备屏幕因睡眠模式而关闭时出现的问题。
系统性能分析器不报告 OpenGL ES 游戏的 GPU 活动
目前,在跟踪 OpenGL ES 时,仅支持 GPU 计数器 应用。OpenGL ES 应用的 GPU 活动信息处于活跃状态 开发。
帧性能分析器在某些 Vulkan 游戏中会失败
首先要验证的是您的游戏是否正确使用了 Vulkan。 使用 Vulkan 验证层 并确保您的游戏不会发出任何错误或警告。
如果存在任何 Vulkan 验证错误,则不需要 AGI 帧性能分析器 工作。
创建帧性能分析器轨迹时游戏失败
如果游戏在没有 AGI 的情况下成功运行,但在创建帧时无法正常运行 配置文件轨迹,那么游戏可能会在启动过程中分叉不同的进程 序列。在这种情况下,您需要指定要跟踪的进程的名称 “进程名称”跟踪选项中的字段。
如需找出此问题,您可以在创建轨迹时检查 logcat 输出 并验证是否启动了其他进程:
# Clear the logcat output
adb logcat -c
## Use AGI to attempt to create a frame profile trace
Look at the logcat output to identify the processes that are running AGI.
adb logcat | grep "this process name"
I GAPID : gapii [gapii/cc/spy.cpp:109] this process name: com.example.mygame
I GAPID : gapii [gapii/cc/spy.cpp:109] this process name: com.example.mygame:GameProcess
大多数游戏只有一个进程,上面的示例展示了 是具有多个进程的游戏
游戏从名为 com.example.mygame
的主进程开始,然后派生
名为 com.example.mygame:GameProcess
的新进程。
如果实际的游戏渲染发生在第二个进程中,那么您必须告知
AGI,确认这是要跟踪的进程。
为此,您可以在Process name
跟踪选项对话框
使用 AGI 后游戏失败
如果跟踪记录未正确终止,AGI 可能会将一些 Android 设置留在 可能会中断应用后续运行的状态。这些设置包括:
Vulkan 层相关设置:
enable_gpu_debug_layers
gpu_debug_app
gpu_debug_layers
gpu_debug_layer_app
与 ANGLE 相关的设置:
angle_debug_package
angle_gl_driver_selection_values
angle_gl_driver_selection_pkgs
如果您的应用在使用 AGI 后出现任何问题,您可以尝试清除这些 设置:
# Vulkan layers
adb shell settings delete global enable_gpu_debug_layers
adb shell settings delete global gpu_debug_app
adb shell settings delete global gpu_debug_layers
adb shell settings delete global gpu_debug_layer_app
# ANGLE
adb shell settings delete global angle_debug_package
adb shell settings delete global angle_gl_driver_selection_values
adb shell settings delete global angle_gl_driver_selection_pkgs
在创建帧配置文件轨迹时通过 AGI 启动游戏时,游戏看起来有所不同
为了创建帧配置文件轨迹,AGI 会拦截 这可能会影响游戏渲染。
AGI 会捕获 Vulkan 调用。对于 OpenGL ES 游戏,AGI 依赖于 ANGLE,用于翻译 OpenGL ES Vulkan。 如果游戏的外观有所变化(例如,某些颜色不是您期望的颜色), 则可能是 AGI 或 ANGLE 中的 bug。 您可以通过以下方式帮助我们更好地了解问题的根本原因: 请尝试执行以下操作。
Vulkan 游戏:支持所有 Vulkan 扩展的轨迹
Include Unknown Extensions(包含未知扩展)跟踪选项用于控制 AGI 是否应 包含它不支持的 Vulkan 扩展。(浏览 支持的扩展程序列表)。
如果您的应用使用 AGI 不支持的扩展程序,您可能会遇到 重放 跟踪记录。
请尝试启用此选项,然后启动另一个帧性能分析器轨迹。如果比赛 在启用此选项的情况下按预期显示,游戏可能依赖于 Vulkan 扩展。
OpenGL ES 游戏:仅使用 ANGLE 运行
您可以使用 ANGLE 运行 OpenGL ES 游戏,但不使用 AGI,看看 呈现是否源于 ANGLE 中的一个问题。
如果您已尝试创建 OpenGL ES 的帧配置文件轨迹
表明 AGI 已经在您的设备上安装了 ANGLE。由 Kubernetes API 使用的
AGI 名为 org.chromium.angle.agi
。
如需强制在 ANGLE 上运行游戏,请使用以下命令:
# Make sure that the AGI capture layer will be ignored
adb shell settings delete global enable_gpu_debug_layers
# Force the package com.example.mygame to use ANGLE
adb shell settings put global angle_debug_package org.chromium.angle.agi
adb shell settings put global angle_gl_driver_selection_values angle
adb shell settings put global angle_gl_driver_selection_pkgs com.example.mygame
如果游戏在这些设置下看起来有所不同,那么这可能是 ANGLE,而不是 AGI。如果采用这些设置后游戏看起来没有问题,但看起来 则可能是 AGI 中的 bug。
要报告 AGI bug,您可以创建 GitHub 问题。