From: Pranay Samala <pranay.samala@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: karthik.b.s@intel.com, swati2.sharma@intel.com,
sameer.lattannavar@intel.com, pranay.samala@intel.com
Subject: [PATCH i-g-t v7 1/2] tests/kms_color: Prepare FB creation for explicit YUV color range handling
Date: Thu, 2 Jul 2026 13:53:22 +0530 [thread overview]
Message-ID: <20260702082323.3398022-2-pranay.samala@intel.com> (raw)
In-Reply-To: <20260702082323.3398022-1-pranay.samala@intel.com>
Switch framebuffer creation from igt_create_fb() to a common path that can
use igt_create_fb_with_bo_size() when explicit YCbCr encoding/range is
needed.
YUV formats may otherwise be interpreted with implicit limited-range
defaults (16-235) instead of full range (0-255), which can make color
expectations non-deterministic in YUV coverage.
This is a preparatory cleanup and does not fix a user-visible bug.
It refactors FB creation so YUV paths can carry explicit YCbCr
parameters, while RGB paths continue using the default framebuffer
creation behavior.
v3:
- Update commit message (Swati)
v4:
- Split the patches (Swati)
v5:
- Add a common FB helper to centralize framebuffer creation (Swati)
- Keep RGB formats on the existing igt_create_fb() path (Swati)
- Use explicit range/encoding only for YUV formats (Swati)
- Update commit message (Swati)
v6:
- Rename fb creation helper name (Swati)
- Make YCbCr encoding and range explicit helper parameters (Swati)
v7:
- Rebase
Signed-off-by: Pranay Samala <pranay.samala@intel.com>
---
tests/kms_color.c | 125 ++++++++++++++++++++++++----------------------
1 file changed, 65 insertions(+), 60 deletions(-)
diff --git a/tests/kms_color.c b/tests/kms_color.c
index dc3432df5..106442f44 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -78,6 +78,21 @@
IGT_TEST_DESCRIPTION("Test Color Features at Pipe level");
+static unsigned int create_test_fb(data_t *data, int w, int h,
+ uint32_t format,
+ enum igt_color_encoding encoding,
+ enum igt_color_range range,
+ struct igt_fb *fb)
+{
+ if (igt_format_is_yuv(format))
+ return igt_create_fb_with_bo_size(data->drm_fd, w, h, format,
+ DRM_FORMAT_MOD_LINEAR,
+ encoding, range, fb, 0, 0);
+
+ return igt_create_fb(data->drm_fd, w, h, format,
+ DRM_FORMAT_MOD_LINEAR, fb);
+}
+
static bool test_pipe_degamma(data_t *data,
igt_plane_t *primary)
{
@@ -104,20 +119,18 @@ static bool test_pipe_degamma(data_t *data,
igt_output_override_mode(output, mode);
/* Create a framebuffer at the size of the output. */
- fb_id = igt_create_fb(data->drm_fd,
- mode->hdisplay,
- mode->vdisplay,
- data->drm_format,
- DRM_FORMAT_MOD_LINEAR,
- &fb);
+ fb_id = create_test_fb(data, mode->hdisplay, mode->vdisplay,
+ data->drm_format,
+ IGT_COLOR_YCBCR_BT709,
+ IGT_COLOR_YCBCR_FULL_RANGE,
+ &fb);
igt_assert(fb_id);
- fb_modeset_id = igt_create_fb(data->drm_fd,
- mode->hdisplay,
- mode->vdisplay,
- data->drm_format,
- DRM_FORMAT_MOD_LINEAR,
- &fb_modeset);
+ fb_modeset_id = create_test_fb(data, mode->hdisplay, mode->vdisplay,
+ data->drm_format,
+ IGT_COLOR_YCBCR_BT709,
+ IGT_COLOR_YCBCR_FULL_RANGE,
+ &fb_modeset);
igt_assert(fb_modeset_id);
igt_plane_set_fb(primary, &fb_modeset);
@@ -191,20 +204,18 @@ static bool test_pipe_gamma(data_t *data,
igt_output_override_mode(output, mode);
/* Create a framebuffer at the size of the output. */
- fb_id = igt_create_fb(data->drm_fd,
- mode->hdisplay,
- mode->vdisplay,
- data->drm_format,
- DRM_FORMAT_MOD_LINEAR,
- &fb);
+ fb_id = create_test_fb(data, mode->hdisplay, mode->vdisplay,
+ data->drm_format,
+ IGT_COLOR_YCBCR_BT709,
+ IGT_COLOR_YCBCR_FULL_RANGE,
+ &fb);
igt_assert(fb_id);
- fb_modeset_id = igt_create_fb(data->drm_fd,
- mode->hdisplay,
- mode->vdisplay,
- data->drm_format,
- DRM_FORMAT_MOD_LINEAR,
- &fb_modeset);
+ fb_modeset_id = create_test_fb(data, mode->hdisplay, mode->vdisplay,
+ data->drm_format,
+ IGT_COLOR_YCBCR_BT709,
+ IGT_COLOR_YCBCR_FULL_RANGE,
+ &fb_modeset);
igt_assert(fb_modeset_id);
igt_plane_set_fb(primary, &fb_modeset);
@@ -286,20 +297,18 @@ static bool test_pipe_legacy_gamma(data_t *data,
igt_output_override_mode(output, mode);
/* Create a framebuffer at the size of the output. */
- fb_id = igt_create_fb(data->drm_fd,
- mode->hdisplay,
- mode->vdisplay,
- data->drm_format,
- DRM_FORMAT_MOD_LINEAR,
- &fb);
+ fb_id = create_test_fb(data, mode->hdisplay, mode->vdisplay,
+ data->drm_format,
+ IGT_COLOR_YCBCR_BT709,
+ IGT_COLOR_YCBCR_FULL_RANGE,
+ &fb);
igt_assert(fb_id);
- fb_modeset_id = igt_create_fb(data->drm_fd,
- mode->hdisplay,
- mode->vdisplay,
- data->drm_format,
- DRM_FORMAT_MOD_LINEAR,
- &fb_modeset);
+ fb_modeset_id = create_test_fb(data, mode->hdisplay, mode->vdisplay,
+ data->drm_format,
+ IGT_COLOR_YCBCR_BT709,
+ IGT_COLOR_YCBCR_FULL_RANGE,
+ &fb_modeset);
igt_assert(fb_modeset_id);
igt_plane_set_fb(primary, &fb_modeset);
@@ -534,20 +543,18 @@ static bool test_pipe_ctm(data_t *data,
igt_output_override_mode(output, mode);
/* Create a framebuffer at the size of the output. */
- fb_id = igt_create_fb(data->drm_fd,
- mode->hdisplay,
- mode->vdisplay,
- data->drm_format,
- DRM_FORMAT_MOD_LINEAR,
- &fb);
+ fb_id = create_test_fb(data, mode->hdisplay, mode->vdisplay,
+ data->drm_format,
+ IGT_COLOR_YCBCR_BT709,
+ IGT_COLOR_YCBCR_FULL_RANGE,
+ &fb);
igt_assert(fb_id);
- fb_modeset_id = igt_create_fb(data->drm_fd,
- mode->hdisplay,
- mode->vdisplay,
- data->drm_format,
- DRM_FORMAT_MOD_LINEAR,
- &fb_modeset);
+ fb_modeset_id = create_test_fb(data, mode->hdisplay, mode->vdisplay,
+ data->drm_format,
+ IGT_COLOR_YCBCR_BT709,
+ IGT_COLOR_YCBCR_FULL_RANGE,
+ &fb_modeset);
igt_assert(fb_modeset_id);
igt_plane_set_fb(primary, &fb_modeset);
@@ -668,20 +675,18 @@ static void test_pipe_limited_range_ctm(data_t *data,
mode = igt_output_get_mode(output);
/* Create a framebuffer at the size of the output. */
- fb_id = igt_create_fb(data->drm_fd,
- mode->hdisplay,
- mode->vdisplay,
- DRM_FORMAT_XRGB8888,
- DRM_FORMAT_MOD_LINEAR,
- &fb);
+ fb_id = create_test_fb(data, mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ IGT_COLOR_YCBCR_BT709,
+ IGT_COLOR_YCBCR_FULL_RANGE,
+ &fb);
igt_assert(fb_id);
- fb_modeset_id = igt_create_fb(data->drm_fd,
- mode->hdisplay,
- mode->vdisplay,
- DRM_FORMAT_XRGB8888,
- DRM_FORMAT_MOD_LINEAR,
- &fb_modeset);
+ fb_modeset_id = create_test_fb(data, mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ IGT_COLOR_YCBCR_BT709,
+ IGT_COLOR_YCBCR_FULL_RANGE,
+ &fb_modeset);
igt_assert(fb_modeset_id);
igt_plane_set_fb(primary, &fb_modeset);
--
2.34.1
next prev parent reply other threads:[~2026-07-02 8:13 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-02 8:23 [PATCH i-g-t v7 0/2] Enable multi-format testing for pipe color tests Pranay Samala
2026-07-02 8:23 ` Pranay Samala [this message]
2026-07-02 8:23 ` [PATCH i-g-t v7 2/2] tests/kms_color: Add multi-format coverage " Pranay Samala
2026-07-02 17:39 ` ✓ i915.CI.BAT: success for Enable multi-format testing for pipe color tests (rev4) Patchwork
2026-07-02 17:42 ` ✓ Xe.CI.BAT: " Patchwork
2026-07-03 10:19 ` ✗ Xe.CI.FULL: failure " Patchwork
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=20260702082323.3398022-2-pranay.samala@intel.com \
--to=pranay.samala@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=karthik.b.s@intel.com \
--cc=sameer.lattannavar@intel.com \
--cc=swati2.sharma@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.