hwc: warn about unexpected formats

Change-Id: Id4f48dba0b8be40ac3bbb228234abb10bfb45ce5
Signed-off-by: Greg Hackmann <ghackmann@google.com>
diff --git a/libhwc/hwc.cpp b/libhwc/hwc.cpp
index 10a545c..dc1606c 100644
--- a/libhwc/hwc.cpp
+++ b/libhwc/hwc.cpp
@@ -236,30 +236,31 @@
     return exynos5_format_to_s3c_format(format) < S3C_FB_PIXEL_FORMAT_MAX;
 }
 
+static bool exynos5_format_is_rgb(int format)
+{
+    switch (format) {
+    case HAL_PIXEL_FORMAT_RGBA_8888:
+    case HAL_PIXEL_FORMAT_RGBX_8888:
+    case HAL_PIXEL_FORMAT_RGB_888:
+    case HAL_PIXEL_FORMAT_RGB_565:
+    case HAL_PIXEL_FORMAT_BGRA_8888:
+    case HAL_PIXEL_FORMAT_RGBA_5551:
+    case HAL_PIXEL_FORMAT_RGBA_4444:
+        return true;
+
+    default:
+        return false;
+    }
+}
+
 static bool exynos5_format_is_supported_by_gscaler(int format)
 {
     switch (format) {
     case HAL_PIXEL_FORMAT_RGBX_8888:
     case HAL_PIXEL_FORMAT_RGB_565:
     case HAL_PIXEL_FORMAT_EXYNOS_YV12:
-    case HAL_PIXEL_FORMAT_YCbCr_420_P:
-    case HAL_PIXEL_FORMAT_YCbCr_422_SP:
-    case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP:
     case HAL_PIXEL_FORMAT_YCbCr_420_SP:
-    case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP:
-    case HAL_PIXEL_FORMAT_YCbCr_422_I:
-    case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I:
-    case HAL_PIXEL_FORMAT_YCbCr_422_P:
-    case HAL_PIXEL_FORMAT_CbYCrY_422_I:
-    case HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I:
-    case HAL_PIXEL_FORMAT_YCrCb_422_SP:
-    case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP:
-    case HAL_PIXEL_FORMAT_EXYNOS_YCrCb_420_SP:
-    case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP:
     case HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED:
-    case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED:
-    case HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I:
-    case HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I:
         return true;
 
     default:
@@ -687,6 +688,12 @@
         ALOGV("\tlayer %u: handle is NULL", i);
         return false;
     }
+    if (!exynos5_format_is_rgb(handle->format) &&
+            !exynos5_format_is_supported_by_gscaler(handle->format)) {
+        ALOGW("\tlayer %u: unexpected format %u", i, handle->format);
+        return false;
+    }
+
     if (exynos5_format_requires_gscaler(handle->format)) {
         if (!exynos5_supports_gscaler(layer, handle->format, false)) {
             ALOGV("\tlayer %u: gscaler required but not supported", i);