libgralloc: force 1M alignment for secure buffers
Align secure buffers to 1M alignment as TZ expects this for
protecting the buffers, MDP5 onwards.
Update the buffer-size to the same alignment used.
Change-Id: I369932a4a72b28c05a3ea216a8bba681de1f9dad
diff --git a/libgralloc/gpu.cpp b/libgralloc/gpu.cpp
index 7b2c1d8..656df38 100644
--- a/libgralloc/gpu.cpp
+++ b/libgralloc/gpu.cpp
@@ -28,9 +28,12 @@
#include "memalloc.h"
#include "alloc_controller.h"
#include <qdMetaData.h>
+#include "mdp_version.h"
using namespace gralloc;
+#define SZ_1M 0x100000
+
gpu_context_t::gpu_context_t(const private_module_t* module,
IAllocController* alloc_ctrl ) :
mAllocCtrl(alloc_ctrl)
@@ -130,11 +133,18 @@
data.offset = 0;
data.fd = -1;
data.base = 0;
- data.size = size;
if(format == HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED)
data.align = 8192;
else
data.align = getpagesize();
+
+ /* force 1MB alignment selectively for secure buffers, MDP5 onwards */
+ if ((qdutils::MDPVersion::getInstance().getMDPVersion() >= \
+ qdutils::MDSS_V5) && (usage & GRALLOC_USAGE_PROTECTED)) {
+ data.align = ALIGN(data.align, SZ_1M);
+ size = ALIGN(size, data.align);
+ }
+ data.size = size;
data.pHandle = (unsigned int) pHandle;
err = mAllocCtrl->allocate(data, usage);