From: "Sharma, Swati2" <swati2.sharma@intel.com>
To: Kamil Konieczny <kamil.konieczny@linux.intel.com>,
<igt-dev@lists.freedesktop.org>
Cc: Renjun Wang <renjunw0@foxmail.com>,
Juha-Pekka Heikkila <juha-pekka.heikkila@intel.com>,
Karthik B S <karthik.b.s@intel.com>
Subject: Re: [PATCH i-g-t] lib/igt_fb: add YUV|YVU-410|411|444 formats
Date: Tue, 17 Feb 2026 01:29:07 +0530 [thread overview]
Message-ID: <294245f1-b410-4374-a90e-bde2303be29e@intel.com> (raw)
In-Reply-To: <20260216181610.129209-1-kamil.konieczny@linux.intel.com>
Hi Kamil/Renjun
Overall patch LGTM. Can you add these formats to igt_reduce_format()?
These formats are not supported by i915/xe driver; so can't be validated
on intel h/w.
Reviewed-by: Swati Sharma <swati2.sharma@intel.com>
On 16-02-2026 11:46 pm, Kamil Konieczny wrote:
> From: Renjun Wang <renjunw0@foxmail.com>
>
> Add support for additional YUV and YVU format variants in
> framebuffer and color encoding handling. Extend format
> descriptors, color encoding configuration, YUV|YVU buffer
> clearing, parameter calculation, and format conversions to
> support 4:1:0, 4:1:1, and 4:4:4 chroma subsampling formats.
>
> Cc: Juha-Pekka Heikkila <juha-pekka.heikkila@intel.com>
> Cc: Karthik B S <karthik.b.s@intel.com>
> Cc: Swati Sharma <swati2.sharma@intel.com>
> Signed-off-by: Renjun Wang <renjunw0@foxmail.com>
> Signed-off-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
> ---
> Reformatted subject, added Cc [Kamil]
>
> lib/igt_color_encoding.c | 6 ++++
> lib/igt_fb.c | 72 ++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 78 insertions(+)
>
> diff --git a/lib/igt_color_encoding.c b/lib/igt_color_encoding.c
> index a7bd2b22f..da56b2b10 100644
> --- a/lib/igt_color_encoding.c
> +++ b/lib/igt_color_encoding.c
> @@ -140,10 +140,16 @@ static const struct color_encoding_format {
> { DRM_FORMAT_NV16, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> { DRM_FORMAT_NV21, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> { DRM_FORMAT_NV61, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> + { DRM_FORMAT_YUV410, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> + { DRM_FORMAT_YUV411, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> { DRM_FORMAT_YUV420, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> { DRM_FORMAT_YUV422, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> + { DRM_FORMAT_YUV444, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> + { DRM_FORMAT_YVU410, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> + { DRM_FORMAT_YVU411, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> { DRM_FORMAT_YVU420, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> { DRM_FORMAT_YVU422, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> + { DRM_FORMAT_YVU444, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> { DRM_FORMAT_YUYV, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> { DRM_FORMAT_YVYU, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> { DRM_FORMAT_UYVY, 255.f, 16.f, 235.f, 16.f, 128.f, 240.f },
> diff --git a/lib/igt_fb.c b/lib/igt_fb.c
> index d59fe133b..fa9220953 100644
> --- a/lib/igt_fb.c
> +++ b/lib/igt_fb.c
> @@ -282,6 +282,16 @@ static const struct format_desc_struct {
> .num_planes = 1, .plane_bpp = { 16, },
> .hsub = 2, .vsub = 1,
> },
> + { .name = "YU10", .depth = -1, .drm_id = DRM_FORMAT_YUV410,
> + .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> + .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> + .hsub = 4, .vsub = 4,
> + },
> + { .name = "YU11", .depth = -1, .drm_id = DRM_FORMAT_YUV411,
> + .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> + .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> + .hsub = 4, .vsub = 1,
> + },
> { .name = "YU12", .depth = -1, .drm_id = DRM_FORMAT_YUV420,
> .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> @@ -292,6 +302,21 @@ static const struct format_desc_struct {
> .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> .hsub = 2, .vsub = 1,
> },
> + { .name = "YU24", .depth = -1, .drm_id = DRM_FORMAT_YUV444,
> + .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> + .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> + .hsub = 1, .vsub = 1,
> + },
> + { .name = "YV10", .depth = -1, .drm_id = DRM_FORMAT_YVU410,
> + .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> + .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> + .hsub = 4, .vsub = 4,
> + },
> + { .name = "YV11", .depth = -1, .drm_id = DRM_FORMAT_YVU411,
> + .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> + .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> + .hsub = 4, .vsub = 1,
> + },
> { .name = "YV12", .depth = -1, .drm_id = DRM_FORMAT_YVU420,
> .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> @@ -302,6 +327,11 @@ static const struct format_desc_struct {
> .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> .hsub = 2, .vsub = 1,
> },
> + { .name = "YV24", .depth = -1, .drm_id = DRM_FORMAT_YVU444,
> + .cairo_id = CAIRO_FORMAT_RGB24, .convert = true,
> + .num_planes = 3, .plane_bpp = { 8, 8, 8, },
> + .hsub = 1, .vsub = 1,
> + },
> { .name = "Y410", .depth = -1, .drm_id = DRM_FORMAT_Y410,
> .cairo_id = CAIRO_FORMAT_RGBA128F, .convert = true,
> .num_planes = 1, .plane_bpp = { 32, },
> @@ -1164,10 +1194,16 @@ static void clear_yuv_buffer(struct igt_fb *fb)
> full_range ? 0x800000008000ULL : 0x800010008000ULL,
> plane_size[0] / sizeof(uint64_t));
> break;
> + case DRM_FORMAT_YUV410:
> + case DRM_FORMAT_YUV411:
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> + case DRM_FORMAT_YVU410:
> + case DRM_FORMAT_YVU411:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> igt_assert(ARRAY_SIZE(plane_size) == 3);
> memset(ptr + fb->offsets[0],
> full_range ? 0x00 : 0x10,
> @@ -3675,10 +3711,16 @@ static void get_yuv_parameters(struct igt_fb *fb, struct yuv_parameters *params)
> params->uv_inc = 2;
> break;
>
> + case DRM_FORMAT_YUV410:
> + case DRM_FORMAT_YUV411:
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> + case DRM_FORMAT_YVU410:
> + case DRM_FORMAT_YVU411:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> params->ay_inc = 1;
> params->uv_inc = 1;
> break;
> @@ -3709,10 +3751,16 @@ static void get_yuv_parameters(struct igt_fb *fb, struct yuv_parameters *params)
> case DRM_FORMAT_NV16:
> case DRM_FORMAT_NV21:
> case DRM_FORMAT_NV61:
> + case DRM_FORMAT_YUV410:
> + case DRM_FORMAT_YUV411:
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> + case DRM_FORMAT_YVU410:
> + case DRM_FORMAT_YVU411:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> case DRM_FORMAT_P010:
> case DRM_FORMAT_P012:
> case DRM_FORMAT_P016:
> @@ -3752,15 +3800,21 @@ static void get_yuv_parameters(struct igt_fb *fb, struct yuv_parameters *params)
> params->v_offset = fb->offsets[1];
> break;
>
> + case DRM_FORMAT_YUV410:
> + case DRM_FORMAT_YUV411:
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> params->y_offset = fb->offsets[0];
> params->u_offset = fb->offsets[1];
> params->v_offset = fb->offsets[2];
> break;
>
> + case DRM_FORMAT_YVU410:
> + case DRM_FORMAT_YVU411:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> params->y_offset = fb->offsets[0];
> params->u_offset = fb->offsets[2];
> params->v_offset = fb->offsets[1];
> @@ -4497,11 +4551,17 @@ static void fb_convert(struct fb_convert *cvt)
> case DRM_FORMAT_NV61:
> case DRM_FORMAT_UYVY:
> case DRM_FORMAT_VYUY:
> + case DRM_FORMAT_YUV410:
> + case DRM_FORMAT_YUV411:
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YUYV:
> + case DRM_FORMAT_YVU410:
> + case DRM_FORMAT_YVU411:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> case DRM_FORMAT_YVYU:
> convert_yuv_to_rgb24(cvt);
> return;
> @@ -4515,11 +4575,17 @@ static void fb_convert(struct fb_convert *cvt)
> case DRM_FORMAT_NV61:
> case DRM_FORMAT_UYVY:
> case DRM_FORMAT_VYUY:
> + case DRM_FORMAT_YUV410:
> + case DRM_FORMAT_YUV411:
> case DRM_FORMAT_YUV420:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YUYV:
> + case DRM_FORMAT_YVU410:
> + case DRM_FORMAT_YVU411:
> case DRM_FORMAT_YVU420:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> case DRM_FORMAT_YVYU:
> convert_rgb24_to_yuv(cvt);
> return;
> @@ -5095,9 +5161,15 @@ bool igt_format_is_yuv(uint32_t drm_format)
> case DRM_FORMAT_NV21:
> case DRM_FORMAT_NV61:
> case DRM_FORMAT_YUV420:
> + case DRM_FORMAT_YUV410:
> + case DRM_FORMAT_YUV411:
> case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YVU420:
> + case DRM_FORMAT_YVU410:
> + case DRM_FORMAT_YVU411:
> case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_YVU444:
> case DRM_FORMAT_P010:
> case DRM_FORMAT_P012:
> case DRM_FORMAT_P016:
next prev parent reply other threads:[~2026-02-16 19:59 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-16 18:16 [PATCH i-g-t] lib/igt_fb: add YUV|YVU-410|411|444 formats Kamil Konieczny
2026-02-16 19:07 ` ✓ Xe.CI.BAT: success for " Patchwork
2026-02-16 19:23 ` ✓ i915.CI.BAT: " Patchwork
2026-02-16 19:59 ` Sharma, Swati2 [this message]
2026-03-25 16:19 ` [PATCH i-g-t] " Kamil Konieczny
2026-02-16 21:32 ` ✗ i915.CI.Full: failure for " Patchwork
2026-03-23 21:26 ` ✓ Xe.CI.BAT: success for lib/igt_fb: add YUV|YVU-410|411|444 formats (rev2) Patchwork
2026-03-23 22:29 ` ✗ i915.CI.BAT: failure " Patchwork
2026-03-24 9:39 ` Kamil Konieczny
2026-03-24 5:18 ` ✗ Xe.CI.FULL: " Patchwork
2026-03-24 9:43 ` Kamil Konieczny
2026-03-24 10:13 ` Juha-Pekka Heikkilä
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=294245f1-b410-4374-a90e-bde2303be29e@intel.com \
--to=swati2.sharma@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=juha-pekka.heikkila@intel.com \
--cc=kamil.konieczny@linux.intel.com \
--cc=karthik.b.s@intel.com \
--cc=renjunw0@foxmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox