英文原文:https://developer.arm.com/documentation/101545/0511/?lang=en
1. 介绍
1.1 约定
以下小节描述了 Arm 文档中使用的约定。
词汇表
Arm® 词汇表是 Arm 文档中使用的术语列表,以及这些术语的定义。 Arm 术语表不包含行业标准术语,除非 Arm 的含义与普遍接受的含义不同。
排版约定
约定 | 含义 |
---|---|
斜体 | 引文 |
加粗 | 突出显示界面元素,例如菜单名称。在适当的情况下,也用于描述性列表中的术语。 |
等宽字体 | 表示您可以在键盘上输入的文本,例如命令、文件和程序名称以及源代码。 |
等宽字体加下划线 | 表示命令或选项的允许缩写。 您可以输入带下划线的文本而不是完整的命令或选项名称 |
等宽字体 斜体 | 表示等宽文本的参数,其中参数将被特定值替换 |
< 尖括号 > | 包含汇编程序语法的可替换术语,它们出现在代码或代码片段中。 例如:MRC p15, 0, < Rd >, < CRn >, < CRm >, < Opcode_2 > |
小写字母 | 在正文中用于一些具有特定技术含义的术语,这些术语在 Arm® 词汇表中定义。 例如,实施定义、实施特定、未知和不可预测。 |
1.2 其他信息
有关其他相关信息,请参阅 Arm® 网站。
2. Graphics Analyzer概述
Graphics Analyzer 是一种工具,可帮助 OpenGL ES 和 Vulkan 开发人员通过 API 级别的分析充分利用其应用程序。
该工具允许您观察 API 调用参数和返回值,并与正在运行的目标应用程序交互以调查单个 API 调用的影响。 它突出了 API 滥用的企图,并给出了改进建议。
如需 Arm 和其他开发人员的帮助和支持,请访问 Arm 图形和游戏社区。
2.1 使用 Graphics Analyzer
Graphics Analyzer 使您能够探索 Android 应用程序的图形输出,并识别可能导致性能问题的场景。 它捕获应用程序在目标设备上运行时进行的每个 OpenGL ES 或 Vulkan API 调用。
使用 Graphics Analyzer 评估每个绘图调用的影响并寻找优化性能的机会,例如:
- 要检查细节级别是否合适,请查看对象几何旁边的 framebuffer 输出
- 要检查多次不必要着色的像素,请捕获场景中的过度绘制级别
- 查找最昂贵的着色器以及它们在场景中的使用位置。
- 检查纹理格式和使用的压缩级别。
要查看运行中的图形分析器,请观看此视频。
图 2-1:图形分析器用户界面
检查 API 行为
Graphics Analyzer 向您显示应用程序在您连接的设备上运行时进行的所有函数调用。 此信息可帮助您准确了解应用程序从图形系统请求的内容以及系统返回的内容。 然后,您可以调查系统状态随时间变化的方式和原因。
在每个函数调用中,查看应用程序正在使用的当前分配的缓冲区对象、着色器和纹理,以及它们的属性。
Graphics Analyzer 报告 API 使用不当等问题。 例如,传递非法参数或已知会对性能产生不利影响的任何问题。
图 2-2:跟踪分析视图
帧缓冲输出
查看每个帧缓冲区的视觉输出,以及颜色、深度和模板附件。 逐步执行绘制调用以查看帧是如何组成的。
图 2-3:带有颜色和深度附件的帧缓冲区视图
Geometry
查看帧缓冲区输出旁边的几何图形可以帮助您评估细节级别是否适合场景中的对象。 逐步检查每个绘图调用以查看对场景的影响以及您是否可以通过以下方式提高性能:
- 降低网格的复杂性。
- 对远离相机的对象使用细节层次网格。
图 2-4:几何视图
Fragment 计数分析
如果场景有太多 Fragment 需要处理,或者 Fragment 太昂贵而无法有效处理,您可能会看到性能下降。 在 Graphics Analyzer 中,您可以分析每个着色器处理的 Fragment 数量,以及大致的周期成本和寄存器使用情况。
图 2-5:Fragment 计数分析与着色器程序源
Overdraw
如果内容具有高度的过度绘制,它的性能可能会很差,因为着色多个图层的累积成本。 即使层很简单,也可能会出现性能不佳的情况,尤其是对于以高分辨率和帧速率运行的设备。 为了在图形分析器中显示过度绘制,场景区域被白色覆盖,每个输出像素都有多个片段被着色。 区域越白,透支越多。
图 2-6:显示过度绘制分析的帧缓冲区视图
着色器分析
查看场景的每个部分使用了哪些着色器。 着色器贴图可帮助您检测分配了不正确着色器的问题。 它还可以帮助您找到对游戏性能影响最大的最昂贵的着色器。 这些着色器可以通过降低其复杂性或减少它们必须处理的片段数量来进行优化。
图 2-7:显示着色器映射分析的帧缓冲区视图
开始使用
使用图形分析器捕获数据很容易。 您的设备必须处于开发者模式并启用 USB 调试。 图形分析器通过 USB 连接到设备,并在设备上运行时捕获您的应用程序。 当您遇到问题区域时,暂停图形分析器并捕获额外的帧数据,例如帧缓冲区输出、着色器映射或过度绘制级别。
有关完整详细信息,请参阅第 32 页的 4. 入门
2.2 安装包
Graphics Analyzer 可用于 Arm Mobile Studio 或 Arm Development Studio 产品套件。 安装包包含您开始研究 GPU 应用程序所需的一切。
根据适合您平台的软件包,下载 Arm Mobile Studio 或 Arm Development Studio。 Graphics Analyzer 可用于 Windows、Linux 和 macOS。
安装包包含三个主要组件:
- 图形用户界面应用程序
- 目标拦截器组件
- 样本捕获。
安装 Graphics Analyzer 后,主机上提取的目录层次结构包含一个目标目录,其中包含以下子目录:
Arm Mobile Studio 用户
android/arm/
包含用于基于 Android 的 Arm®v7(32 位)目标设备的守护程序和图形分析器拦截器。
android/arm64/
包含用于基于 Android 的 Arm®v8 或更高版本(64 位)目标设备的守护程序和图形分析器拦截器。
Arm Development Studio 用户
linux/arm_softfloat/
包含用于基于 Linux 的 Arm®v7 或 Arm®v8(32 位)目标设备的守护程序和图形分析器拦截器。
linux/arm_hardfloat/
包含用于基于 Linux 的 Arm®v7 或 Arm®v8(32 位)hard-float 目标设备的守护程序和图形分析器拦截器。
linux/arm64_glibc/
包含用于使用 glibc C 库的基于 Linux 的 Arm®v8 或更高版本(64 位)目标设备的守护程序和图形分析器拦截器。
linux/arm64_musl/
包含用于使用 MUSL C 库的基于 Linux 的 Arm®v8 或更高版本(64 位)目标设备的守护程序和图形分析器拦截器。
许可证
Graphics Analyzer 包含许可证管理的功能,这些功能只有在通过可用的商业许可证之一启用时才能访问。 根据购买的产品,许可证适用于每用户或每台机器:
- 要激活每用户许可证,请在图形用户界面中选择 Help > License Management。 您还可以使用独立许可证管理实用程序 armlm-gui 激活每用户许可证,您可以在 studio 安装中找到它
- 要激活 Arm Development Studio 的每台机器许可证,请使用主 Development Studio IDE。 Arm Mobile Studio 许可证必须使用环境变量激活,如 Arm Developer 网站上的添加专业许可证中所述。