[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/HWC2.cpp b/services/surfaceflinger/DisplayHardware/HWC2.cpp
index 5f94bb4..0667f8d 100644
--- a/services/surfaceflinger/DisplayHardware/HWC2.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWC2.cpp
@@ -448,26 +448,21 @@
return Error::None;
}
-Error Display::getHdrCapabilities(
- std::unique_ptr<HdrCapabilities>* outCapabilities) const
+Error Display::getHdrCapabilities(HdrCapabilities* outCapabilities) const
{
float maxLuminance = -1.0f;
float maxAverageLuminance = -1.0f;
float minLuminance = -1.0f;
- std::vector<Hwc2::Hdr> intTypes;
- auto intError = mComposer.getHdrCapabilities(mId, &intTypes,
+ std::vector<Hwc2::Hdr> types;
+ auto intError = mComposer.getHdrCapabilities(mId, &types,
&maxLuminance, &maxAverageLuminance, &minLuminance);
auto error = static_cast<HWC2::Error>(intError);
- std::vector<int32_t> types;
- for (auto type : intTypes) {
- types.push_back(static_cast<int32_t>(type));
- }
if (error != Error::None) {
return error;
}
- *outCapabilities = std::make_unique<HdrCapabilities>(std::move(types),
+ *outCapabilities = HdrCapabilities(std::move(types),
maxLuminance, maxAverageLuminance, minLuminance);
return Error::None;
}