libhwc2.1: Implement SetLayerPerFrameMetadataBlobs

Bug: 143335640
Bug: 148890521

Change-Id: I9349a0d0ef091b54c8450fea655dede244e50f9e
Signed-off-by: Sungjun Bae <june.bae@samsung.com>
diff --git a/libhwc2.1/libdevice/ExynosLayer.cpp b/libhwc2.1/libdevice/ExynosLayer.cpp
index 9ec9fca..9314d93 100644
--- a/libhwc2.1/libdevice/ExynosLayer.cpp
+++ b/libhwc2.1/libdevice/ExynosLayer.cpp
@@ -29,6 +29,11 @@
 
 using namespace android;
 
+#ifndef HWC2_HDR10_PLUS_SEI
+/* baseed on android.hardware.composer.2_3 */
+#define HWC2_HDR10_PLUS_SEI 12
+#endif
+
 /**
  * ExynosLayer implementation
  */
@@ -633,6 +638,21 @@
 int32_t ExynosLayer::SetLayerPerFrameMetadataBlobs(uint32_t numElements, const int32_t* keys, const uint32_t* sizes,
         const uint8_t* metadata)
 {
+
+    for (uint32_t i = 0; i < numElements; i++) {
+        HDEBUGLOGD(eDebugLayer, "HWC2: SetLayerPerFrameMetadataBlobs key(%d), value(%d)",
+                keys[i], metadata[i]);
+        switch (keys[i]) {
+        case HWC2_HDR10_PLUS_SEI:
+            if (allocMetaParcel() == NO_ERROR) {
+                memcpy(&mMetaParcel, metadata, *sizes);
+            } else ALOGE("Layer has no metaParcel!");
+            break;
+        default:
+            return HWC2_ERROR_UNSUPPORTED;
+        }
+    }
+
     return NO_ERROR;
 }