Merge branch 'LA.BF.1.1.3_rb1.5' of git://codeaurora.org/platform/hardware/qcom/display into cm-13.0
diff --git a/libgralloc/alloc_controller.cpp b/libgralloc/alloc_controller.cpp
index 066a1fe..ff62c6e 100644
--- a/libgralloc/alloc_controller.cpp
+++ b/libgralloc/alloc_controller.cpp
@@ -93,6 +93,7 @@
 {
     LINK_adreno_compute_aligned_width_and_height = NULL;
     LINK_adreno_compute_padding = NULL;
+    LINK_adreno_get_gpu_pixel_alignment = NULL;
 
     libadreno_utils = ::dlopen("libadreno_utils.so", RTLD_NOW);
     if (libadreno_utils) {
@@ -100,6 +101,8 @@
             ::dlsym(libadreno_utils, "compute_aligned_width_and_height");
         *(void **)&LINK_adreno_compute_padding = ::dlsym(libadreno_utils,
                                            "compute_surface_padding");
+        *(void **)&LINK_adreno_get_gpu_pixel_alignment =
+                ::dlsym(libadreno_utils, "get_gpu_pixel_alignment");
     }
 }
 
@@ -164,16 +167,22 @@
             }
         }
     } else {
+        int alignment = 32;
         switch (format)
         {
             case HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO:
-                aligned_w = ALIGN(width, 32);
+                aligned_w = ALIGN(width, alignment);
                 break;
             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_YCrCb_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_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 ce63d42..484b980 100644
--- a/libgralloc/gr.h
+++ b/libgralloc/gr.h
@@ -120,5 +120,6 @@
                                                 int *aligned_w,
                                                 int *aligned_h);
 
+        unsigned int (*LINK_adreno_get_gpu_pixel_alignment) ();
 };
 #endif /* GR_H_ */