From 0a1162e2af357be00610377f297600806b90deca Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Thu, 22 Feb 2024 13:17:06 +0200 Subject: modetest: add support for YUV422 and YUV444 plane format Currently modetest supports only the YUV420 and YVU420 planar YCbCr plane formats (aka YV12 and YU12). Extend the code to add support for YUV422 / YVU422 and YUV444 / YVU444 plane formats. Reviewed-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- tests/modetest/buffers.c | 12 ++++++++++++ tests/util/format.c | 4 ++++ tests/util/pattern.c | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/tests/modetest/buffers.c b/tests/modetest/buffers.c index f00a169f..165b9529 100644 --- a/tests/modetest/buffers.c +++ b/tests/modetest/buffers.c @@ -146,6 +146,10 @@ bo_create(int fd, unsigned int format, case DRM_FORMAT_NV42: case DRM_FORMAT_YUV420: case DRM_FORMAT_YVU420: + case DRM_FORMAT_YUV422: + case DRM_FORMAT_YVU422: + case DRM_FORMAT_YUV444: + case DRM_FORMAT_YVU444: bpp = 8; break; @@ -232,6 +236,8 @@ bo_create(int fd, unsigned int format, case DRM_FORMAT_NV16: case DRM_FORMAT_NV61: case DRM_FORMAT_NV20: + case DRM_FORMAT_YUV422: + case DRM_FORMAT_YVU422: is_planar = true; xsub = 2; ysub = 1; @@ -240,6 +246,8 @@ bo_create(int fd, unsigned int format, case DRM_FORMAT_NV24: case DRM_FORMAT_NV42: case DRM_FORMAT_NV30: + case DRM_FORMAT_YUV444: + case DRM_FORMAT_YVU444: is_planar = true; xsub = 1; ysub = 1; @@ -305,6 +313,10 @@ bo_create(int fd, unsigned int format, case DRM_FORMAT_YUV420: case DRM_FORMAT_YVU420: + case DRM_FORMAT_YUV422: + case DRM_FORMAT_YVU422: + case DRM_FORMAT_YUV444: + case DRM_FORMAT_YVU444: offsets[0] = 0; handles[0] = bo->handle; pitches[0] = bo->pitch; diff --git a/tests/util/format.c b/tests/util/format.c index eda3c671..c6235441 100644 --- a/tests/util/format.c +++ b/tests/util/format.c @@ -62,6 +62,10 @@ static const struct util_format_info format_info[] = { /* YUV planar */ { DRM_FORMAT_YUV420, "YU12", MAKE_YUV_INFO(YUV_YCbCr, 2, 2, 1) }, { DRM_FORMAT_YVU420, "YV12", MAKE_YUV_INFO(YUV_YCrCb, 2, 2, 1) }, + { DRM_FORMAT_YUV422, "YU16", MAKE_YUV_INFO(YUV_YCbCr, 2, 1, 1) }, + { DRM_FORMAT_YVU422, "YV16", MAKE_YUV_INFO(YUV_YCrCb, 2, 1, 1) }, + { DRM_FORMAT_YUV444, "YU24", MAKE_YUV_INFO(YUV_YCbCr, 1, 1, 1) }, + { DRM_FORMAT_YVU444, "YV24", MAKE_YUV_INFO(YUV_YCrCb, 1, 1, 1) }, /* RGB16 */ { DRM_FORMAT_ARGB4444, "AR12", MAKE_RGB_INFO(4, 8, 4, 4, 4, 0, 4, 12) }, { DRM_FORMAT_XRGB4444, "XR12", MAKE_RGB_INFO(4, 8, 4, 4, 4, 0, 0, 0) }, diff --git a/tests/util/pattern.c b/tests/util/pattern.c index 2ff9c033..e5f20c50 100644 --- a/tests/util/pattern.c +++ b/tests/util/pattern.c @@ -1229,10 +1229,14 @@ static void fill_smpte(const struct util_format_info *info, void *planes[3], stride); case DRM_FORMAT_YUV420: + case DRM_FORMAT_YUV422: + case DRM_FORMAT_YUV444: return fill_smpte_yuv_planar(&info->yuv, planes[0], planes[1], planes[2], width, height, stride); case DRM_FORMAT_YVU420: + case DRM_FORMAT_YVU422: + case DRM_FORMAT_YVU444: return fill_smpte_yuv_planar(&info->yuv, planes[0], planes[2], planes[1], width, height, stride); @@ -1646,10 +1650,14 @@ static void fill_tiles(const struct util_format_info *info, void *planes[3], width, height, stride); case DRM_FORMAT_YUV420: + case DRM_FORMAT_YUV422: + case DRM_FORMAT_YUV444: return fill_tiles_yuv_planar(info, planes[0], planes[1], planes[2], width, height, stride); case DRM_FORMAT_YVU420: + case DRM_FORMAT_YVU422: + case DRM_FORMAT_YVU444: return fill_tiles_yuv_planar(info, planes[0], planes[2], planes[1], width, height, stride); -- cgit v1.2.3