Allocate enough memory for HAL_PIXL_FORMAT_YV12

Previously we were not allocating enough memory to align
the uv planes to 16 pixels.
We were allocating:
h * align(w,16) * 3 / 2 bytes
This should be:
h * align(w,16) + h * align(align(w,16)/2, 16)

Bug: 7431048
Change-Id: Iaba969795e8d20c29ee0b703af5dd884a4c88d2e
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
diff --git a/gralloc/gralloc.cpp b/gralloc/gralloc.cpp
index d10dc27..f3610f3 100644
--- a/gralloc/gralloc.cpp
+++ b/gralloc/gralloc.cpp
@@ -193,16 +193,17 @@
     switch (format) {
         case HAL_PIXEL_FORMAT_YV12:
             *stride = ALIGN(w, 16);
+            size = (*stride * h) + (ALIGN(*stride / 2, 16) * h);
             break;
         case HAL_PIXEL_FORMAT_YCrCb_420_SP:
             *stride = w;
+            size = *stride * h * 3 / 2;
             break;
         default:
             ALOGE("invalid yuv format %d\n", format);
             return -EINVAL;
     }
 
-    size = *stride * h * 3 / 2;
     err = ion_alloc_fd(ionfd, size, 0, 1 << ION_HEAP_TYPE_SYSTEM,
                        ion_flags, &fd);
     if (err)