Android 動態效能架構 (ADPF) 是 Google 推出的一項強大工具,可協助開發人員改善應用程式效能。透過熱力 API,ADPF 會提供裝置熱力狀態的即時資訊,以便調整應用程式中的圖形設定。
為了進行研究,Arm 使用 Unreal Engine 和 ADPF 開發了一個示範,以便調查如何使用 ADPF 來提升遊戲效能。
ADPF 會監控熱力狀態,並在遊戲引擎中相應調整圖形品質。
開發人員應將目標放在讓使用者能夠在無損遊戲體驗的情況下,延長遊戲時間,並避免裝置耗用過多電力。
事前準備
在進一步查看示範前,請務必先參閱 ADPF 的官方 Google 說明文件。這份文件是極具參考價值的資源,提供 ADPF 的深入洞察和使用指南。
不過,如果您偏好自訂學習方式,ADPF 範例存放區內有實務範例,可在 Android 應用程式中實作 ADPF。
調整圖形設定
在 Unreal Engine 的情況下,我們可以動態調整圖形設定,以維持效能。
我們使用 ADPF 中的熱力狀態監控器和 Thermal Headroom API 監控熱力節流。接著,您可以調整品質設定,例如陰影品質、反射品質和紋理品質,以便在裝置開始節流時調整。
下列 Unreal Engine 中的「Graphics Quality」設定可用於修改各種設定:
- ViewDistanceQuality
- ShadowQuality
- GlobalIlluminationQuality
- ReflectionQuality
- AntiAliasingQuality
- TextureQuality
- VisualEffectQuality
- PostProcessingQuality
- FoliageQuality
- ShadingQuality
- OverallScalabilityLevel
通過真實環境測試
Arm 會自行製作示範遊戲,用於研究行動圖像和遊戲技術。今年,我們在其中一個應用程式 (SteelArms 示範) 上測試了 ADPF。
SteelArms 有不同程度的圖形強度和大量 CPU 工作負載。這款遊戲的設計類似於現代行動遊戲,因此我們可以模擬當今行動裝置上的遊戲行為。這也讓我們能夠測試不同技術在以 Arm 為基礎的行動裝置上執行遊戲時的運作情形。
結果
上圖顯示,當 ADPF 啟用以調整圖像設定時,最佳 (Cinematic) 品質與最低 (Low) 品質的差異。這項變化是漸進式的,使用者在遊戲過程中不會察覺。
分割畫面檢視畫面,左側為最高等級的圖形設定 (藍色機器人),右側為最低等級的圖形設定 (紅色機器人)。
在前述的圖 3 和 4 中,可以並排看到相同的機器人檢視畫面。仔細觀察後,您會發現使用 ADPF 調整的圖像設定。請注意擂台地板、機器人的肩膀、擂台繩索和觀眾。所有圖片似乎都使用 ADPF 處理,因此品質略為下降。
在即將受到節流限制時,這些效果會在 SteelArms 示範中縮小。在後製和視覺效果中,很難發現這些微小的減少。此外,使用者在遊戲過程中通常不會注意到這些廣告。也就是說,您可以維持遊戲的大部分視覺體驗,且不會影響遊戲體驗。您可以同時執行這些操作,同時維持遊戲的電力效能和裝置的電池續航力。
如先前所述,為了示範效果,我們會比較最高和最低品質設定的圖片。因此,仔細觀察時仍可看出差異。不過,在遊戲過程中縮小畫面時,使用者幾乎不會察覺,同時也能維持穩定的遊戲體驗。
結果
裝置可避免過熱,並維持在 1.0 度的熱力裕度內。
耗電量
ADPF 結果
您可以在先前顯示的圖表中,查看 ADPF 開啟和關閉的結果。顯示遊戲的幀率和核心的耗電量有差異。開啟 ADPF 後,影格速率最高可提升 57%。關閉 ADPF 後,GPU 會消耗大量電力。接著,CPU (大) 核心的耗電量會出現與 GPU 工作負載一致的尖峰。因為它正在追上所需處理的處理量。相較之下,當 ADPF 開啟時,CPU (大) 核心會回應節流,並降低裝置中所有核心的整體耗電量。
結語
ADPF 可大幅改善遊戲的耗電量。這最終意味著玩家可延長遊戲時間,同時提升電池續航力,並降低裝置的溫度。從開發人員的角度來看,ADPF 可維持遊戲的正確影格速率。同時讓他們彈性調整品質設定,同時為使用者提供絕佳的遊戲體驗。
新舊裝置都能從使用 ADPF 中受益。這項功能可讓遊戲在舊款裝置上以高標準運作,無需額外進行最佳化作業。