首页 > 技术文章 > Adreno GPU Profiler工具使用总结

kane0526 2018-05-15 12:02 原文

Adreno Profiler介绍

        Adreno Profiler 是高通公司开发的一款针对运行在高通骁龙处理器上用于图形和GPGPU技术应用的性能分析和帧调试工具。工具本质上是一个OpenGL ES Draw Call Replay,此要求PC端也必须支持手机端设备的 OpenGL ES 所有特征。由于这个工具是高通提供的,所以只能运行在高通芯片的安卓机上。

 

Adreno Profiler连接方式

1、adb连接:可以直接下载一个Android SDK,platform-tools下有个adb.exe执行程序,配置好环境变量。

2、ip连接:PC开设一个共享wifi,手机连接这个wifi,用wifi显示的ip地址进行连接。

 

Adreno Profiler性能测试

  • 监测实时的GPU性能
  • 捕获一帧,然后依照API的调用依次调试
  • 分析每一次调用Draw 函数的性能
  • 查看texture、programe、shader和其他的资源
  • 查看shader统计(vertex shader/ fragment shader/shader busy)

Adreno Profiler基本步骤

1、连接前提:高通芯片手机一部,所运行的app支持相关Android网络权限。在电脑打开Adreno Profiler,点左上角的Connect。

     连接方式:手机插到电脑上使用adb连接,或者在同一局域网内使用IP连接。准备好之后点击Refresh,直至刷出对应的设备和应用。

     双击出现的设备和应用进入连接。

 

2、点击Scrubber GL弹出抓取界面,然后点击Capture Frame抓取某一帧画面,等待一段时间即可。等待阶段切勿重复抓取,可能会导致卡死现象。第一次抓取可能会没有数据,可以再抓取一次试试。

tips:抓取完成之后,可以点击上方的Save将帧数据保存成apr文件,这样可以之后Open,省的每次分析都需要连接手机、打开游戏。

 

3、在上图中,可以看到“Render Calls”一栏,其实是抓取了一帧中所有GL部分的调用及相关数据,然后按照绘制命令组织。当选中不同的Render Call时,工具会显示从一开始到这一个命令的绘制结果,方便看到每一个中间过程。此外,在API Calls中,还可以看到每一个Render Call之前的其他命令,包括各种对GL状态机的修改,具体的顶点信息也能看到。

 

4、如果想看其他数据项,在Capture Frame之前,点击Metrics选项开启需要观察的数据项。如果想对shader进行性能分析,可以开启Vertices Shaded和Fragment Shaded,抓帧之后能看到对应顶点shader和片段shader数据了,主要观察Fragment Shaded,一般对Fragment Shaded数据参考标准是70W个。

 

5、就纹理来说,在右边可以看到所有显存里的纹理资源,点开可以看到具体的纹理参数和缩略图。在上面有一个小的按钮,可以将所有纹理都保存成一个个文件,可以开启minimaps view查看纹理图。

 

6、就Shader来说,同样也是可以看到所有Program,工具还会贴心的标出所有利用了该Shader的Render Call,下面可以看到反汇编出来的指令:

tips:有些机型能测试的机型不一定能看到反汇编出shader指令,也可能和Android版本有关,多用几台机型测试。

 

7、就模型来说,选中一个Render Call然后Save Vertex Data就可以导出Obj了,但是生成的文件还需要修改下才能导入,主要是修改命名,具体打开看看obj文件长啥样的。

具体学习可以参考 obj文件格式详解

 

8、Adreno Profiler 提供了实时的GPU的监控, 其中提供了大量的监测点,可以实时的查看GPU的情况, 点击菜单栏中的”Grapher“,有两个子菜单”App metrics Graph“和”Global metrics Graph“,并不是所有的手机支持后者,且在使用IP连接的时候,后者也是无法使用的。选中"App Metrics Graph", 查看GPU的实时数据。

tips:如果打开没有数据曲线,可以从右边把相应的想观察的数据项拖进来。

 

总结:Adreno Profiler提供了一些很方便的可视化功能,譬如选中一个纹理或者Shader,可以标记出所有使用该资源的Render Call,选中Render Call的时候会在屏幕上标记其绘制效果,总之很方便的工具一只。

 

推荐阅读