hwc: Add support for RGBA_4444 and RGBA_5551 formats

1. Modify gralloc library to allocate buffers for RGBA_4444 and
   RGBA_5551 formats
2. Modify copybit library to add composition support for RGBA_4444
   and RGBA_5551 layers
3. Modify hwc library to add MDP composition and rotator support for
   RGBA_4444 and RGBA_5551 layers.

Change-Id: I30dbc4e5e2c010835fa7e7663f996f67779a1803
diff --git a/libcopybit/copybit.cpp b/libcopybit/copybit.cpp
index bd9fc1a..421f531 100644
--- a/libcopybit/copybit.cpp
+++ b/libcopybit/copybit.cpp
@@ -126,6 +126,8 @@
 static int get_format(int format) {
     switch (format) {
         case HAL_PIXEL_FORMAT_RGB_565:       return MDP_RGB_565;
+        case HAL_PIXEL_FORMAT_RGBA_5551:     return MDP_RGBA_5551;
+        case HAL_PIXEL_FORMAT_RGBA_4444:     return MDP_RGBA_4444;
         case HAL_PIXEL_FORMAT_RGBX_8888:     return MDP_RGBX_8888;
         case HAL_PIXEL_FORMAT_BGRX_8888:     return MDP_BGRX_8888;
         case HAL_PIXEL_FORMAT_RGB_888:       return MDP_RGB_888;
diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp
index 3357920..6a74625 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -1154,6 +1154,8 @@
     if(hnd != NULL) {
         switch(hnd->format) {
             case HAL_PIXEL_FORMAT_RGBA_8888:
+            case HAL_PIXEL_FORMAT_RGBA_5551:
+            case HAL_PIXEL_FORMAT_RGBA_4444:
             case HAL_PIXEL_FORMAT_RGB_565:
             case HAL_PIXEL_FORMAT_RGB_888:
             case HAL_PIXEL_FORMAT_BGRA_8888:
diff --git a/liboverlay/overlayUtils.cpp b/liboverlay/overlayUtils.cpp
index cbd52ae..32b2013 100644
--- a/liboverlay/overlayUtils.cpp
+++ b/liboverlay/overlayUtils.cpp
@@ -93,6 +93,10 @@
             return MDP_RGB_888;
         case HAL_PIXEL_FORMAT_RGB_565:
             return MDP_RGB_565;
+        case HAL_PIXEL_FORMAT_RGBA_5551:
+            return MDP_RGBA_5551;
+        case HAL_PIXEL_FORMAT_RGBA_4444:
+            return MDP_RGBA_4444;
         case HAL_PIXEL_FORMAT_BGRA_8888:
             return MDP_BGRA_8888;
         case HAL_PIXEL_FORMAT_BGRX_8888:
@@ -126,9 +130,6 @@
             return MDP_Y_CBCR_H2V2_VENUS;
         default:
             //Unsupported by MDP
-            //---graphics.h--------
-            //HAL_PIXEL_FORMAT_RGBA_5551
-            //HAL_PIXEL_FORMAT_RGBA_4444
             //---gralloc_priv.h-----
             //HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO    = 0x7FA30C01
             //HAL_PIXEL_FORMAT_R_8                    = 0x10D
@@ -180,6 +181,10 @@
             return HAL_PIXEL_FORMAT_RGB_888;
         case MDP_RGB_565:
             return HAL_PIXEL_FORMAT_RGB_565;
+        case MDP_RGBA_5551:
+            return HAL_PIXEL_FORMAT_RGBA_5551;
+        case MDP_RGBA_4444:
+            return HAL_PIXEL_FORMAT_RGBA_4444;
         case MDP_BGRA_8888:
             return HAL_PIXEL_FORMAT_BGRA_8888;
         case MDP_Y_CR_CB_GH2V2:
diff --git a/liboverlay/overlayUtils.h b/liboverlay/overlayUtils.h
index 2b8e303..ff6d4ef 100644
--- a/liboverlay/overlayUtils.h
+++ b/liboverlay/overlayUtils.h
@@ -432,6 +432,8 @@
         case MDP_BGRA_8888:
         case MDP_RGBX_8888:
         case MDP_RGB_565:
+        case MDP_RGBA_4444:
+        case MDP_RGBA_5551:
             return true;
         default:
             return false;
@@ -443,6 +445,8 @@
     #define STR(f) #f;
     static const char* formats[MDP_IMGTYPE_LIMIT + 1] = {0};
     formats[MDP_RGB_565] = STR(MDP_RGB_565);
+    formats[MDP_RGBA_5551] = STR(MDP_RGBA_5551);
+    formats[MDP_RGBA_4444] = STR(MDP_RGBA_4444);
     formats[MDP_XRGB_8888] = STR(MDP_XRGB_8888);
     formats[MDP_Y_CBCR_H2V2] = STR(MDP_Y_CBCR_H2V2);
     formats[MDP_Y_CBCR_H2V2_ADRENO] = STR(MDP_Y_CBCR_H2V2_ADRENO);