顶点数据的内存带宽可能会成为游戏 GPU 性能的瓶颈。AGI 系统配置文件中有一些计数器有助于诊断顶点内存带宽问题。
Qualcomm Adreno 计数器
在配备 Qualcomm Adreno GPU 的设备上,一些值得注意的计数器包括:
还价 | 说明 |
---|---|
顶点内存读取 | 从外部内存读取的顶点数据的带宽。 |
平均字节数/顶点 | 顶点数据的平均大小(以字节为单位)。 |
顶点提取暂停百分比 | GPU 使用顶点数据的时钟周期百分比。 |
ARM Mali 计数器 (WIP)
在采用 ARM Mali GPU 的设备上,一些值得注意的计数器包括:
还价 | 说明 |
---|---|
从外部内存加载/存储读取节拍 | 从外部内存读取的数据依次按加载/存储单元(在着色器核心上取平均值)。 |
从 L2 缓存加载/存储读取节奏 | 从 L2 缓存中读取的数据依次按加载/存储单元(在着色器核心上取平均值)。 |
[更多] |
要根据平均读取节拍数计算总带宽,请将计数器值乘以总线宽度(通常为 16 个字节)与着色器核心总数。[更多]
计数器分析
如需测量这些计数器的行为,您可以测量单个 GPU 帧的平均带宽和峰值带宽,您可以使用连续的 GPU 利用率块来描述这一过程。
![单个帧的顶点内存读取带宽,平均值为 327 MBps,峰值为 1.16 GBps](https://developer.android.google.cn/static/images/agi/vertex-memory-bw-images/sample_vert_bw.png?authuser=6&hl=ro)
我们建议顶点内存读取带宽不要高于 1.5 GBps,平均带宽不高于 500 MBps。如果数值较高,则表示存在一些常见问题:
- 顶点大小过大:顶点可能具有较大的顶点属性或大量的顶点属性,因此会大幅影响顶点着色时间。
- 顶点属性流不拆分:顶点属性交错到单个缓冲区,降低了缓存效率。
- 每帧提交的顶点过多:复杂的模型和/或大量的模型可能会占用更高的带宽,需要更长的时间才能着色。
顶点大小问题也可以通过平均字节数 / 顶点轨迹诊断,我们建议不超过 32 个字节或顶点。
![单个帧的平均顶点大小,平均值为 31.3 字节](https://developer.android.google.cn/static/images/agi/vertex-memory-bw-images/sample_bytes_per_vert.png?authuser=6&hl=ro)
诊断您可能遇到的这些问题的最佳方法是通过帧配置文件轨迹来分析顶点格式。