頂点データのメモリ帯域幅は、ゲームの GPU パフォーマンスのボトルネックになる可能性があります。AGI システム プロファイルには、頂点のメモリ帯域幅の問題を診断するのに役立つカウンタがいくつかあります。
Qualcomm Adreno カウンタ
Qualcomm Adreno GPU を搭載したデバイスでは、次のようなカウンタが注目されます。
| カウンタ | 説明 |
|---|---|
| 頂点のメモリ読み取り | 外部メモリから読み取られた頂点データの帯域幅。 |
| 頂点ごとの平均バイト数 | 頂点データの平均サイズ(バイト単位)。 |
| % 頂点のフェッチ ストール | GPU が頂点データでブロックされているクロック サイクルの割合。 |
ARM Mali カウンタ(作業中)
ARM Mali GPU を搭載したデバイスでは、次のようなカウンタが注目されます。
| カウンタ | 説明 |
|---|---|
| 外部メモリからの読み取りビートのロード/ストア | シェーダー コアで平均化された、ロード/ストアユニットによって外部メモリから読み取られたデータビート。 |
| L2 キャッシュからの読み取りビートのロード/ストア | シェーダー コアで平均化された、ロード/ストアユニットによって L2 キャッシュから読み取られたデータビート。 |
| [詳細] |
平均読み取りビートから全体の帯域幅を計算するには、カウンタ値にバス幅(通常は 16 バイト)とシェーダー コアの合計数を掛けます。[詳細]
カウンタ分析
これらのカウンタの動作を測定するには、1 つの GPU フレームの平均帯域幅とピーク帯域幅を測定します。これは、GPU 使用率 の連続するブロックで区切ることができます。
頂点のメモリ読み取り帯域幅のピークは 1.5 GBps 以下、平均帯域幅は 500 MBps 以下にすることをおすすめします。値が大きい場合は、次のような一般的な問題のいずれかを示しています。
- 頂点のサイズが大きすぎる: 頂点に大きな頂点属性があるか、多数の頂点属性があるため、頂点のシェーディング時間が大幅に長くなる可能性があります。
- 頂点属性ストリームが分割されていない: 頂点属性が 1 つのバッファにインターリーブされているため、キャッシュ効率が低下します。
- フレームごとに送信される頂点が多すぎる: 複雑なモデルや多数のモデルでは、帯域幅が大きくなり、シェーディングに時間がかかることがあります。
頂点のサイズの問題は、[頂点ごとの平均バイト数] トラックでも診断できます。このトラックは、32 バイトまたは頂点以下にすることをおすすめします。
これらの問題のどれが発生しているかを診断する最善の方法は、フレーム プロファイル トレースを取得して頂点の形式を分析することです。