Gralloc: Do not use adreno for secure camera and secure display

Avoid using adreno size calculations for secure camera and
secure display buffers.

Change-Id: Ib61d893cbcc57b10070250a63b8fa79106de4af3
CRs-Fixed: 2262355
diff --git a/gralloc/gr_buf_mgr.cpp b/gralloc/gr_buf_mgr.cpp
index 7aa4b05..41f590d 100644
--- a/gralloc/gr_buf_mgr.cpp
+++ b/gralloc/gr_buf_mgr.cpp
@@ -285,7 +285,7 @@
   bool use_adreno_for_size = false;
   GraphicsMetadata graphics_metadata = {};
 
-  use_adreno_for_size = ((buffer_type != BUFFER_TYPE_VIDEO) && GetAdrenoSizeAPIStatus());
+  use_adreno_for_size = CanUseAdrenoForSize(buffer_type, usage);
   if (use_adreno_for_size) {
     GetGpuResourceSizeAndDimensions(info, &size, &alignedw, &alignedh, &graphics_metadata);
   } else {
diff --git a/gralloc/gr_utils.cpp b/gralloc/gr_utils.cpp
index 282bcc2..10bbf27 100644
--- a/gralloc/gr_utils.cpp
+++ b/gralloc/gr_utils.cpp
@@ -998,6 +998,19 @@
   *size = adreno_mem_info->AdrenoGetAlignedGpuBufferSize(graphics_metadata->data);
 }
 
+bool CanUseAdrenoForSize(int buffer_type, uint64_t usage) {
+  if (buffer_type == BUFFER_TYPE_VIDEO || !GetAdrenoSizeAPIStatus()) {
+    return false;
+  }
+
+  if ((usage & BufferUsage::PROTECTED) && ((usage & BufferUsage::CAMERA_OUTPUT) ||
+      (usage & GRALLOC_USAGE_PRIVATE_SECURE_DISPLAY))) {
+    return false;
+  }
+
+  return true;
+}
+
 bool GetAdrenoSizeAPIStatus() {
   AdrenoMemInfo* adreno_mem_info = AdrenoMemInfo::GetInstance();
   if (adreno_mem_info) {
diff --git a/gralloc/gr_utils.h b/gralloc/gr_utils.h
index 7e2d1fa..9f21f5b 100644
--- a/gralloc/gr_utils.h
+++ b/gralloc/gr_utils.h
@@ -106,6 +106,7 @@
 void GetGpuResourceSizeAndDimensions(const BufferInfo &info, unsigned int *size,
                                      unsigned int *alignedw, unsigned int *alignedh,
                                      GraphicsMetadata *graphics_metadata);
+bool CanUseAdrenoForSize(int buffer_type, uint64_t usage);
 bool GetAdrenoSizeAPIStatus();
 bool UseUncached(int format, uint64_t usage);
 uint64_t GetHandleFlags(int format, uint64_t usage);