OSDN Git Service

minigbm: mediatek: add support HAL_PIXEL_FORMAT_YV12
authorGurchetan Singh <gurchetansingh@chromium.org>
Sat, 3 Dec 2016 01:54:09 +0000 (17:54 -0800)
committerchrome-bot <chrome-bot@chromium.org>
Fri, 9 Dec 2016 11:30:22 +0000 (03:30 -0800)
For some reason, we use HAL_PIXEL_FORMAT_YV12 instead of
HAL_PIXEL_FORMAT_YCbCr_420_888 as our YUV format on mediatek
based boards. We also pass down a different use flags. Since
mediatek only supports linear buffers the moment, just lump all
the flags together for our YUV supported combination.

BUG=chromium:616275
TEST=Played Youtube video in Oak ARC++ container
CQ-DEPEND=CL:416292

Change-Id: Iac4797517048981235cd17ad464eb1e3852c4072
Reviewed-on: https://chromium-review.googlesource.com/416396
Commit-Ready: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
cros_gralloc/cros_gralloc_module.cc
mediatek.c

index db30f95..220e772 100644 (file)
@@ -169,8 +169,9 @@ static int cros_gralloc_lock(struct gralloc_module_t const* module,
                return CROS_GRALLOC_ERROR_BAD_HANDLE;
        }
 
-       if (hnd->droid_format == HAL_PIXEL_FORMAT_YCbCr_420_888) {
-               cros_gralloc_error("YUV format not compatible.");
+       if ((hnd->droid_format == HAL_PIXEL_FORMAT_YCbCr_420_888)) {
+               cros_gralloc_error("HAL_PIXEL_FORMAT_YCbCr_*_888 format not "
+                                  "compatible.");
                return CROS_GRALLOC_ERROR_BAD_HANDLE;
        }
 
@@ -298,7 +299,8 @@ static int cros_gralloc_lock_ycbcr(struct gralloc_module_t const* module,
                return CROS_GRALLOC_ERROR_BAD_HANDLE;
        }
 
-       if ((hnd->droid_format != HAL_PIXEL_FORMAT_YCbCr_420_888)) {
+       if ((hnd->droid_format != HAL_PIXEL_FORMAT_YCbCr_420_888) &&
+           (hnd->droid_format != HAL_PIXEL_FORMAT_YV12)) {
                cros_gralloc_error("Non-YUV format not compatible.");
                return CROS_GRALLOC_ERROR_BAD_HANDLE;
        }
index 307af84..d4206be 100644 (file)
@@ -34,7 +34,8 @@ static struct supported_combination combos[8] = {
        {DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_NONE,
                BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
        {DRM_FORMAT_YVU420, DRM_FORMAT_MOD_NONE,
-               BO_USE_RENDERING | BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
+               BO_USE_RENDERING | BO_USE_SW_READ_OFTEN | BO_USE_SW_WRITE_OFTEN |
+               BO_USE_SW_READ_RARELY | BO_USE_SW_WRITE_RARELY},
 };
 
 static int mediatek_init(struct driver *drv)