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);