From fd6f6f9788d9c07fa2eb7a3eb6d03d7a07b1d3eb Mon Sep 17 00:00:00 2001 From: Gurchetan Singh Date: Mon, 23 Mar 2020 09:46:09 -0700 Subject: [PATCH] minigbm: vc4: add YUV support Ozone should work with VC4's MMAL in V4L2. Change-Id: Ife783f7005628c49756f251692b0cc42e8b47d8c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/2115562 Reviewed-by: Ewan Roycroft Reviewed-by: Gurchetan Singh Tested-by: Ewan Roycroft Tested-by: Gurchetan Singh Commit-Queue: Gurchetan Singh --- vc4.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/vc4.c b/vc4.c index 739016b..5ea4bc3 100644 --- a/vc4.c +++ b/vc4.c @@ -20,11 +20,23 @@ static const uint32_t render_target_formats[] = { DRM_FORMAT_ARGB8888, DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888 }; +static const uint32_t texture_only_formats[] = { DRM_FORMAT_NV12, DRM_FORMAT_YVU420 }; + static int vc4_init(struct driver *drv) { drv_add_combinations(drv, render_target_formats, ARRAY_SIZE(render_target_formats), &LINEAR_METADATA, BO_USE_RENDER_MASK); + drv_add_combinations(drv, texture_only_formats, ARRAY_SIZE(texture_only_formats), + &LINEAR_METADATA, BO_USE_TEXTURE_MASK); + /* + * Chrome uses DMA-buf mmap to write to YV12 buffers, which are then accessed by the + * Video Encoder Accelerator (VEA). It could also support NV12 potentially in the future. + */ + drv_modify_combination(drv, DRM_FORMAT_YVU420, &LINEAR_METADATA, BO_USE_HW_VIDEO_ENCODER); + drv_modify_combination(drv, DRM_FORMAT_NV12, &LINEAR_METADATA, + BO_USE_HW_VIDEO_DECODER | BO_USE_SCANOUT | BO_USE_HW_VIDEO_ENCODER); + return drv_modify_linear_combinations(drv); } -- 2.11.0