gralloc: Add support for raw12
When the output of the sensor is raw12 format, errors occur
in gralloc. So raw12 format needs to be supported in gralloc.
Change-Id: If9f7808713bae2fb1efb774e65ae742ca20fb201
CRs-Fixed: 2005966
Signed-off-by: Zhu Bin <cbinz@codeaurora.org>
diff --git a/libgralloc/alloc_controller.cpp b/libgralloc/alloc_controller.cpp
index 805948b..87d4c1e 100644
--- a/libgralloc/alloc_controller.cpp
+++ b/libgralloc/alloc_controller.cpp
@@ -245,6 +245,9 @@
case HAL_PIXEL_FORMAT_RAW16:
aligned_w = ALIGN(width, 16);
break;
+ case HAL_PIXEL_FORMAT_RAW12:
+ aligned_w = ALIGN(width * 12 / 8, 8);
+ break;
case HAL_PIXEL_FORMAT_RAW10:
aligned_w = ALIGN(width * 10 / 8, 8);
break;
@@ -553,6 +556,9 @@
case HAL_PIXEL_FORMAT_RAW16:
size = alignedw * alignedh * 2;
break;
+ case HAL_PIXEL_FORMAT_RAW12:
+ size = ALIGN(alignedw * alignedh, 4096);
+ break;
case HAL_PIXEL_FORMAT_RAW10:
size = ALIGN(alignedw * alignedh, 4096);
break;
@@ -793,6 +799,7 @@
case HAL_PIXEL_FORMAT_YCrCb_420_SP_VENUS:
case HAL_PIXEL_FORMAT_NV21_ZSL:
case HAL_PIXEL_FORMAT_RAW16:
+ case HAL_PIXEL_FORMAT_RAW12:
case HAL_PIXEL_FORMAT_RAW10:
getYuvSPPlaneInfo(hnd->base, width, height, 1, ycbcr);
std::swap(ycbcr->cb, ycbcr->cr);