Merge "gralloc: Use adreno_utils api for NV21 and NV12 alignment"
diff --git a/libgralloc/alloc_controller.cpp b/libgralloc/alloc_controller.cpp
index 8eaf7f4..e6693c9 100644
--- a/libgralloc/alloc_controller.cpp
+++ b/libgralloc/alloc_controller.cpp
@@ -105,6 +105,7 @@
     LINK_adreno_isMacroTilingSupportedByGpu = NULL;
     LINK_adreno_compute_compressedfmt_aligned_width_and_height = NULL;
     LINK_adreno_isUBWCSupportedByGpu = NULL;
+    LINK_adreno_get_gpu_pixel_alignment = NULL;
 
     libadreno_utils = ::dlopen("libadreno_utils.so", RTLD_NOW);
     if (libadreno_utils) {
@@ -119,6 +120,8 @@
                         "compute_compressedfmt_aligned_width_and_height");
         *(void **)&LINK_adreno_isUBWCSupportedByGpu =
                 ::dlsym(libadreno_utils, "isUBWCSupportedByGpu");
+        *(void **)&LINK_adreno_get_gpu_pixel_alignment =
+                ::dlsym(libadreno_utils, "get_gpu_pixel_alignment");
     }
 
     // Check if the overriding property debug.gralloc.gfx_ubwc_disable
@@ -214,11 +217,18 @@
 
     aligned_w = width;
     aligned_h = height;
+    int alignment = 32;
     switch (format)
     {
         case HAL_PIXEL_FORMAT_YCrCb_420_SP:
+        case HAL_PIXEL_FORMAT_YCbCr_420_SP:
+            if (LINK_adreno_get_gpu_pixel_alignment) {
+              alignment = LINK_adreno_get_gpu_pixel_alignment();
+            }
+            aligned_w = ALIGN(width, alignment);
+            break;
         case HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO:
-            aligned_w = ALIGN(width, 32);
+            aligned_w = ALIGN(width, alignment);
             break;
         case HAL_PIXEL_FORMAT_RAW16:
             aligned_w = ALIGN(width, 16);
@@ -229,7 +239,6 @@
         case HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED:
             aligned_w = ALIGN(width, 128);
             break;
-        case HAL_PIXEL_FORMAT_YCbCr_420_SP:
         case HAL_PIXEL_FORMAT_YV12:
         case HAL_PIXEL_FORMAT_YCbCr_422_SP:
         case HAL_PIXEL_FORMAT_YCrCb_422_SP:
diff --git a/libgralloc/gr.h b/libgralloc/gr.h
index 978d564..1b8d9b4 100644
--- a/libgralloc/gr.h
+++ b/libgralloc/gr.h
@@ -194,5 +194,7 @@
                                                 int *bpp);
 
         int (*LINK_adreno_isUBWCSupportedByGpu) (ADRENOPIXELFORMAT format);
+
+        unsigned int (*LINK_adreno_get_gpu_pixel_alignment) ();
 };
 #endif /* GR_H_ */