雲計算

如何快速定位Android端GPU问题之工具介绍

GAPID

GAPIDGoogle下的一个开源库,可用于记录发送给GPU的API调用及渲染状态检查,目前主要用于Android端,对OpenGL ES及Vulkan的支持最完善,使用此工具可以协助定位排查端上OpenGL ES的渲染效果、渲染状态及错误、渲染绑定的shader等资源,同时可以即时修改渲染每步中的变量值并查看新的渲染效果。

下载安装

下载地址:https://github.com/google/gapid/releases
当前最新的稳定版本是1.6.1,也可以下载开发版1.7.0,注意开发版本更新比较频繁,也可能会出现运行过程中崩溃问题,建议使用稳定版本。下载后默认安装即可。

环境配置

启动界面如下图
image.png

选择Capture a new trace,如下图我的机器上的默认设置
image.png

注意:如果第一行Device无法显示,可以点击右侧图标刷新,如果刷新后还不能显示,需要手动安装。

如我的安装路径在/Applications/GAPID.app/Contents/MacOS

  ~ cd /Applications/GAPID.app/Contents/MacOS
  MacOS ll
total 438240
-rwxr-xr-x@ 1 xunshan  admin   197B  7 26 18:28 build.properties
-rwxr-xr-x  1 xunshan  admin   2.0M  7 26 18:44 device-info
-rwxr-xr-x  1 xunshan  admin   1.8M  7 26 18:44 gapid
-rwxr-xr-x@ 1 xunshan  admin   5.0M  7 26 18:28 gapid-arm64-v8a.apk
-rwxr-xr-x@ 1 xunshan  admin   4.1M  7 26 18:28 gapid-armeabi-v7a.apk
-rwxr-xr-x@ 1 xunshan  admin   5.7M  7 26 18:28 gapid-x86.apk
-rwxr-xr-x  1 xunshan  admin   4.7M  7 26 18:44 gapir
-rwxr-xr-x  1 xunshan  admin   174M  7 26 18:44 gapis
-rwxr-xr-x  1 xunshan  admin    17M  7 26 18:44 gapit
drwxr-xr-x  9 xunshan  admin   288B  7 26 18:28 jre
drwxr-xr-x  7 xunshan  admin   224B  7 26 18:44 lib
drwxr-xr-x  3 xunshan  admin    96B  7 26 18:28 strings

如果你的app为32位,则安装gapid-armeabi-v7a.apk,否则64位安装gapid-arm64-v8a.apk,安装成功后再进入gapid界面更新选择设备。

设置完成后点击OK,此时手机会开始安装选择调试的app,如下图
image.png

注意:启动gapid时,需要将android studio退出,否则gapid无法正常启动app。

app安装调试信息成功后会自动启动运行,此时gapid如下图
image.png

此时可以操作app,当你需要抓取gpu操作时,则点击start

抓取完成后,界面会显示抓取的内存容量,点击Open Trace开始分析。
image.png

然后gapid会打开抓取的内容,如果有多个context,可以进行切换查看不同上下文抓取到的内容。
image.png

下排左侧Commands表示抓到的图像并draw calls,中间可以预览图像,右侧则可以查看相应api的参数、内存值及shader等gpu资源的具体信息。

后续会举一些实际工作中遇到的例子,如渲染效果异常、性能分析、显存泄漏等gpu相关问题讲解具体如何使用gapid工具分析抓取到的内容以定位问题的原因并解决。

Leave a Reply

Your email address will not be published. Required fields are marked *