Merge "libgralloc: force 1M alignment for secure buffers"
diff --git a/libgralloc/gpu.cpp b/libgralloc/gpu.cpp
index f11a5fe..0d070f0 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)
@@ -131,11 +134,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);