在 Android 開啟 GPU 轉譯,是加速畫面顯示的萬靈丹嗎?

R.F.

強制使用GPU加速之後,原本那些並未設定的應用程式,在2D畫面的顯示效能上會獲得改進,特別是在滑動畫面的順暢感,使用者能夠明顯感覺到。但這也不是萬靈丹,有些裝置有用、有些裝置沒什麼差別,請看小編的實測。

自從Android 3.0之後,2D畫面的顯示管線就做了些調整,使其能夠更完整的支援硬體加速功能,只要程式設計師在程式碼<application>裡設定硬體加速參數即可:<application android:hardwareAccelerated="true" ...>

上述的設定方法是整個程式的全域設定,Android還有Activity、Window、View不同執行階段的硬體加速使用方法,不過這不是本篇重點,僅點到為止。

強制開啟硬體加速

如果程式開發人員忘記在程式當中開啟硬體加速怎麼辦?難道要眼睜睜看著煮熟的鴨子飛走嗎?在Android 4.0之後的版本之中,在設定頁面的開發人員選項中,有個「強制使用GPU轉譯」的選項可以勾選,可以讓全部的應用程式一律使用GPU硬體加速顯示2D畫面,就算是在程式碼中將android:hardwareAccelerated設定為false也不例外。

強制使用GPU轉譯這個名稱翻譯的有點奇怪,好像叫GPU把程式碼相互轉換、編譯,其實英文原本是顯示為force GPU rendering,如果翻譯成「強制使用GPU繪製畫面」,可能比較多人看得懂。

硬體加速並非完美

強制使用GPU加速之後,原本那些並未設定的應用程式,在2D畫面的顯示效能上會獲得改進,特別是在滑動畫面的順暢感,使用者能夠明顯感覺到。

既然有這麼好用的東西,為什麼廠商不將它設定成預設值,而是放在開發人員選項呢?這其實有個很簡單的原因:不是每個繪圖指令都可以使用硬體加速。在Android開發者網站上就有列出不支援硬體加速的指令,像是Canvas分類下的這幾種指令就不支援:

clipPath()

clipRegion()

drawPicture()

drawTextOnPath()

drawVertices()

如果程式中有使用到這幾項指令,而又強制開啟硬體加速,容易造成畫面顯示不正常,如以下的附圖就是其中一個例子。

加速程度依裝置而定

使用HTC J、Samsung Galaxy Note 2、Nexus 7測試「強制使用GPU轉譯」開啟或關閉有些什麼影響。

▲HTC J使用Quadrant Standard的測試結果,有沒有開啟選項的分數都差不多,畫面也都正常。

▲Galaxy Note 2的Quadrant Standard跑分結果,開啟與否的分數皆在伯仲之間,畫面均正確。

▲Nexus 7的跑分結果,可以注意到2D子項目的分數較其它2台裝置低,但是畫面正常顯示。(點圖可看大圖)

▲Nexus 7開啟強制GPU轉譯之後,2D子項目的分數暴增,但偶爾會遇到顯示錯誤問題。(點圖可看大圖)

目前大部分的測試對於強制使用GPU轉譯的選項無任何感覺,在測試中只有Quadrant Standard的分數有變,而且分數提升的現象只發生在Nexus 7身上,其中2D項目的分數從關閉時的251分,開啟之後跳到1000分,進步幅度相當驚人。但在最後分數長條圖的畫面顯示錯誤,還好這種情況並不常見,大約10次裡有1次機會。

延伸閱讀:

Android 作業系統 5 歲了!一起來回顧它的成長

Google 公布 Android 各版本市佔率,Android 2.3 依舊獨佔王座

免 Root!免 VPN!在台灣買付費 Android App 也能很簡單!

完全看懂 ARM 處理器:RISC 與 CISC 是什麼?歷史、架構一次看透

智慧型手機拆光看清楚:24個重要元件解說,認識手機的內涵

 

本文同步刊載於電腦王雜誌
 

歡迎加入電腦王雜誌粉絲團

原文網址:https://t17.techbang.com/topics/17458-opened-in-the-android-gpu-transliterated-the-panacea-does-is-speed-up-screen-display?page=1