紋理資料的記憶體頻寬可能是應用程式 GPU 效能的潛在瓶頸。AGI 系統設定檔有一些計數器,可以協助診斷紋理記憶體頻寬問題。
Qualcomm Adreno 計數器
在搭載 Qualcomm Adreno GPU 的裝置上,一些著名的計數器包括:
議價 | 說明 |
---|---|
紋理記憶體讀取 BW (位元組/秒) | 從外部記憶體讀取的紋理資料頻寬。 |
紋理 L1 失敗百分比 | L1 快取失敗,無法擷取紋理。 |
非基準紋理百分比 | 為 mipmap 的紋理擷取百分比。 |
非均質過濾量百分比 | 非均質過濾的紋素百分比。 |
ARM Mali 計數器
在搭載 ARM Mali GPU 的裝置上,一些著名的計數器包括:
議價 | 說明 |
---|---|
外部記憶體的紋理讀取節拍 | 根據紋理單位從外部記憶體讀取的資料訊號,在著色器核心的平均值。 |
來自 L2 快取的紋理讀取節拍 | 紋理單元從 L2 快取讀取的資料訊號,是著色器核心的平均值。 |
[更多] |
為了根據平均讀取訊號計算整體頻寬,計數器值會乘以匯流排寬度 (通常為 16 個位元組) 和著色器核心總數。
計數器分析
如要測量這些計數器的行為,請測量單一 GPU 影格的平均值和尖峰頻寬,然後依循連續的 GPU 使用率區塊加以劃分。
建議的平均紋理記憶體讀取頻寬不超過 1 GBps,且尖峰頻寬不超過 3 GBps。紋理 L1 快取失敗也不應超過 10%。頻寬值或 L1 快取值越高,可能表示紋理問題更深入,包括:
- 紋理過大:大型紋理會凸顯套件大小,且較昂貴,可能會降低快取效率。
- 未壓縮的紋理:所有 Android 手機都支援某些類型的紋理壓縮 (無論是 ETC1 或 ASTC)。您應壓縮紋理,以減少套件大小及減少紋理頻寬。
- 其他:應考量各種其他紋理問題,包括 2 種紋理、mipmap 和非均質過濾等。其中有些可能是從系統設定檔觀察到的,有些則需要進一步調查。
如果是配備免費相機的 3D 遊戲,紋理資產應使用 mipmapping,讓距離相機遠處的物件能夠降低記憶體頻寬、改善紋理快取效率,以及提升影像品質。對於使用 Qualcomm Adreno GPU 的裝置,平均如果非基本程度紋理計數器低於 10%,可能表示 inadequate mipmapping。
另一個考量因素是使用非均質過濾,如 Qualcomm Adreno GPU 的 % 非均質過濾計數器功能,可瞭解非均質過濾的紋素比例。雖然這樣或許能提升部分遊戲的視覺品質,但也可能非常昂貴,而且使用時應與 GPU 效能成本相同。
如要診斷更具體的問題,最好的方法是執行影格設定檔追蹤記錄來分析紋理資產。