本頁介紹了混合 SDR 和 HDR 合成的 SDR 內容調光功能的要求、配置和驗證。
Android 13 通過引入以下功能改進了對同時在屏幕上呈現 SDR 和 HDR 合成的支持:
將 HDR 亮度色調映射到與 SDR 兼容的範圍。
使用
libtonemap
,可以使 Hardware Composer (HWC)、SurfaceFlinger 和應用程序之間的色調映射保持一致。 OEM 可以實現自己的色調映射曲線,以便在供應商和框架組件之間共享。與 HDR 內容同時呈現時使屏幕上的 SDR 內容變暗。
當 HDR 內容出現在屏幕上時,屏幕亮度會增加以適應 HDR 內容增加的亮度範圍。屏幕上的任何 SDR 內容都會隨著屏幕亮度的增加而無縫變暗,因此 SDR 內容的感知亮度不會改變。 OEM 可以將其內置顯示器配置為在與 HDR 內容一起呈現時使屏幕上的 SDR 內容變暗。
OEM 要求
要通過 SDR 內容調光為 HDR 和 SDR 內容使用改進的合成,請遵循以下要求:
實現 HWC 的 AIDL 版本,其中包括對設備顏色管道中的硬件加速調光的支持。請參閱AIDL for HWC以實現所需的功能。
在 HWC 中準確調光硬件覆蓋層需要特定的硬件來縮放覆蓋層的線性光。 SurfaceFlinger 需要在沒有足夠硬件的情況下將合成推遲到 GPU,從而導致電池消耗和可能的低質量調光。
設備必須至少支持
Display.getHdrCapabilities
報告的一種 HDR 技術。
配置
可以根據內置顯示設備特性配置混合 SDR 和 HDR 內容合成功能,從而建立電池壽命、老化和內容保真度之間的權衡。
通過其架構位於display-device-config.xsd
中的顯示配置來啟用和調整改進的組合。以下新的關鍵元素對於設置顯示配置很重要:
sdrHdrRatioMap
元素啟用 SDR 調光並定義查找表 (LUT),用於在屏幕上有 HDR 內容時將要顯示的 HDR 屏幕亮度映射到 SDR 白點。如果定義了
sdrHdrRatioMap
,則作為控制屏幕亮度的一部分,DisplayManagerService
將所需的 SDR 白點傳達給 SurfaceFlinger,以便 SurfaceFlinger 可以將每層的適當調光比發送給 HWC。如果
sdrHdrRatioMap
,則不會啟用 SDR 調光,即使 HWC 實現支持 SDR 調光。minimumHdrPercentOfScreen
元素,取值範圍為 0 到 100,控制何時允許打開面板的高亮度模式。在 Android 13 中,可以調整此閾值以在更多情況下啟用高亮度模式,例如畫中畫場景。以前版本的 AOSP 已將此值固定為 50%。
有關顯示配置的關鍵元素,請參見以下代碼塊:
<displayConfiguration>
...
<highBrightnessMode>
...
<!--Percentage of the screen that must be covered by HDR layers until high brightness mode is enabled.
<minimumHdrPercentOfScreen>...</minimumHdrPercentOfScreen>
<!--sdrHdrRatioMap, backed by spline, must have at least two entries -->
<sdrHdrRatioMap>
<point>
<sdrNits>...</sdrNits>
<hdrRatio>...</hdrRatio>
</point>
<point>
<sdrNits>...</sdrNits>
<hdrRatio>...</hdrRatio>
</point>
<!--More interpolation points may be added –->
...
</sdrHdrRatioMap>
...
</highBrightnessMode>
...
</displayConfiguration>
注意事項
啟用色調映射和 SDR 內容調光功能可能會導致以下情況:
隨著 SDR 內容元素變暗,設備上播放的 HDR 內容的保真度可以提高。
在以下情況下,電池壽命可能會縮短:
將調光操作推遲到 GPU 的 HWC 實現可能會導致 GPU 使用量增加。
允許啟用高亮度模式的較低閾值的顯示配置可以增加以更高亮度運行屏幕的功耗。
由於在高亮度模式下花費的時間增加,屏幕健康可能會受到影響,這可能會導致長期問題,例如顯示健康老化。
驗證
OEM 可以使用 VTS 測試(作為 HWC 測試套件的一部分)來檢查調光正確性並驗證輸入調光比。
此功能的驗證取決於設備,因此沒有 CTS 或 GTS 測試支持此功能。
OEM 必須運行手動測試,以驗證調暗 SDR 元件的圖像質量是否可接受。 OEM 可以通過SurfaceView
播放設備支持的 HDR 標準的內容,以驗證與 HDR 內容一起播放的任何 SDR 元素不會變得過亮。
問題
使 SDR 圖像變暗可能會導致黑色擠壓或原始圖像較暗區域的信息丟失。這是由於較暗的顏色值折疊到較小的一組深色代碼上。
導致不可接受的黑色擠壓的調光實現必須實現抖動算法,該算法將噪聲注入最終圖像,從而減少條帶效應。
無法在顏色管道中的適當位置抖動圖像的 HWC 實現必須請求 SurfaceFlinger 在 GPU 上應用調光和抖動。
實現還可以調整sdrHdrRatioMap
的值以限制 SDR 元素的調光量。調暗到非常低的亮度級別需要使用 GPU,這可以提高圖像質量,但會縮短電池壽命。