Android 檢查 GPU 渲染速度以及是否過度繪制

Inspect GPU rendering speed and overdraw

Analyze with Profile GPU Rendering

Android 設(shè)備上的一些開發(fā)人員選項,可幫助你應(yīng)用在運行其 UI 時可視化遇到的問題,例如執(zhí)行了多余的渲染工作,或執(zhí)行長線程和 GPU 操作。

要了解有關(guān)設(shè)備上開發(fā)人員選項的更多信息,包括如何啟用它們,請閱讀配置設(shè)備上的開發(fā)人員選項。

一、分析 GPU 渲染速度

Profile GPU Rendering 工具以滾動直方圖的形式顯示相對于每幀 16 ms 的基準測試渲染 UI 窗口的幀所花費的時間。

在性能較差的 GPU 上,可用的填充率(GPU 可以填充幀緩沖區(qū)的速度)可能非常低。隨著繪制幀所需的像素數(shù)量增加,GPU 可能需要更長的時間來處理新命令,并要求系統(tǒng)的其余部分等待直到它能夠趕上來。分析工具可以幫助你識別 GPU 何時不堪重負。

注意:此分析工具不適用于使用 NDK 的應(yīng)用程序。這是因為只要 OpenGL 采用全屏上下文,系統(tǒng)就會將框架消息推送到后臺。在這種情況下,你可能會發(fā)現(xiàn) GPU 制造商提供的分析工具很有幫助。

1.1 啟用分析器

在開始之前,請確保你使用的是 Android 4.1(API 級別 16)或更高版本的設(shè)備,以及啟用開發(fā)人員選項。要在使用應(yīng)用程序時開始分析設(shè)備 GPU 渲染,請執(zhí)行以下操作:

  1. 在你的設(shè)備上,打開設(shè)置,然后點擊開發(fā)者選項。

  2. 監(jiān)控(Monitoring)部分中,選擇 GPU 呈現(xiàn)模式分析(Profile GPU Rendering)。

  3. GPU 呈現(xiàn)模式分析(Profile GPU Rendering)對話框中,選擇在屏幕上顯示為條形圖(On screen as bars),以覆蓋設(shè)備屏幕上的圖形。

  4. 打開要分析的應(yīng)用程序。

1.2 檢查輸出

在圖 1 中所示的 Profile GPU Rendering 圖的放大圖像中,你可以看到彩色部分,如 Android 6.0(API 級別 23)所示。

圖 1. 放大的配置文件 GPU 渲染圖。

以下是有關(guān)渲染圖的一些注意事項:

  • 對于每個可見的應(yīng)用程序,該工具都會顯示一個圖表。

  • 沿水平軸的每個直方條代表一幀,每個直方條的高度表示該幀渲染所用的時間(以毫秒為單位)。

  • 綠色水平線代表 16 毫秒。要達到每秒 60 幀,每幀的直方條需要保持在此線以下。任何時候一個直方條超過這條線,都有可能出現(xiàn)卡頓。

  • 該工具通過使直方條更寬且更不透明來突出顯示超過 16 毫秒閾值的幀。

  • 每個直方條都有顏色組件,可以映射到渲染過程中的階段。組件數(shù)量取決于設(shè)備的 API 級別。

下表提供了使用運行 Android 6.0 及更高版本的設(shè)備時,直方條的每個段的說明。

4.0(API 級別 14)和 5.0(API 級別 21)之間的 Android 版本具有藍色,紫色,紅色和橙色段。4.0 以下的 Android 版本只有藍色,紅色和橙色組件。下表顯示了 Android 4.0 和 5.0 中的組件欄。

注意:雖然工具名為 Profile GPU Rendering,但所有受監(jiān)視的進程實際上都在 CPU 中進行。通過向 GPU 提交命令來進行渲染,GPU 以異步的方式渲染屏幕。在某些情況下,GPU 可能需要做太多工作,而 CPU 必須等待它才能提交新命令。發(fā)生這種情況時,你會在橙色和紅色條中看到尖峰,并且命令提交將被阻塞,直到 GPU 命令隊列上有空閑。

二、GPU 過度繪制可視化

GPU 過度繪制可視化可幫助你通過對 UI 進行顏色編碼來識別是否存在過度繪制。當(dāng)你的應(yīng)用在同一幀內(nèi)多次繪制相同的像素時,會發(fā)生過度繪制。這可能是一個性能問題,因為額外的 GPU 工作會渲染用戶無法看到的像素。所以,你應(yīng)該盡可能地修復(fù)過度繪制事件。

要可視化你的設(shè)備上的過度繪制,請按以下步驟操作:

  1. 在你的設(shè)備上,打開“設(shè)置”,然后點擊“開發(fā)者選項”。

  2. 向下滾動到硬件加速渲染部分,然后選擇調(diào)試 GPU 過度繪制(Debug GPU Overdraw)。

  3. 調(diào)試 GPU 過度繪制(Debug GPU Overdraw)對話框中,選擇顯示過度繪制區(qū)域(Show overdraw areas)。

Android UI 元素過度繪制色譜圖如下:

圖 2. 正常顯示的應(yīng)用程序(左側(cè)),以及啟用 GPU Overdraw(右側(cè))時顯示的應(yīng)用程序
圖 3. 具有大量過度繪制(左)和少量過度繪制的應(yīng)用程序示例(右)

請注意,這些顏色是半透明的,因此你在屏幕上看到的確切顏色取決于 UI 的內(nèi)容?,F(xiàn)在你可以識別出布局中出現(xiàn)過度繪制的位置,更多詳情請看 Reduce overdraw。

請記住,一些過度繪制是不可避免的。當(dāng)你調(diào)整用戶界面時,盡量讓渲染圖顯示大多數(shù)真實顏色或僅 1 倍過度繪制(藍色)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容