移動(dòng)設(shè)備GPU 性能優(yōu)化對(duì)玩家游戲體驗(yàn)至關(guān)重要。侑虎科技 UWA 一直專注于游戲和 VR 應(yīng)用的性能優(yōu)化,移動(dòng)設(shè)備 GPU 優(yōu)化是其關(guān)注的重點(diǎn),為了更好地滿足開發(fā)者針對(duì)不同 GPU 芯片的性能測(cè)評(píng)與優(yōu)化,日前他們?cè)谌律?jí)的UWA SDK 2.4.8版本中,推出了 GPU 性能測(cè)評(píng)工具—UWA GOT Online GPU 模式。這也是 UWA 繼去年GPU Counter 功能更新增加Imagination PowerVR GPU 芯片支持后的一次重要升級(jí)。
全新的UWA GOT Online GPU 模式帶來了更全面的GPU 性能優(yōu)化方案。在 UWA 官方公開的 GOT Online 支持設(shè)備列表中,可以看到對(duì)多款I(lǐng)magination PowerVR GPU的支持:GE8100、GE8200、GE8300、GE8310、GE8430、GE8320、GE8325、GE8340 等,并且會(huì)持續(xù)刷新支持Imagination PowerVR GPU的型號(hào),表中還列出了GPU耗時(shí)均值、GPU著色、GPU帶寬、GPU圖元處理、GPU負(fù)載等多個(gè)評(píng)測(cè)優(yōu)化維度。Imagination 將與 UWA 持續(xù)合作幫助開發(fā)者對(duì)GPU 進(jìn)行更好地優(yōu)化。
現(xiàn)在,讓我們一一介紹這些重要功能。
- 性能簡(jiǎn)報(bào):該頁面可以快速地幫助開發(fā)者把控項(xiàng)目的GPU性能壓力情況
- GPU分析:分別從渲染和帶寬兩個(gè)角度,對(duì)GPU性能壓力進(jìn)行分析
- 渲染資源分析:開啟紋理和網(wǎng)格資源分析功能,定位這些資源的具體使用情況
- Overdraw快照:更便捷地定位Overdraw壓力來源
GPU溫度:快速判斷設(shè)備發(fā)熱的原因是否主要來自GPU
性能簡(jiǎn)報(bào)
如下圖,UWA列出了測(cè)試時(shí)的FPS、GPU Clocks數(shù)據(jù),并用淺紅色背景標(biāo)注了GPU Bound幀。GPU Bound表示GPU性能高壓區(qū)間,此時(shí)GPU計(jì)算耗費(fèi)的時(shí)鐘周期數(shù)過高,可能無法支持滿幀運(yùn)作。
同時(shí),UWA也在圖表下列出了GPU性能、渲染統(tǒng)計(jì)、紋理資源分析和網(wǎng)格資源分析4個(gè)模塊的參數(shù)情況和對(duì)應(yīng)的優(yōu)化任務(wù)隊(duì)列。
簡(jiǎn)報(bào)的目的是幫助大家在茫茫多的性能指標(biāo)中,快速篩選出高優(yōu)先級(jí)的優(yōu)化任務(wù)。如需要針對(duì)某些指標(biāo)做更為深層的下探,就可以使用下文中的各個(gè)功能進(jìn)行分析。
GPU分析
在指標(biāo)匯總下,展示了測(cè)試過程中獲取到的各項(xiàng)GPU參數(shù)。同時(shí),UWA也根據(jù)這些指標(biāo)間的關(guān)聯(lián),分別從渲染和帶寬兩個(gè)角度,幫助開發(fā)者對(duì)GPU性能壓力進(jìn)行具體分析。
1. 指標(biāo)匯總
GPU TimeGPU Time即每幀的GPU耗時(shí)。GPU耗時(shí)的推薦值和CPU耗時(shí)一樣,當(dāng)項(xiàng)目需要維持在30幀時(shí),GPU耗時(shí)應(yīng)低于33ms(UWA推薦控制在28ms更佳)。同時(shí),UWA也列出了渲染耗時(shí)Fragment Time和頂點(diǎn)處理耗時(shí)Non-Fragment Time數(shù)據(jù)作為補(bǔ)充。
Clocks
GPU Clocks表示渲染一幀耗費(fèi)的GPU時(shí)鐘周期數(shù),和GPU Times一樣,也是用于衡量GPU性能的主要指標(biāo)。通過GPU Clocks,開發(fā)者可以快速定位項(xiàng)目的GPU壓力主要來自哪些場(chǎng)景,并結(jié)合其他GPU參數(shù)對(duì)GPU壓力情況進(jìn)行具體分析。
GPU Utilization
Fragment Utilization和Non Fragment Utilization分別表示圖元處理和非圖元處理任務(wù)處于活動(dòng)狀態(tài)的時(shí)間百分比。
當(dāng)Non Fragment Utilization高時(shí),開發(fā)者可以從面片數(shù)、面剔除、模型復(fù)雜度等角度著手進(jìn)行優(yōu)化;而當(dāng)Fragment Utilization高時(shí),則考慮項(xiàng)目中是否存在Overdraw過高、Fragment Shader過于復(fù)雜等問題。
GPU Shaded
在GPU Shaded下,可以獲取到相關(guān)的Fragment shaded、Vertices shaded、Cycles/Pixel指標(biāo)數(shù)據(jù)。
其中Cycles/Pixel表示平均每個(gè)像素耗費(fèi)的GPU時(shí)鐘周期。當(dāng)畫面的Shader復(fù)雜度過高/或者Overdraw過高時(shí),GPU需要消耗大量的時(shí)鐘周期對(duì)Shader進(jìn)行運(yùn)算,容易造成GPU耗時(shí)變高,造成卡頓。通過Cycles/Pixel,即可快速定位高Cycles的場(chǎng)景,需要進(jìn)一步判斷場(chǎng)景的GPU壓力是否是由于Shader復(fù)雜度過高還是Overdraw過高造成,進(jìn)行有針對(duì)性的優(yōu)化。
Fragment shaded表示每幀F(xiàn)ragment shader執(zhí)行了多少次,用Fragment shaded數(shù)除以設(shè)備分辨率,可以側(cè)面反映項(xiàng)目的Overdraw情況。
當(dāng)Overdraw較高時(shí),容易引起發(fā)熱和能耗方面的問題。我們可以通過降低半透明粒子特效的粒子數(shù)量、使用不規(guī)則面片代替矩形面片渲染粒子特效或UI等方式,減少項(xiàng)目的Overdraw層數(shù),降低GPU壓力。
而Vertices shaded則表示每幀Vertex shader執(zhí)行了多少次。使用Vertices shaded除以輸入圖元數(shù),即可得到平均每個(gè)圖元進(jìn)行了多少次Vertices shaded。UWA推薦平均每個(gè)圖元執(zhí)行次數(shù)應(yīng)控制在1.5次以下。
GPU Bandwidth
和CPU一樣,GPU Bandwidth也是芯片耗電的重要指標(biāo)。當(dāng)GPU持續(xù)進(jìn)行高負(fù)載外部讀寫時(shí),掉電就會(huì)過快。UWA的GPU Bandwidth模塊統(tǒng)計(jì)了測(cè)試過程中單幀的讀寫帶寬總量,通過查看GPU Bandwidth模塊,可以快速定位測(cè)試過程中帶寬較高的場(chǎng)景和原因,并進(jìn)行進(jìn)一步測(cè)試優(yōu)化。
GPU Memory Bus Utilization
GPU Memory Bus Utilization,即每幀GPU內(nèi)存總線負(fù)載。它表示當(dāng)前GPU帶寬消耗占總可用帶寬的百分比。當(dāng)GPU Memory Bus Utilization持續(xù)較高時(shí),說明GPU訪問內(nèi)存的頻率過于頻繁,可以通過減少紋理資源與網(wǎng)格資源的大小和數(shù)量控制GPU緩存的占比。
GPU Primitive
渲染面是產(chǎn)生GPU壓力的重要因素之一,渲染面過多可能是模型過于復(fù)雜;也可能是地形、大建筑物等大面積模型沒有進(jìn)行適當(dāng)?shù)牟鸱?,?dǎo)致進(jìn)入視域體的面片可能不多,但提交GPU的渲染面依然很多。
對(duì)于這種情況,我們可以通過GPU Primitive下的各項(xiàng)參數(shù)來進(jìn)行初步判斷。
Input Primitives:提交到GPU端的圖元總數(shù),該數(shù)值基本等同于引擎端統(tǒng)計(jì)的渲染面片總數(shù)。
Visible Primitives:在GPU端通過各種裁剪之后,留下的參與渲染的三角面。
Culled Primitives:因?yàn)樵谝曈蝮w外而被裁剪的三角面,因?yàn)槌蚨徊眉舻娜敲妗?/p>
GPU圖元處理數(shù)量過多會(huì)對(duì)設(shè)備的帶寬和能耗造成較大的影響,應(yīng)盡量在程序端完成剔除,并減小送往GPU的圖元數(shù)。在3D場(chǎng)景中,比較理想的情況下,可見圖元的數(shù)量應(yīng)該接近或高于 50%(對(duì)于大部分模型,有一半三角面會(huì)因?yàn)槌虮徊眉簦H绻承┙嵌认?,可見圖元的比例非常低,則很可能存在上文提到的第二種情況,從而可以針對(duì)性地檢查和優(yōu)化場(chǎng)景中,這個(gè)角度下,被提交到GPU的大面積模型。
2. GPU渲染分析
GPU Clocks是衡量GPU性能的主要指標(biāo),結(jié)合該曲線,開發(fā)者可以快速判斷各個(gè)場(chǎng)景中的GPU壓力。
同時(shí),UWA也展示出了GPU Shaded、GPU Primitive指標(biāo)的均值和性能走勢(shì)。當(dāng)某個(gè)場(chǎng)景中的GPU Clocks較高時(shí),通過這些指標(biāo)的推薦值和性能曲線,開發(fā)者就可以快速判斷是哪些參數(shù)造成的GPU渲染計(jì)算壓力,并采取相應(yīng)的優(yōu)化方案。
3. GPU帶寬分析
由于GPU讀、寫帶寬較高時(shí)都會(huì)造成大量的發(fā)熱和耗電,需要開發(fā)者重點(diǎn)關(guān)注。
在相關(guān)參數(shù)中,也展示了GPU Memory Bus Utilization、GPU Primitive參數(shù)。比如當(dāng)GPU Primitives較高時(shí),就說明提交到GPU端的圖元總數(shù)較多,可能引起較高的帶寬壓力。
渲染資源分析
當(dāng)參與渲染的紋理和網(wǎng)格資源越多、采樣越多時(shí),資源內(nèi)存會(huì)變高,GPU帶寬和GPU Clocks也會(huì)相應(yīng)上漲。為了保證讓參與渲染計(jì)算的資源物盡其用,開發(fā)者可以手動(dòng)開啟紋理和網(wǎng)格資源分析功能,定位這些資源的具體使用情況。
紋理資源分析
在紋理資源分析頁,除了紋理資源的內(nèi)存、數(shù)量、尺寸等參數(shù)外,我們還可以查看紋理渲染利用率、是否開啟Mipmap和Mipmap采樣率等數(shù)據(jù)。
通過紋理渲染利用率,開發(fā)者即可快速定位到一直在內(nèi)存中但從未參與過渲染的紋理資源,以此排查是否存在場(chǎng)景中不可見的渲染物體、不合理的打包和加載策略等可能造成此種浪費(fèi)的因素。
而通過Mipmap 0層采樣率是否較低(低于20%),則可以判斷哪些紋理資源的尺寸過大,開發(fā)者就可以通過降低這些紋理資源分辨率緩解內(nèi)存和GPU壓力,同時(shí)也不會(huì)影響畫面效果。
網(wǎng)格資源分析
在網(wǎng)格資源分析頁,除了和紋理資源相似的資源渲染利用率外,我們也可以查看網(wǎng)格的最大屏占比和最小渲染密度數(shù)據(jù)。渲染利用率為0的網(wǎng)格資源和紋理資源優(yōu)化方式相似,而網(wǎng)格最大屏占比和最小渲染密度則可以用于排查網(wǎng)格資源的精度是否合理。
當(dāng)網(wǎng)格的最大屏占比小于0.02%時(shí),說明網(wǎng)格在手機(jī)屏幕中只占很小的一部分,可見性較低。如果同時(shí)網(wǎng)格的復(fù)雜度較高,就說明網(wǎng)格的精度過高,開發(fā)者可以考慮使用更低精度的模型進(jìn)行替換。
渲染密度則表示在平均每一萬像素中網(wǎng)格的頂點(diǎn)數(shù),如果該值大于1000,則說明我們?cè)诤苄〉漠嬅嬷欣L制了過于復(fù)雜的網(wǎng)格。因此,當(dāng)此網(wǎng)格的渲染密度最小時(shí),該數(shù)值仍然高于1000,那么此網(wǎng)格的頂點(diǎn)數(shù)大概率是過高的,開發(fā)者可以考慮對(duì)這些網(wǎng)格資源進(jìn)行減面操作,或使用LOD分級(jí)處理。
Overdraw快照
Overdraw表示項(xiàng)目運(yùn)行過程中單幀中整個(gè)屏幕被填充的倍數(shù)。在游戲運(yùn)行過程中,場(chǎng)景中半透明物體的重合會(huì)使得同一個(gè)像素點(diǎn)在一幀中會(huì)被繪制多次,容易造成Overdraw過高,引起設(shè)備發(fā)熱。
在Overdraw快照模塊,UWA通過Fragment Shaded(渲染像素總數(shù))與設(shè)備渲染分辨率,換算得到了Overdraw的計(jì)算值,以幫助開發(fā)者對(duì)項(xiàng)目的Overdraw情況進(jìn)行排查。
在測(cè)試GPU模式時(shí),開發(fā)者可以手動(dòng)Dump采集場(chǎng)景中具體的Overdraw情況。
在Overdraw快照模塊,即可查看Dump幀各個(gè)相機(jī)的Overdraw情況。其中Overlay-UI(UWA)相機(jī)展示的是UGUI中Overlay部分的Overdraw信息,即所有沒有掛在任何相機(jī)下UI的Overdraw信息。
在柱狀圖下方,還可以查看所選柱狀圖的Overdraw熱力圖,其中顏色越紅,表示該處像素在當(dāng)前幀中被填充的次數(shù)較多,Overdraw較高,GPU的壓力就越大。
開發(fā)者可以結(jié)合報(bào)告截圖和Overdraw熱力圖,更便捷地定位項(xiàng)目的Overdraw壓力來源。
GPU溫度
GPU壓力較高時(shí)容易引起設(shè)備發(fā)熱。UWA統(tǒng)計(jì)了設(shè)備的GPU、CPU、電池溫度,以便開發(fā)者判斷設(shè)備發(fā)熱的原因是否主要來自GPU。
若確認(rèn)是由于GPU壓力導(dǎo)致發(fā)熱,接下來可以進(jìn)一步排查與GPU溫度情況有關(guān)的參數(shù),譬如FPS、GPU Clocks、GPU bandwidth。而功率則會(huì)和GPU溫度相互影響,也是反應(yīng)能耗和發(fā)熱問題的重要參數(shù)。
這里特別建議大家:由于CPU和GPU芯片位置較近,當(dāng)CPU壓力較大產(chǎn)生發(fā)熱時(shí),也可能帶動(dòng)GPU一起發(fā)熱。所以在優(yōu)化GPU發(fā)熱問題時(shí),也要適當(dāng)結(jié)合CPU壓力情況進(jìn)行排查分析??偟膩碚f,當(dāng)項(xiàng)目存在耗電快、溫度高的現(xiàn)象時(shí),開發(fā)者可以從GPU性能壓力、GPU帶寬、CPU主線程、CPU子線程等方面著手,優(yōu)化發(fā)熱問題。
UWA提供的性能測(cè)評(píng)工具更進(jìn)一步地拆分和細(xì)化了項(xiàng)目的GPU壓力成因,為您帶來前所未有的優(yōu)化體驗(yàn)。UWA的目標(biāo)是讓您更便捷、高效地定位項(xiàng)目的GPU壓力來源,告別盲目猜測(cè),擁抱精準(zhǔn)優(yōu)化。
-
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423136 -
gpu
+關(guān)注
關(guān)注
28文章
4729瀏覽量
128890 -
vr
+關(guān)注
關(guān)注
34文章
9638瀏覽量
150207
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論