本主题介绍如何修复使用 Android GPU Inspector (AGI) 时遇到的常见问题。
重置 AGI 设置
AGI 将其设置存储在 ~/.agic
文件中。删除此文件会删除所有 AGI 设置,包括最近打开的跟踪列表和设备验证结果。
AGI 在某些设备上失败
请确保您的设置满足所有 要求。
以下内容也有助于解决问题
停止任何可能通过 ADB 与设备交互的程序,例如 Android Studio。
启用
保持唤醒状态
选项(在 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 这是您想要跟踪的进程。您可以通过在跟踪选项对话框的 进程名称
字段中输入进程的名称来实现。
使用 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 后遇到任何问题,您可以尝试使用以下 adb 命令清除这些设置
# 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 会拦截游戏发出的图形 API 调用,这可能会影响游戏渲染。
AGI 捕获 Vulkan 调用。对于 OpenGL ES 游戏,AGI 依靠 ANGLE 将 OpenGL ES 转换为 Vulkan。如果您的游戏在通过 AGI 启动时外观有所不同(例如,某些颜色与您期望的颜色不同),则可能是 AGI 或 ANGLE 中的错误。您可以通过尝试以下操作帮助我们更好地了解问题的根本原因。
Vulkan 游戏:使用所有支持的 Vulkan 扩展进行跟踪
**包含未知扩展** 跟踪选项控制 AGI 是否应包含其不支持的 Vulkan 扩展。(浏览 支持扩展列表。)
如果您的应用程序使用 AGI 不支持的扩展,则在回放跟踪时可能会遇到不良行为,包括细微的错误或崩溃。
尝试启用此选项,然后启动另一个帧分析跟踪。如果游戏在启用此选项时按预期显示,则游戏可能依赖于 AGI 不支持的 Vulkan 扩展。
OpenGL ES 游戏:仅使用 ANGLE 运行
您可以使用 ANGLE 但不使用 AGI 运行 OpenGL ES 游戏,以查看错误渲染是否来自 ANGLE 中的问题。
如果您已尝试创建 OpenGL ES 游戏的帧分析跟踪,则 AGI 已在您的设备上安装了 ANGLE。AGI 使用的 ANGLE 软件包名为 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 跟踪时外观有所不同,则可能是 AGI 中的错误。
您可以通过创建 GitHub 问题 报告 AGI 错误。