gralloc: Add support for QtiMapperExtension version 1.1

Add new API getSurfaceMetadata_V1() which will take a valid pointer
to surface metadata and fill it with metadata values.

CRs-Fixed: 2505696
Change-Id: I82882a7cb36a5bd18417fd43a19976e078c77ca9
diff --git a/gralloc/Android.mk b/gralloc/Android.mk
index 6603f43..9ad44e5 100644
--- a/gralloc/Android.mk
+++ b/gralloc/Android.mk
@@ -71,7 +71,8 @@
                                   vendor.qti.hardware.display.mapper@2.0 \
                                   vendor.qti.hardware.display.mapperextensions@1.0 \
                                   android.hardware.graphics.mapper@2.0 \
-                                  android.hardware.graphics.mapper@2.1
+                                  android.hardware.graphics.mapper@2.1 \
+                                  vendor.qti.hardware.display.mapperextensions@1.1
 LOCAL_CFLAGS                  := $(common_flags) -DLOG_TAG=\"qdgralloc\" -Wno-sign-conversion
 LOCAL_ADDITIONAL_DEPENDENCIES := $(common_deps)
 LOCAL_SRC_FILES               := QtiMapper.cpp QtiMapperExtensions.cpp
diff --git a/gralloc/QtiMapper.h b/gralloc/QtiMapper.h
index eca74f0..7302e5e 100644
--- a/gralloc/QtiMapper.h
+++ b/gralloc/QtiMapper.h
@@ -59,8 +59,8 @@
 using ::android::hidl::base::V1_0::IBase;
 using gralloc::BufferManager;
 using ::vendor::qti::hardware::display::mapper::V2_0::IQtiMapper;
-using ::vendor::qti::hardware::display::mapperextensions::V1_0::IQtiMapperExtensions;
-using ::vendor::qti::hardware::display::mapperextensions::V1_0::implementation::QtiMapperExtensions;
+using ::vendor::qti::hardware::display::mapperextensions::V1_1::IQtiMapperExtensions;
+using ::vendor::qti::hardware::display::mapperextensions::V1_1::implementation::QtiMapperExtensions;
 
 using IMapper_2_1 = android::hardware::graphics::mapper::V2_1::IMapper;
 using BufferDescriptorInfo_2_0 =
@@ -92,7 +92,7 @@
                                     createDescriptor_2_1_cb _hidl_cb) override;
 
   Return<void> getMapperExtensions(getMapperExtensions_cb hidl_cb);
-  sp<mapperextensions::V1_0::IQtiMapperExtensions> extensions_ = nullptr;
+  sp<mapperextensions::V1_1::IQtiMapperExtensions> extensions_ = nullptr;
 
  private:
   BufferManager *buf_mgr_ = nullptr;
diff --git a/gralloc/QtiMapperExtensions.cpp b/gralloc/QtiMapperExtensions.cpp
index afe3efa..56b747b 100644
--- a/gralloc/QtiMapperExtensions.cpp
+++ b/gralloc/QtiMapperExtensions.cpp
@@ -40,7 +40,7 @@
 namespace hardware {
 namespace display {
 namespace mapperextensions {
-namespace V1_0 {
+namespace V1_1 {
 namespace implementation {
 
 using gralloc::BufferInfo;
@@ -351,8 +351,23 @@
   return Void();
 }
 
+Return<Error> QtiMapperExtensions::getSurfaceMetadata_V1(void *buffer, void *metadata) {
+  auto err = Error::BAD_BUFFER;
+  auto hnd = static_cast<private_handle_t *>(buffer);
+  if (metadata != nullptr && buffer != nullptr && private_handle_t::validate(hnd) == 0) {
+    if (getMetaData(hnd, GET_GRAPHICS_METADATA, metadata) == 0) {
+      err = Error::NONE;
+    } else {
+      err = Error::UNSUPPORTED;
+    }
+  } else {
+    ALOGE("%s: buffer pointer: %p, metadata pointer: %p ", __FUNCTION__, buffer, metadata);
+  }
+  return err;
+}
+
 }  // namespace implementation
-}  // namespace V1_0
+}  // namespace V1_1
 }  // namespace mapperextensions
 }  // namespace display
 }  // namespace hardware
diff --git a/gralloc/QtiMapperExtensions.h b/gralloc/QtiMapperExtensions.h
index e266e66..b333312 100644
--- a/gralloc/QtiMapperExtensions.h
+++ b/gralloc/QtiMapperExtensions.h
@@ -32,7 +32,7 @@
 
 #include <hidl/MQDescriptor.h>
 #include <hidl/Status.h>
-#include <vendor/qti/hardware/display/mapperextensions/1.0/IQtiMapperExtensions.h>
+#include <vendor/qti/hardware/display/mapperextensions/1.1/IQtiMapperExtensions.h>
 
 #include "gr_buf_mgr.h"
 namespace vendor {
@@ -40,7 +40,7 @@
 namespace hardware {
 namespace display {
 namespace mapperextensions {
-namespace V1_0 {
+namespace V1_1 {
 namespace implementation {
 
 using ::android::sp;
@@ -56,7 +56,10 @@
 using ::android::hidl::base::V1_0::DebugInfo;
 using ::android::hidl::base::V1_0::IBase;
 using gralloc::BufferManager;
-using ::vendor::qti::hardware::display::mapperextensions::V1_0::IQtiMapperExtensions;
+using ::vendor::qti::hardware::display::mapperextensions::V1_1::IQtiMapperExtensions;
+using ::vendor::qti::hardware::display::mapperextensions::V1_0::Error;
+using ::vendor::qti::hardware::display::mapperextensions::V1_0::PlaneLayout;
+using ::vendor::qti::hardware::display::mapperextensions::V1_0::YCbCrLayout;
 
 class QtiMapperExtensions : public IQtiMapperExtensions {
  public:
@@ -88,10 +91,11 @@
   Return<void> getSurfaceMetadata(void *buffer, getSurfaceMetadata_cb _hidl_cb) override;
   Return<void> getFormatLayout(int32_t format, uint64_t usage, int32_t flags, int32_t width,
                                int32_t height, getFormatLayout_cb hidl_cb) override;
+  Return<Error> getSurfaceMetadata_V1(void *buffer, void *metadata) override;
 };
 
 }  // namespace implementation
-}  // namespace V1_0
+}  // namespace V1_1
 }  // namespace mapperextensions
 }  // namespace display
 }  // namespace hardware