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);