gralloc: Add QtiMapperExtensions

This change moves extensions to QtiMapperExtensions to decouple
it from IMapper revisions. The function
QtiMapper::getMapperExtensions() is used to access the extensions
through a mapper instance. QtiMapper revision is incremented to
2.0 to reflect the change.

CRs-Fixed: 2451975
Change-Id: I7043bd380e9b7b3ea8d9bac4da3e886a5d46b631
diff --git a/gralloc/QtiMapper.cpp b/gralloc/QtiMapper.cpp
index dba446a..f040143 100644
--- a/gralloc/QtiMapper.cpp
+++ b/gralloc/QtiMapper.cpp
@@ -45,6 +45,7 @@
 using gralloc::BufferInfo;
 
 QtiMapper::QtiMapper() {
+  extensions_ = new QtiMapperExtensions();
   buf_mgr_ = BufferManager::GetInstance();
   ALOGD_IF(DEBUG, "Created QtiMapper instance");
 }
@@ -263,281 +264,15 @@
   return Void();
 }
 
-Return<void> QtiMapper::getMapSecureBufferFlag(void *buffer, getMapSecureBufferFlag_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  int map_secure_buffer = 0;
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    if (getMetaData(hnd, GET_MAP_SECURE_BUFFER, &map_secure_buffer) != 0) {
-      map_secure_buffer = 0;
-    } else {
-      err = Error::NONE;
-    }
+Return<void> QtiMapper::getMapperExtensions(QtiMapper::getMapperExtensions_cb hidl_cb) {
+  if (extensions_ != nullptr) {
+    hidl_cb(Error::NONE, extensions_);
+  } else {
+    hidl_cb(Error::UNSUPPORTED, extensions_);
   }
-  hidl_cb(err, map_secure_buffer != 0);
   return Void();
 }
 
-Return<void> QtiMapper::getInterlacedFlag(void *buffer, getInterlacedFlag_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  int interlaced_flag = 0;
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    if (getMetaData(hnd, GET_PP_PARAM_INTERLACED, &interlaced_flag) != 0) {
-      interlaced_flag = 0;
-    } else {
-      err = Error::NONE;
-    }
-  }
-  hidl_cb(err, interlaced_flag != 0);
-  return Void();
-}
-
-Return<void> QtiMapper::getCustomDimensions(void *buffer, getCustomDimensions_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  int stride = 0;
-  int height = 0;
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    stride = hnd->width;
-    height = hnd->height;
-    gralloc::GetCustomDimensions(hnd, &stride, &height);
-    err = Error::NONE;
-  }
-  hidl_cb(err, stride, height);
-  return Void();
-}
-
-Return<void> QtiMapper::getRgbDataAddress(void *buffer, getRgbDataAddress_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  void *rgb_data = nullptr;
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    if (gralloc::GetRgbDataAddress(hnd, &rgb_data) == 0) {
-      err = Error::NONE;
-    }
-  }
-  hidl_cb(err, rgb_data);
-  return Void();
-}
-
-Return<void> QtiMapper::calculateBufferAttributes(int32_t width, int32_t height, int32_t format,
-                                                  uint64_t usage,
-                                                  calculateBufferAttributes_cb hidl_cb) {
-  unsigned int alignedw, alignedh;
-  BufferInfo info(width, height, format, usage);
-  gralloc::GetAlignedWidthAndHeight(info, &alignedw, &alignedh);
-  bool ubwc_enabled = gralloc::IsUBwcEnabled(format, usage);
-  hidl_cb(Error::NONE, alignedw, alignedh, ubwc_enabled);
-  return Void();
-}
-
-Return<void> QtiMapper::getCustomFormatFlags(int32_t format, uint64_t usage,
-                                             getCustomFormatFlags_cb hidl_cb) {
-  uint64_t priv_flags = 0;
-  auto err = Error::NONE;
-  int32_t custom_format = format;
-  if (gralloc::GetCustomFormatFlags(format, usage, &custom_format, &priv_flags) != 0) {
-    err = Error::UNSUPPORTED;
-  }
-  hidl_cb(err, custom_format, priv_flags);
-  return Void();
-}
-
-Return<void> QtiMapper::getColorSpace(void *buffer, getColorSpace_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  int color_space = 0;
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    gralloc::GetColorSpaceFromMetadata(hnd, &color_space);
-    err = Error::NONE;
-  }
-  hidl_cb(err, color_space);
-  return Void();
-}
-
-Return<void> QtiMapper::getYuvPlaneInfo(void *buffer, getYuvPlaneInfo_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  hidl_vec<YCbCrLayout> layout;
-  layout.resize(2);
-  android_ycbcr yuv_plane_info[2];
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    if (gralloc::GetYUVPlaneInfo(hnd, yuv_plane_info) == 0) {
-      err = Error::NONE;
-      for (int i=0; i < 2; i++) {
-        layout[i].y = yuv_plane_info[i].y;
-        layout[i].cr = yuv_plane_info[i].cr;
-        layout[i].cb = yuv_plane_info[i].cb;
-        layout[i].yStride = static_cast<uint32_t>(yuv_plane_info[i].ystride);
-        layout[i].cStride = static_cast<uint32_t>(yuv_plane_info[i].cstride);
-        layout[i].chromaStep = static_cast<uint32_t>(yuv_plane_info[i].chroma_step);
-      }
-    }
-  }
-  hidl_cb(err, layout);
-  return Void();
-}
-
-Return<Error> QtiMapper::setSingleBufferMode(void *buffer, bool enable) {
-  auto err = Error::BAD_BUFFER;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    if (setMetaData(hnd, SET_SINGLE_BUFFER_MODE, &enable) != 0) {
-      err = Error::UNSUPPORTED;
-    } else {
-      err = Error::NONE;
-    }
-  }
-  return err;
-}
-
-#ifdef QTI_MAPPER_1_1
-Return<void> QtiMapper::getFd(void *buffer, getFd_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  int fd = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    fd = hnd->fd;
-  }
-  hidl_cb(err, fd);
-  return Void();
-}
-
-Return<void> QtiMapper::getWidth(void *buffer, getWidth_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  int width = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    width = hnd->width;
-  }
-  hidl_cb(err, width);
-  return Void();
-}
-
-Return<void> QtiMapper::getHeight(void *buffer, getHeight_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  int height = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    height = hnd->height;
-  }
-  hidl_cb(err, height);
-  return Void();
-}
-
-Return<void> QtiMapper::getFormat(void *buffer, getFormat_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  int format = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    format = hnd->format;
-  }
-  hidl_cb(err, format);
-  return Void();
-}
-
-Return<void> QtiMapper::getPrivateFlags(void *buffer, getPrivateFlags_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  int flags = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    flags = hnd->flags;
-  }
-  hidl_cb(err, flags);
-  return Void();
-}
-
-Return<void> QtiMapper::getUnalignedWidth(void *buffer, getUnalignedWidth_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  int unaligned_width = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    unaligned_width = hnd->unaligned_width;
-  }
-  hidl_cb(err, unaligned_width);
-  return Void();
-}
-
-Return<void> QtiMapper::getUnalignedHeight(void *buffer, getUnalignedHeight_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  int unaligned_height = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    unaligned_height = hnd->unaligned_height;
-  }
-  hidl_cb(err, unaligned_height);
-  return Void();
-}
-
-Return<void> QtiMapper::getLayerCount(void *buffer, getLayerCount_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  unsigned int layer_count = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    layer_count = hnd->layer_count;
-  }
-  hidl_cb(err, layer_count);
-  return Void();
-}
-
-Return<void> QtiMapper::getId(void *buffer, getId_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  uint64_t id = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    id = hnd->id;
-  }
-  hidl_cb(err, id);
-  return Void();
-}
-
-Return<void> QtiMapper::getUsageFlags(void *buffer, getUsageFlags_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  uint64_t usage = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    usage = hnd->usage;
-  }
-  hidl_cb(err, usage);
-  return Void();
-}
-
-Return<void> QtiMapper::getSize(void *buffer, getSize_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  unsigned int size = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    size = hnd->size;
-  }
-  hidl_cb(err, size);
-  return Void();
-}
-
-Return<void> QtiMapper::getOffset(void *buffer, getOffset_cb hidl_cb) {
-  auto err = Error::BAD_BUFFER;
-  unsigned int offset = 0;
-  auto hnd = static_cast<private_handle_t *>(buffer);
-  if (buffer != nullptr && private_handle_t::validate(hnd) == 0) {
-    err = Error::NONE;
-    offset = hnd->offset;
-  }
-  hidl_cb(err, offset);
-  return Void();
-}
-#endif
-
 // Methods from ::android::hidl::base::V1_0::IBase follow.
 
 // When we are in passthrough mode, this method is used