--- src/gbm/backends/dri/gbm_dri.c | 13 +++++++++++++ src/gbm/main/gbm.h | 5 ++++- 2 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c index fef9d47..4812e6b 100755 --- a/src/gbm/backends/dri/gbm_dri.c +++ b/src/gbm/backends/dri/gbm_dri.c @@ -285,6 +285,9 @@ gbm_dri_is_format_supported(struct gbm_device *gbm, if (usage & GBM_BO_USE_SCANOUT) return 0; break; + case GBM_BO_FORMAT_YUYV: + case GBM_FORMAT_YUYV: + break; default: return 0; } @@ -336,6 +339,9 @@ gbm_dri_to_gbm_format(uint32_t dri_format) case __DRI_IMAGE_FORMAT_ABGR8888: ret = GBM_FORMAT_ABGR8888; break; + case __DRI_IMAGE_FORMAT_GR88: + ret = GBM_FORMAT_YUYV; + break; default: ret = 0; break; @@ -484,6 +490,13 @@ gbm_dri_bo_create(struct gbm_device *gbm, case GBM_FORMAT_ABGR8888: dri_format = __DRI_IMAGE_FORMAT_ABGR8888; break; + /* wayland/driimage doesn't have a specific format for YUYV, but + * treat it as a special case of planar YUV: two overlaped planes + * so we use GR88 for YUYV dirimage allocation + */ + case GBM_FORMAT_YUYV: + dri_format = __DRI_IMAGE_FORMAT_GR88; + break; default: return NULL; } diff --git a/src/gbm/main/gbm.h b/src/gbm/main/gbm.h index 55f012a..50ccb43 100755 --- a/src/gbm/main/gbm.h +++ b/src/gbm/main/gbm.h @@ -73,7 +73,10 @@ enum gbm_bo_format { /** RGB with 8 bits per channel in a 32 bit value */ GBM_BO_FORMAT_XRGB8888, /** ARGB with 8 bits per channel in a 32 bit value */ - GBM_BO_FORMAT_ARGB8888 + GBM_BO_FORMAT_ARGB8888, + /** YUYV: packed YUV format with 422 subsampling*/ + GBM_BO_FORMAT_YUYV, + }; #define __gbm_fourcc_code(a,b,c,d) ((uint32_t)(a) | ((uint32_t)(b) << 8) | \ -- 1.7.5.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev