GAPID
GAPID
是Google
下的一个开源库,可用于记录发送给GPU的API调用及渲染状态检查,目前主要用于Android端,对OpenGL ES及Vulkan的支持最完善,使用此工具可以协助定位排查端上OpenGL ES的渲染效果、渲染状态及错误、渲染绑定的shader等资源,同时可以即时修改渲染每步中的变量值并查看新的渲染效果。
下载安装
下载地址:https://github.com/google/gapid/releases
当前最新的稳定版本是1.6.1,也可以下载开发版1.7.0,注意开发版本更新比较频繁,也可能会出现运行过程中崩溃问题,建议使用稳定版本。下载后默认安装即可。
环境配置
启动界面如下图
选择Capture a new trace
,如下图我的机器上的默认设置
注意:如果第一行
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,如下图
注意:启动gapid时,需要将android studio退出,否则gapid无法正常启动app。
app安装调试信息成功后会自动启动运行,此时gapid如下图
此时可以操作app,当你需要抓取gpu操作时,则点击start
。
抓取完成后,界面会显示抓取的内存容量,点击Open Trace
开始分析。
然后gapid会打开抓取的内容,如果有多个context,可以进行切换查看不同上下文抓取到的内容。
下排左侧Commands
表示抓到的图像并draw calls,中间可以预览图像,右侧则可以查看相应api的参数、内存值及shader等gpu资源的具体信息。
后续会举一些实际工作中遇到的例子,如渲染效果异常、性能分析、显存泄漏等gpu相关问题讲解具体如何使用gapid工具分析抓取到的内容以定位问题的原因并解决。