日前,游戲和VR應(yīng)用性能優(yōu)化平臺(tái) UWA 宣布新的 GPU Counter 功能更新:增加了對(duì) PowerVR 品牌 GPU 芯片的支持。針對(duì) PowerVR GPUCounter,UWA提供了 GPU 負(fù)載、GPU 著色、GPU 帶寬、GPU 圖元 4 個(gè)模塊的分析。最新的 UWA SDK 2.4.4 已發(fā)布,下載最新版 SDK,并使用搭載 PowerVR GPU IP 芯片的設(shè)備進(jìn)行測(cè)試,即可在GOT Online Overview的GPU模塊下查看到對(duì)應(yīng)的數(shù)據(jù),掌握GPU壓力和性能消耗情況。
以下針對(duì)PowerVR GPU Counter,圍繞UWA所提供的GPU 負(fù)載、GPU著色、GPU帶寬、GPU圖元4個(gè)模塊的分析進(jìn)行詳細(xì)說明。
1、GPU負(fù)載
GPU Counter下的GPU負(fù)載包含Non Fragment Utilization和Fragment Utilization兩個(gè)性能指標(biāo),分別代表非片段處理占整體GPU處理耗時(shí)百分比和片段處理開銷占整體GPU處理開銷百分比。
在GPU上運(yùn)行的工作負(fù)載由作業(yè)管理器統(tǒng)一協(xié)調(diào),該任務(wù)管理器負(fù)責(zé)將工作負(fù)載調(diào)度到GPU內(nèi)部的各個(gè)處理單元上,它將兩個(gè)FIFO工作隊(duì)列,稱為作業(yè)插槽。其中,一個(gè)插槽用于非片段工作負(fù)載,另一個(gè)插槽則用于片段著色工作負(fù)載。當(dāng)出現(xiàn)GPU瓶頸時(shí),正常情況下Non Fragment Utilization和Fragment Utilization至少有一個(gè)是接近100%,如果兩者都低于100%,則有可能是Non Fragment和Fragment之間存在數(shù)據(jù)依賴關(guān)系。
當(dāng)Non Fragment Utilization過高時(shí),開發(fā)者可以從頂點(diǎn)數(shù)、復(fù)雜的Compute Shader的使用情況以及Geometry Shader、Tessellation Shader等角度著手進(jìn)行優(yōu)化。當(dāng)Fragment Utilization過高時(shí),則可以考慮項(xiàng)目中是否存在是否存在片段數(shù)目過多、片段Shader過于復(fù)雜。
2、GPU著色
包含Overdraw和Cycles/Pixel兩個(gè)指標(biāo)。
Overdraw(過度繪制)
該項(xiàng)表示項(xiàng)目運(yùn)行過程中,單幀中整個(gè)屏幕被填充的倍數(shù)。倍數(shù)越高,則GPU的壓力越大。在游戲運(yùn)行過程中,場(chǎng)景中半透明物體的重合會(huì)使得同一個(gè)像素點(diǎn)在一幀中會(huì)被繪制多次,造成Overdraw過高的情況。如下圖所示,UI和粒子特效層疊導(dǎo)致容易出現(xiàn)Overdraw。
Cycles/Pixel
表示平均每個(gè)像素耗費(fèi)的GPU時(shí)鐘周期。一般來說,Shader復(fù)雜度會(huì)極大地影響GPUCycles占用的情況。當(dāng)畫面的Shader復(fù)雜度過高時(shí),GPU需要消耗大量的時(shí)鐘周期對(duì)Shader進(jìn)行運(yùn)算,容易造成GPU耗時(shí)變高,造成卡頓。
因此,通過查看GPU著色模塊,就可以快速定位高Overdraw和高Cycles的場(chǎng)景,判斷這個(gè)場(chǎng)景的GPU壓力較高是Overdraw還是Shader復(fù)雜度過高造成的,進(jìn)行有針對(duì)性的優(yōu)化。
3、GPU帶寬
和CPU一樣,GPU帶寬也是芯片耗電的重要指標(biāo)。當(dāng)GPU持續(xù)進(jìn)行高負(fù)載外部讀寫時(shí),掉電就會(huì)過快。
UWA的GPU帶寬模塊統(tǒng)計(jì)了測(cè)試過程中單幀的讀寫帶寬總量,通過查看GPU帶寬模塊,可以快速定位測(cè)試過程中帶寬較高的場(chǎng)景和原因,并進(jìn)行進(jìn)一步測(cè)試優(yōu)化。
4、GPU圖元處理渲染面是產(chǎn)生GPU壓力的重要因素之一,我們可以通過 Overview 模式里的 Triangle 指標(biāo)來查看和分析哪些畫面的渲染面較多。
渲染面過多,一方面可能是模型過于復(fù)雜,一般可以通過 LOD、HLOD 等常用技術(shù)來簡化遠(yuǎn)距離的模型,在不影響畫質(zhì)的情況下顯著降低渲染面;另一方面,可能是地形、大建筑物等大面積模型沒有進(jìn)行適當(dāng)?shù)牟鸱?,?dǎo)致進(jìn)入視域體的面片可能不多,但提交GPU的渲染面依然很多。對(duì)于第二種情況,我們可以通過新功能“GPU圖元”來進(jìn)行初步的判斷。
總圖元數(shù):提交到GPU端的圖元總數(shù),該數(shù)值基本等同于引擎端統(tǒng)計(jì)的渲染面片總數(shù)。可見圖元數(shù):在GPU端通過各種裁剪之后,留下的參與渲染的三角面。可見圖元不包括:因?yàn)樵谝曈蝮w外而被裁剪的三角面,因?yàn)槌蚨徊眉舻娜敲?。因此,?D場(chǎng)景中,比較理想的情況下,可見圖元的數(shù)量應(yīng)該接近或高于 50%(對(duì)于大部分模型,有一半三角面會(huì)因?yàn)槌虮徊眉簦?。如果某些角度下,可見圖元的比例非常低,則很可能存在上文提到的第二種情況,從而可以針對(duì)性地檢查和優(yōu)化場(chǎng)景中,這個(gè)角度下,被提交到GPU的大面積模型。
GPU圖元處理數(shù)量過多會(huì)對(duì)設(shè)備的帶寬和能耗造成較大的影響,應(yīng)盡量在程序端完成剔除,并減小送往GPU的圖元數(shù)。
需要注意的是,基于架構(gòu)不同,同一參數(shù)在不同品牌芯片上的推薦值也會(huì)存在差異,不同設(shè)備間橫向?qū)Ρ鹊囊饬x不大,更推薦大家在相同的設(shè)備上進(jìn)行縱向?qū)Ρ?。同時(shí),由于同品牌芯片的架構(gòu)之間也會(huì)存在差異,UWA目前僅支持部分芯片的GPU Counter數(shù)據(jù)采集,具體支持設(shè)備列表可通過下圖或登錄UWA官網(wǎng)對(duì)“Mali/Power VR/Adreno GPUCounter支持設(shè)備”列表進(jìn)行查詢:
https://www.uwa4d.com/main/supported.html以上就是這次關(guān)于搭載 PowerVR GPU IP 芯片的新功能介紹了,希望會(huì)對(duì)開發(fā)者們?cè)?GPU 優(yōu)化上和項(xiàng)目的整體性能監(jiān)控上有所幫助。
-
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423135 -
vr
+關(guān)注
關(guān)注
34文章
9638瀏覽量
150207
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論