[SurfaceFlinger] Extend HDR support.
Previously we stored HDR10 support in DisplayDevice. This patch extends and
generalizes the support to HLG and Dolby Vision.
Minor: Adapt Hdr type from HAL.
BUG: 73825729
BUG: 77156734
Test: Build, flash, watch Youtube HDR
Change-Id: Id642bc9482523b4646814dca9ecfb1f043987dc5
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index 8db8aa6..0a3ac84 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -824,24 +824,22 @@
mDisplayData[displayId].releaseFences.clear();
}
-std::unique_ptr<HdrCapabilities> HWComposer::getHdrCapabilities(
- int32_t displayId) {
+status_t HWComposer::getHdrCapabilities(
+ int32_t displayId, HdrCapabilities* outCapabilities) {
if (!isValidDisplay(displayId)) {
ALOGE("getHdrCapabilities: Display %d is not valid", displayId);
- return nullptr;
+ return BAD_INDEX;
}
auto& hwcDisplay = mDisplayData[displayId].hwcDisplay;
- std::unique_ptr<HdrCapabilities> capabilities;
- auto error = hwcDisplay->getHdrCapabilities(&capabilities);
+ auto error = hwcDisplay->getHdrCapabilities(outCapabilities);
if (error != HWC2::Error::None) {
ALOGE("getOutputCapabilities: Failed to get capabilities on display %d:"
- " %s (%d)", displayId, to_string(error).c_str(),
- static_cast<int32_t>(error));
- return nullptr;
+ " %s (%d)", displayId, to_string(error).c_str(),
+ static_cast<int32_t>(error));
+ return UNKNOWN_ERROR;
}
-
- return capabilities;
+ return NO_ERROR;
}
std::vector<ui::RenderIntent> HWComposer::getRenderIntents(int32_t displayId,