紋理資料的記憶體頻寬可能會成為應用程式 GPU 效能的瓶頸。AGI 系統設定檔中有幾個計數器可協助診斷紋理記憶體頻寬問題。
Qualcomm Adreno 計數器
在搭載 Qualcomm Adreno GPU 的裝置上,一些值得注意的計數器包括:
| 計數器 | 說明 |
|---|---|
| 紋理記憶體讀取頻寬 (位元組/秒) | 從外部記憶體讀取的紋理資料頻寬。 |
| % Texture L1 Miss | 從擷取紋理發生 L1 快取失敗。 |
| % 非基本層級紋理 | mipmap 的紋理擷取百分比。 |
| 非均質過濾百分比 | 經過非均向性過濾的紋素百分比。 |
ARM Mali 計數器
在搭載 ARM Mali GPU 的裝置上,一些值得注意的計數器包括:
| 計數器 | 說明 |
|---|---|
| 從外部記憶體讀取紋理的節拍 | 紋理單元從外部記憶體讀取的資料節拍,在著色器核心中平均。 |
| 從 L2 快取讀取紋理 | 紋理單元從 L2 快取讀取的資料節拍,在著色器核心中取平均值。 |
| [更多] |
如要根據平均讀取節拍計算整體頻寬,請將計數器值乘以匯流排寬度 (通常為 16 個位元組) 和著色器核心總數。
計數器分析
如要測量這些計數器的行為,請測量單一 GPU 影格的平均和尖峰頻寬,然後以連續的 GPU 使用率區塊劃分。

建議平均紋理記憶體讀取頻寬不超過 1 GBps,尖峰頻寬不超過 3 GBps。紋理 L1 快取失敗的次數也不應超過 10%。頻寬或 L1 快取的值越高,可能表示紋理問題越嚴重,包括:
- 紋理所占空間過大:紋理過大會增加套件大小,而且成本較高,可能會降低快取效率。
- 紋理未壓縮:所有 Android 手機都支援某幾種紋理壓縮類型,無論是 ETC1 或 ASTC。紋理應壓縮,以縮減套件大小和紋理頻寬。
- 其他:應考量各種其他紋理問題,包括 2 的乘冪紋理、mipmap、非均質過濾等。如要觀察其中某些問題,可以查看下文所述的系統設定檔,其他問題則可能需要深入調查。
如果是具有自由相機的三維遊戲,紋理素材應使用 mipmap,這樣一來,遠離相機的物件就能減少記憶體頻寬、提升紋理快取效率,以及提高影像品質。如果是使用 Qualcomm Adreno GPU 的裝置,平均「非基本層級紋理」計數器低於 10%,可能表示 mipmapping 不足。

另一個考量因素是使用非均質過濾,這會由 Qualcomm Adreno GPU 的「% Anisotropic Filtered」(非等向性篩選的比例) 計數器說明,代表非等向性篩選的紋素比例。雖然這項功能可提升部分遊戲的畫質,但費用可能非常高,因此使用時應考量 GPU 效能成本。

如要診斷更具體的特定問題,最好的方法是擷取影格剖析追蹤記錄,然後分析紋理素材。