在上一篇文章中,我闡述了如何使用PVRTune GPU性能記錄工具中的時間數據和高級計數器識別Fantasy Warrior 3D演示在基于PowerVR的目標設備上運行時是否受CPU限制。
本文中,我將描述一些PVRTune的高級分析計數器,并闡述如何使用這些計數器更好地分析GPU工作負載。
每三角形的頂點值
每個三角形的頂點數都有一個平均值。輸入的頂點數量除以輸入的三角形數量便是這個平均值。此計數器顯示了已轉化的頂點如何在三角形中實現共享。
這個值在最大值3(表明沒有共享且每個三角形每頂點都有一個索引)及數值接近或低于1中進行變化。數值越低,則待處理的幾何圖形最優。
如果對幾何數據進行合理分類,便可以提高頂點處理的效率。一般要遵循的原則是:指數緩沖區中領近三角形之間共享的頂點數越多,每個三角形頂點值則越低。
在這款游戲中,每三角形頂點值是1.5,則意味著比理想值(每三角形頂點值< = 1)略高。為獲得最佳性能,三角形應按空間位置來分類,以提高轉化后頂點的緩存效率。
可以使用Imagination的三角形分類算法來優化網格。最新發布的PowerVR圖形SDK v4.0中包含了此分類算法(可查閱PVRTGeometry.h文件)。
三角形剔除
這個值表示數據寫入參數緩沖區之前經剔除后轉化的三角形百分比。這些剔除的三角形包括子像素、背面和離屏多邊形。
在這款游戲中,該值(80.2%)非常高。這意味著GPU已經浪費了很多時間處理被貼圖排斥的多邊形(GPU –貼圖負載)。可以使用PVRTrace決定是否存在很多離屏多邊形或者背面剔除是否總是失效。
HSR效率
該計數器可以展示隱面消除(HSR)的有效性 (更多關于HSR的信息點擊此處),其在處理之前排除了模糊的像素。這可表示用來著色的像素與提交總像素的百分比。
任何被不透明的多邊形阻擋且任何不可見的像素在早期都是被排除的。這樣可避免不可見像素的處理和紋理加工成本過高,最大化地優化了性能并節省了內存帶寬。
該款游戲中的HSR效率(21.0%)有點偏低。可以使用PVRTrace檢查是否場景中有太多混合對象或是否所有不透明繪圖出現在透明繪圖之前。
ISP過載
圖像合成處理器(ISP)是PowerVR GPU的一部分,并在深度和模板測試中獲取原始數據并進行隱面消除 (HSR)。該計數器可以展示是否此單元已成為一個瓶頸。
此款游戲的ISP計數器呈現的值高達75.6%。ISP過載事件非常罕見,只有當一個或多個貼圖必須處理大量重疊的多邊形(如高透支)時才會發生。可以使用PVRTrace發現場景中是否有高透支現象。
Z加載/存儲
對于大多數的渲染,深度和模板緩沖區僅包含必須完成相關渲染的臨時數據。在PowerVR GPU架構中,片上深度和模板緩沖區則用于存儲這些數據。當利用適當的API機制時,應用程序不會從片上緩沖區中上傳或編輯數據。這使應用程序可以避免臨時的緩沖區進行冗余系統內存傳輸。
Z加載/存儲事件表明,已經對GPU中的深度/模板數據進行上傳或處理。除非一個給定的應用程序需要保持深度或模板信息,應用程序應該使用適當的API機制來避免這些成本頗高的數據傳輸操作。
數值在0%以上表示發生了Z加載/存儲。為避免這些操作,應確保不需要保存的深度和模板緩沖區在每個渲染開始時就已被清除,且在渲染結束后便已無效。
紋理加載
該計數器可以表示相比其峰值吞吐量,紋理單元的平均負荷值。
高數值(如超過50%)則表明紋理單元花費了大量的時間從系統內存中獲取紋理的數據和/或執行線性插值濾波操作。
當負載很高時,應使用以下計數器獲得更多的參考信息:
紋理過載(%):如果紋理負載高,則可能出現紋理過載。這將降低活動槽的占用率,進而降低著色器處理因數據關聯性引起的隱藏延遲的能力。
這款游戲中的紋理負載是80.6%——這個數值非常高。這可能是由于高透支或場景中有太多混合對象導致的。紋理過載計數器應該幫助我們縮小瓶頸。
紋理過載
紋理過載時計數器會加以顯示。每次紋理過載都表明,紋理樣本請求隊列已滿,如著色處理單元提交需求的速度比紋理單元處理的速度要快得多。
該款游戲紋理過載值高達11.3%,因為像素著色器不能隱藏紋理獲取需求的延遲。我們可以使用PVRTrace調查更多信息和紋理預熱來改善紋理提取操作。也可以使用PVR著色編輯器來優化像素著色,以減少相關紋理的讀取。
總結
該款游戲是一個典型的CPU受限案例。但我們也可以發現以下問題:
需要應用三角形頂點分類來提高每三角形頂點數的比例。
需要檢查是否有很多離屏多邊形或背面剔除失效的情況。
需要檢查是否有很多透明的物體或在繪制遮擋物之前就已繪制了透明對象。
需要減少透支及優化紋理的使用。
需要優化著色器代碼。
這些措施可以在我們解決渲染線程問題后進一步改善游戲的性能。在下一篇文章,我將闡述如何使用PVRTrace來隔離無效的OpenGL ES API調用,并展示上述改進措施的源代碼。
評論
查看更多