drm_hwcomposer: Set HDR metadata on the connector
Implement a function to set HDR metadata on the connector. Support HDR10
and HLG, which are common HDR types.
Change-Id: Id3dbe8eea2ee6b8ba700af23845a43e2070dd14e
Signed-off-by: Sasha McIntosh <sashamcintosh@google.com>
diff --git a/drm/DrmAtomicStateManager.cpp b/drm/DrmAtomicStateManager.cpp
index 9a8769a..9ce9a93 100644
--- a/drm/DrmAtomicStateManager.cpp
+++ b/drm/DrmAtomicStateManager.cpp
@@ -150,6 +150,21 @@
return -EINVAL;
}
+ if (args.hdr_metadata && connector->GetHdrOutputMetadataProperty()) {
+ auto blob = drm->RegisterUserPropertyBlob(args.hdr_metadata.get(),
+ sizeof(hdr_output_metadata));
+ new_frame_state.hdr_metadata_blob = std::move(blob);
+ if (!new_frame_state.hdr_metadata_blob) {
+ ALOGE("Failed to create %s blob",
+ connector->GetHdrOutputMetadataProperty().GetName().c_str());
+ return -EINVAL;
+ }
+
+ if (!connector->GetHdrOutputMetadataProperty()
+ .AtomicSet(*pset, *new_frame_state.hdr_metadata_blob))
+ return -EINVAL;
+ }
+
auto unused_planes = new_frame_state.used_planes;
if (args.composition) {