為配合主幹穩定開發模型,並確保生態系統的平台穩定性,我們將於 2026 年起,在第 2 季和第 4 季將原始碼發布至 AOSP。如要建構及貢獻 AOSP,建議使用 android-latest-release,而非 aosp-main。android-latest-release 資訊清單分支版本一律會參照推送至 AOSP 的最新版本。詳情請參閱「Android 開放原始碼計畫變更」一文。
Google uses AI technology to translate content into your preferred language. AI translations can contain errors.
硬體 Composer HAL
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
硬體合成器 (HWC) HAL 會判斷使用可用硬體合成緩衝區的最有效方式。做為 HAL,其實作方式會因裝置而異,通常由螢幕硬體 OEM 執行。
考慮到疊加平面時,這種做法的價值就很容易辨識,因為疊加平面會在顯示器硬體中組合多個緩衝區,而不是在 GPU 中。舉例來說,假設您使用典型的 Android 手機,並將手機直向放置,則頂端會顯示狀態列,底部會顯示導覽列,其他位置則會顯示應用程式內容。每個圖層的內容都位於不同的緩衝區。您可以使用下列任一方法處理組合:
- 將應用程式內容轉譯到暫存緩衝區,然後在上方轉譯狀態列,再在上方轉譯導覽列,最後將暫存緩衝區傳遞至螢幕硬體。
- 將所有三個緩衝區傳遞至螢幕硬體,並指示螢幕硬體從不同緩衝區讀取資料,以顯示螢幕的不同部分。
後者效率更高。
顯示處理器的功能差異很大,透過 API 難以表達疊加層數量、圖層是否可旋轉或混合,以及位置和重疊的限制。為配合這些選項,HWC 會執行下列計算:
- SurfaceFlinger 會提供圖層完整清單給 HWC,並詢問「您要如何處理這個問題?」
- HWC 會將每個圖層標示為裝置或用戶端組合,藉此做出回應。
- SurfaceFlinger 會處理所有用戶端,將輸出緩衝區傳遞至 HWC,並讓 HWC 處理其餘作業。
硬體供應商可以自訂決策程式碼,因此每部裝置都能發揮最佳效能。
如果螢幕上沒有任何變化,疊加平面可能不如 GL 合成效率高。如果疊加內容有透明像素,且重疊圖層會混合,就更是如此。在這種情況下,HWC 可以要求部分或所有圖層的 GLES 組合,並保留組合緩衝區。如果 SurfaceFlinger 要求合成同一組緩衝區,HWC 可以顯示先前合成的暫存緩衝區。這有助於延長閒置裝置的電池續航力。
Android 裝置通常支援四個重疊平面。如果嘗試合成的圖層數量超過疊加層,系統會對部分圖層使用 GLES 合成,也就是說,應用程式使用的圖層數量可能會對耗電量和效能造成明顯影響。
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2025-12-03 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-12-03 (世界標準時間)。"],[],[]]