sdm: Notify surfaceflinger to draw S3D framebuffer target

Set S3D flag to private handle so that SurfaceFlinger can help
to draw S3D framebuffer target according to the flag in case
MDP can not handle some of S3D cases.

Change-Id: Ic39d0c0dd47c71e8a677d1e52af2c485494235b3
CRs-fixed: 999055
diff --git a/libqdutils/qdMetaData.h b/libqdutils/qdMetaData.h
index fd4f444..8c0a0b0 100644
--- a/libqdutils/qdMetaData.h
+++ b/libqdutils/qdMetaData.h
@@ -57,6 +57,11 @@
     int32_t sliceHeight;
 };
 
+struct S3DGpuComp_t {
+    int32_t displayId; /* on which display S3D is composed by client */
+    uint32_t s3dMode; /* the S3D format of this layer to be accessed by client */
+};
+
 struct MetaData_t {
     int32_t operation;
     int32_t interlaced;
@@ -79,6 +84,8 @@
     /* Set by graphics to indicate that this buffer will be written to but not
      * swapped out */
     uint32_t isSingleBufferMode;
+    /* Indicate GPU to draw S3D layer on dedicate display device */
+    struct S3DGpuComp_t s3dComp;
 };
 
 enum DispParamType {
@@ -97,6 +104,7 @@
     LINEAR_FORMAT = 0x1000,
     SET_IGC = 0x2000,
     SET_SINGLE_BUFFER_MODE = 0x4000,
+    SET_S3D_COMP = 0x8000,
 };
 
 enum DispFetchParamType {
@@ -109,6 +117,7 @@
     GET_LINEAR_FORMAT = 0x1000,
     GET_IGC = 0x2000,
     GET_SINGLE_BUFFER_MODE = 0x4000,
+    GET_S3D_COMP = 0x8000,
 };
 
 struct private_handle_t;
@@ -119,6 +128,9 @@
         void *param);
 
 int copyMetaData(struct private_handle_t *src, struct private_handle_t *dst);
+
+int clearMetaData(struct private_handle_t *handle, enum DispParamType paramType);
+
 #ifdef __cplusplus
 }
 #endif