Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t v10 0/1] RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test
@ 2025-02-20 18:58 Santhosh Reddy Guddati
  2025-02-20 18:58 ` [PATCH i-g-t v10 1/1] tests/intel/kms_dirty_fbc: Add tests to validate FBC dirty rectangle feature Santhosh Reddy Guddati
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Santhosh Reddy Guddati @ 2025-02-20 18:58 UTC (permalink / raw)
  To: igt-dev
  Cc: vinod.govindapillai, jeevan.b, kunal1.joshi, ramanaidu.naladala,
	swati2.sharma, juha-pekka.heikkila, Santhosh Reddy Guddati

This feature allows FBC to recompress a subsection of a frame.
When the Dirty Rectangle Enable bit is set in the FBC_DIRTY_CTL register,
and there is a sync flip indication, display will read the scanlines
between (and including) the Dirty Rectangle Start Line and End Line,
in FBC_DIRTY_RECTANGLE, from the uncompressed frame buffer.

Utilise the FP_DAMAGE_CLIPS property in the below subtests to validate
the feature.

1.Implement basic tests for Frame Buffer Compression (FBC) with dirty rectangles.
2.Add tests for dirty rectangles outside the visible region.
3.Include tests for dirtyfb functionality.
4.Support different formats in FBC dirty rectangle tests.
5.Ensure proper CRC validation for each test case.

Santhosh Reddy Guddati (1):
  tests/intel/kms_dirty_fbc: Add tests to validate FBC dirty rectangle
    feature

 tests/intel/kms_fbc_dirty_rect.c | 559 +++++++++++++++++++++++++++++++
 tests/meson.build                |   1 +
 2 files changed, 560 insertions(+)
 create mode 100644 tests/intel/kms_fbc_dirty_rect.c

-- 
2.34.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH i-g-t v10 1/1] tests/intel/kms_dirty_fbc: Add tests to validate FBC dirty rectangle feature
  2025-02-20 18:58 [PATCH i-g-t v10 0/1] RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test Santhosh Reddy Guddati
@ 2025-02-20 18:58 ` Santhosh Reddy Guddati
  2025-02-25  9:14   ` Govindapillai, Vinod
  2025-02-20 20:22 ` ✓ Xe.CI.BAT: success for RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test (rev10) Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: Santhosh Reddy Guddati @ 2025-02-20 18:58 UTC (permalink / raw)
  To: igt-dev
  Cc: vinod.govindapillai, jeevan.b, kunal1.joshi, ramanaidu.naladala,
	swati2.sharma, juha-pekka.heikkila, Santhosh Reddy Guddati

This feature allows FBC to recompress a subsection of a frame.
When the Dirty Rectangle Enable bit is set in the FBC_DIRTY_CTL register,
and there is a sync flip indication, display will read the scanlines
between (and including) the Dirty Rectangle Start Line and End Line,
in FBC_DIRTY_RECTANGLE, from the uncompressed frame buffer.

Utilise the FP_DAMAGE_CLIPS property in the below subtests to validate
the feature.

1.Implement basic tests for Frame Buffer Compression (FBC) with dirty rectangles.
2.Add tests for dirty rectangles outside the visible region.
3.Include tests for dirtyfb functionality.
4.Support different formats in FBC dirty rectangle tests.
5.Ensure proper CRC validation for each test case.

v2: Fix typo , add version check for feature support,
    extend support for all pipes (Rama Naidu).

v3: Add new subtest to scatter dirty rectangles at differnt places in a
    frame and commit all rectangles at once (Rama Naidu).
    Add a negative case with invalid coordinates (Vinod)

v4: Add subtest `fbc-dirty-rectangle-basic` to perform sanity checks
    by sending multiple damaged areas with non-PSR modes.(Vinod)
    Update `meson.build` to include the new test.

v5: Include checks to ensure FBC is enabled during tests.(Vinod)
    Add dynamic subtests for fbc-dirty-rectangle-different-formats
    and fbc-dirty-rectangle-dirtyfb-ioctl. (Vinod)

v6: Update meson.build to include kms_fbc_dirty_rect.

v7: Add commit description, remove i915 check and remove
    redundant checks (Swathi)
    Reformat code by removing redundant usage.
    Add new test to verify dirty rect outside-visible-region.

v8: Include test description and documentation for subtests.
    Updated framebuffer to target the specific area,
    avoiding a full screen update and making the damage area
    check effective (Vinod).
    Add new subtest fbc-dirty-rectangle-dirtyfb-tests (Vinod)

v9: Improve commit message and description.
    Disable psr on supported sinks to validate fbc tests (Vinod)

v10: Update driver to DRIVER_XE. Remove unused enum.
     Improve FBC check timing to align close with CRC capture.
     Order list alphabetically.Remove basic formats test as this is
     included in other formats test. (Juha Pekka Heikkila)

Signed-off-by: Santhosh Reddy Guddati <santhosh.reddy.guddati@intel.com>
---
 tests/intel/kms_fbc_dirty_rect.c | 559 +++++++++++++++++++++++++++++++
 tests/meson.build                |   1 +
 2 files changed, 560 insertions(+)
 create mode 100644 tests/intel/kms_fbc_dirty_rect.c

diff --git a/tests/intel/kms_fbc_dirty_rect.c b/tests/intel/kms_fbc_dirty_rect.c
new file mode 100644
index 000000000..c08ee7c4b
--- /dev/null
+++ b/tests/intel/kms_fbc_dirty_rect.c
@@ -0,0 +1,559 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+/**
+ * TEST: kms dirty fbc
+ * Category: Display
+ * Description: Test DIRTYFB ioctl functionality with FBC enabled.
+ * Driver requirement: xe
+ * Functionality: dirtyfb, fbc
+ * Mega feature: General Display Features
+ * Test category: functionality test
+ */
+
+#include <sys/types.h>
+
+#include "igt.h"
+
+#include "igt_sysfs.h"
+#include "i915/gem.h"
+#include "i915/gem_create.h"
+#include "i915/intel_drrs.h"
+#include "igt_psr.h"
+
+#include "i915/intel_fbc.h"
+#include "intel_mocs.h"
+#include "intel_pat.h"
+
+#include "xe/xe_query.h"
+
+/**
+ *
+ * SUBTEST: fbc-dirty-rectangle-out-visible-area
+ * Description: Sanity test to verify FBC DR by sending multiple damaged areas with non psr modes
+ *
+ * SUBTEST: fbc-dirty-rectangle-dirtyfb-tests
+ * Description: Sanity test to verify FBC DR by sending multiple damaged areas with non psr modes
+ *
+ * SUBTEST: fbc-dirty-rectangle-different-formats
+ * Description: Sanity test to verify FBC DR by sending multiple
+ *              damaged areas with different formats.
+ *
+ */
+
+#ifndef PAGE_SIZE
+#define PAGE_SIZE 4096
+#endif
+
+#define SQUARE_SIZE 100
+#define SQUARE_OFFSET 100
+#define SQUARE_OFFSET_2 600
+
+typedef struct {
+	int drm_fd;
+	int debugfs_fd;
+	igt_display_t display;
+	drmModeModeInfo *mode;
+	igt_output_t *output;
+	igt_pipe_crc_t *pipe_crc;
+	enum pipe pipe;
+	u32 format;
+
+	igt_crc_t ref_crc;
+
+	enum {
+		FEATURE_NONE  = 0,
+		FEATURE_PSR   = 1,
+		FEATURE_FBC   = 2,
+		FEATURE_DRRS  = 4,
+		FEATURE_COUNT = 8,
+		FEATURE_DEFAULT = 8,
+	} feature;
+} data_t;
+
+static void set_damage_clip(struct drm_mode_rect *damage, int x1, int y1, int x2, int y2)
+{
+	damage->x1 = x1;
+	damage->y1 = y1;
+	damage->x2 = x2;
+	damage->y2 = y2;
+}
+
+static void set_damage_clip_w(struct drm_mode_rect *damage, int x1, int y1, int width, int height)
+{
+	set_damage_clip(damage, x1, y1, x1 + width, y1 + height);
+}
+
+static void dirty_rect_draw_white_rects(data_t *data, struct igt_fb *fb,
+					int nrects, struct drm_mode_rect *rect)
+{
+	cairo_t *cr;
+
+	if (!nrects || !rect)
+		return;
+
+	cr = igt_get_cairo_ctx(data->drm_fd, fb);
+
+	for (int i = 0; i < nrects; i++) {
+		igt_paint_color_alpha(cr, rect[i].x1, rect[i].y1,
+				      rect[i].x2 - rect[i].x1,
+				      rect[i].y2 - rect[i].y1,
+				      1.0, 1.0, 1.0, 1.0);
+	}
+
+	igt_put_cairo_ctx(cr);
+}
+
+
+static void
+set_damage_area(igt_plane_t *plane,  struct drm_mode_rect *rects,
+		size_t length)
+{
+	igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, rects, length);
+}
+
+static void
+set_fb_and_collect_crc(data_t *data, igt_plane_t *plane, struct igt_fb *fb,
+		       igt_pipe_crc_t *pipe_crc, igt_crc_t *crc)
+{
+	igt_plane_set_fb(plane, fb);
+	igt_display_commit2(&data->display, COMMIT_ATOMIC);
+
+	if (!data->pipe_crc) {
+		data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
+						  IGT_PIPE_CRC_SOURCE_AUTO);
+	}
+
+	igt_pipe_crc_start(data->pipe_crc);
+	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, crc);
+	igt_pipe_crc_stop(data->pipe_crc);
+	igt_assert_f(intel_fbc_is_enabled(data->drm_fd, data->pipe,
+					  IGT_LOG_WARN),
+					  "FBC is not enabled\n");
+}
+
+static void
+update_rect_with_dirtyfb(data_t *data, struct igt_fb *fb1, struct igt_fb *fb2,
+			 struct drm_mode_rect *rect)
+{
+	struct intel_buf *src, *dst;
+	struct intel_bb *ibb;
+	igt_spin_t *spin;
+	int r;
+	struct buf_ops *bops;
+	igt_render_copyfunc_t rendercopy;
+
+	bops = buf_ops_create(data->drm_fd);
+	rendercopy = igt_get_render_copyfunc(intel_get_drm_devid(data->drm_fd));
+
+	src = intel_buf_create_full(bops, fb1->gem_handle, fb1->width,
+				    fb1->height,
+				    igt_drm_format_to_bpp(fb1->drm_format),
+				    0,
+				    igt_fb_mod_to_tiling(fb1->modifier),
+				    0, fb1->size, 0, system_memory(data->drm_fd),
+				    intel_get_pat_idx_uc(data->drm_fd),
+				    DEFAULT_MOCS_INDEX);
+	dst = intel_buf_create_full(bops, fb2->gem_handle,
+				    fb2->width, fb2->height,
+				    igt_drm_format_to_bpp(fb2->drm_format),
+				    0, igt_fb_mod_to_tiling(fb2->modifier),
+				    0, fb2->size, 0, system_memory(data->drm_fd),
+				    intel_get_pat_idx_uc(data->drm_fd),
+				    DEFAULT_MOCS_INDEX);
+	ibb = intel_bb_create(data->drm_fd, PAGE_SIZE);
+
+	spin = igt_spin_new(data->drm_fd, .ahnd = ibb->allocator_handle);
+	igt_spin_set_timeout(spin, NSEC_PER_SEC);
+
+	rendercopy(ibb, src, rect->x1, rect->y1, rect->x2 - rect->x1,
+		   rect->y2 - rect->y1, dst, rect->x1, rect->y1);
+
+	/* Perfom dirtyfb right after initiating rendercopy/blitter */
+	r = drmModeDirtyFB(data->drm_fd, fb2->fb_id, NULL, 0);
+	igt_assert(r == 0 || r == -ENOSYS);
+
+	/* Ensure rendercopy/blitter is complete */
+	intel_bb_sync(ibb);
+
+	igt_spin_free(data->drm_fd, spin);
+	intel_bb_destroy(ibb);
+	intel_buf_destroy(src);
+	intel_buf_destroy(dst);
+}
+
+static void fbc_dirty_rectangle_dirtyfb(data_t *data)
+{
+	igt_pipe_crc_t *pipe_crc = data->pipe_crc;
+	igt_display_t *display = &data->display;
+	igt_output_t *output = data->output;
+	igt_plane_t *primary;
+	drmModeModeInfo *mode;
+	struct igt_fb main_fb, fb2, fb3;
+	struct drm_mode_rect full_rect, rect1, rect2;
+	igt_crc_t main_crc, fb2_crc, fb3_crc, crc;
+
+	mode = igt_output_get_mode(output);
+	igt_output_set_pipe(output, data->pipe);
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+
+	set_damage_clip_w(&full_rect, 0, 0, mode->hdisplay, mode->vdisplay);
+	set_damage_clip_w(&rect1, SQUARE_OFFSET, SQUARE_OFFSET, SQUARE_SIZE, SQUARE_SIZE);
+	set_damage_clip_w(&rect2, SQUARE_OFFSET_2, SQUARE_OFFSET_2, SQUARE_SIZE, SQUARE_SIZE);
+
+	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay,
+			    data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &main_fb);
+
+	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay,
+			    data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &fb2);
+	dirty_rect_draw_white_rects(data, &fb2, 1, &rect1);
+
+	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay,
+			    data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &fb3);
+	dirty_rect_draw_white_rects(data, &fb3, 1, &rect2);
+
+	/* 1st screen - Empty blue screen */
+	set_damage_area(primary, &full_rect, sizeof(full_rect));
+	set_fb_and_collect_crc(data, primary, &main_fb, pipe_crc, &main_crc);
+
+	/* 2nd screen - 1st white rect at 100, 100 - using damage area */
+	set_damage_area(primary, &rect1, sizeof(rect1));
+	set_fb_and_collect_crc(data, primary, &fb2, pipe_crc, &fb2_crc);
+
+	/* 3rd screen - 2nd white rect at 600, 600 - using damage area.
+	 * Now two white rects on screen
+	 */
+	set_damage_area(primary, &rect2, sizeof(rect2));
+	set_fb_and_collect_crc(data, primary, &fb3, pipe_crc, &fb3_crc);
+
+	/* 4th screen - clear the 2nd white rect at 600,600 with dirtyfb.
+	 * Copy rect2 area from main_fb to fb3.
+	 */
+	update_rect_with_dirtyfb(data, &main_fb, &fb3, &rect2);
+	/* Now the screen must match 1st screen - with whole blue */
+	igt_pipe_crc_collect_crc(data->pipe_crc, &crc);
+	igt_assert_crc_equal(&crc, &main_crc);
+
+	/* 5th screen - Copy the first rect at 100,100 with dirtyfb.
+	 * Copy rect1 area from fb2 to fb3.
+	 */
+	update_rect_with_dirtyfb(data, &fb2, &fb3, &rect1);
+	/* Now the screen must match 2nd screen - with one rect at 100,100 */
+	igt_pipe_crc_collect_crc(data->pipe_crc, &crc);
+	igt_assert_crc_equal(&crc, &fb2_crc);
+
+	igt_plane_set_fb(primary, NULL);
+	igt_remove_fb(data->drm_fd, &main_fb);
+	igt_remove_fb(data->drm_fd, &fb2);
+	igt_remove_fb(data->drm_fd, &fb3);
+	igt_display_commit2(display, COMMIT_ATOMIC);
+
+	if (data->pipe_crc) {
+		igt_pipe_crc_free(data->pipe_crc);
+		data->pipe_crc = NULL;
+	}
+}
+
+/**
+ * fbc_dirty_rectangle_outside_visible_region - Test dirty rectangle outside visible region
+ * @data: Pointer to the test data structure
+ *
+ * This test verifies the behavior of the Frame Buffer Compression (FBC) when
+ * dirty rectangles are set outside the visible region of the display. It creates
+ * a main framebuffer and three additional framebuffers with dirty rectangles
+ * positioned horizontally, vertically, and both horizontally and vertically
+ * outside the visible region. The test then sets the damage area to these
+ * rectangles and collects CRCs to ensure that the content outside the visible
+ * region does not affect the main framebuffer's CRC.
+ */
+static void fbc_dirty_rectangle_outside_visible_region(data_t *data)
+{
+	igt_pipe_crc_t *pipe_crc = data->pipe_crc;
+	igt_display_t *display = &data->display;
+	igt_output_t *output = data->output;
+	igt_plane_t *primary;
+	struct igt_fb main_fb, rect_fb[3];
+	struct drm_mode_rect rect[3], full_rect;
+	igt_crc_t main_crc, rect_crc[3];
+
+	igt_output_set_pipe(output, data->pipe);
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+
+	set_damage_clip(&full_rect, 0, 0, data->mode->hdisplay + 200, data->mode->vdisplay + 200);
+	/* Rect Horizontally outside visible region */
+	set_damage_clip_w(&rect[0], data->mode->hdisplay + 10, 100, SQUARE_SIZE, SQUARE_SIZE);
+	/* Rect vertically outside visible region */
+	set_damage_clip_w(&rect[1], 10, data->mode->vdisplay + 50, SQUARE_SIZE, SQUARE_SIZE);
+	/* Rect Horizontally and vertically outside visible region */
+	set_damage_clip_w(&rect[2], data->mode->hdisplay + 10, data->mode->vdisplay + 50,
+			  SQUARE_SIZE, SQUARE_SIZE);
+
+	igt_create_color_fb(data->drm_fd, data->mode->hdisplay + 200,
+			    data->mode->vdisplay + 200, data->format,
+			    DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0, &main_fb);
+
+	for (int i = 0; i < 3; i++) {
+		igt_create_color_fb(data->drm_fd, data->mode->hdisplay + 200,
+				    data->mode->vdisplay + 200, data->format,
+				    DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0, &rect_fb[i]);
+		dirty_rect_draw_white_rects(data, &rect_fb[i], 1, &rect[i]);
+	}
+
+	/* Main rect */
+	set_damage_area(primary, &full_rect, sizeof(full_rect));
+	set_fb_and_collect_crc(data, primary, &main_fb, pipe_crc, &main_crc);
+
+	for (int i = 0; i < 3; i++) {
+		set_damage_area(primary, &rect[i], sizeof(rect[i]));
+		set_fb_and_collect_crc(data, primary, &rect_fb[i], pipe_crc, &rect_crc[i]);
+		igt_assert_crc_equal(&rect_crc[i], &main_crc);
+	}
+
+	igt_plane_set_fb(primary, NULL);
+	igt_remove_fb(data->drm_fd, &main_fb);
+	for (int i = 0; i < 3; i++)
+		igt_remove_fb(data->drm_fd, &rect_fb[i]);
+	igt_display_commit2(display, COMMIT_ATOMIC);
+
+	if (data->pipe_crc) {
+		igt_pipe_crc_free(data->pipe_crc);
+		data->pipe_crc = NULL;
+	}
+}
+
+/*
+ * fbc_dirty_rectangle_basic
+ * @data: data_t
+ *
+ * This test draws screens as full-screen updates and collects their CRCs
+ * as reference values. Screens are then updated using the FBC
+ * dirty rect feature and compared with the reference CRCs.
+ * Matching CRCs indicate success.
+ *
+ * Steps to Collect Reference CRCs:
+ * 1. Full Blue Screen
+ *    - Frame Buffer: main_fb
+ *    - CRC: main_fb_crc
+ * 2. White Square on Upper Left
+ *    - Frame Buffer: rect1_fb
+ *    - CRC: rect1_fb_crc
+ * 3. Second White Square Below First
+ *    - Frame Buffer: rect2_fb
+ *    - CRC: rect2_fb_crc
+ * 4. Both Rectangles
+ *    - Frame Buffer: rect_combined_fb
+ *    - CRC: rect_combined_fb_crc
+ *
+ * Steps to Update Screen with FBC Dirty Rect:
+ * 1. Full Blue Screen
+ *    - Set rect_combined_fb with Damage Area Update
+ *    - CRC should match rect_combined_fb_crc
+ * 2. Clear First Rectangle Area
+ *    - Use main_fb and damage area as rect1 coordinates
+ *    - CRC should match rect2_fb_crc
+ * 3. Clear Second Rectangle Area
+ *    - Use main_fb and damage area as rect2 coordinates
+ *    - CRC should match main_fb_crc
+ */
+static void fbc_dirty_rectangle_basic(data_t *data)
+{
+	igt_display_t *display = &data->display;
+	igt_output_t *output = data->output;
+	igt_plane_t *primary;
+	struct igt_fb main_fb;
+	struct igt_fb rect_1_fb;
+	struct igt_fb rect_2_fb;
+	struct igt_fb rect_combined_fb;
+	struct drm_mode_rect rect1;
+	struct drm_mode_rect rect2;
+	struct drm_mode_rect rect_combined[2];
+	struct drm_mode_rect full_rect;
+	igt_crc_t main_fb_crc, rect_1_fb_crc, rect_2_fb_crc, rect_combined_fb_crc, crc;
+
+	igt_output_set_pipe(output, data->pipe);
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+
+	set_damage_clip(&full_rect, 0, 0, data->mode->hdisplay-1, data->mode->vdisplay-1);
+	set_damage_clip(&rect1, SQUARE_OFFSET, SQUARE_OFFSET, SQUARE_OFFSET + SQUARE_SIZE,
+			SQUARE_OFFSET + SQUARE_SIZE);
+	set_damage_clip(&rect2, SQUARE_OFFSET_2, SQUARE_OFFSET_2, SQUARE_OFFSET_2 + SQUARE_SIZE,
+			SQUARE_OFFSET_2 + SQUARE_SIZE);
+	set_damage_clip(&rect_combined[0], rect1.x1, rect1.y1, rect1.x2, rect1.y2);
+	set_damage_clip(&rect_combined[1], rect2.x1, rect2.y1, rect2.x2, rect2.y2);
+
+	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data->format,
+			    DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &main_fb);
+
+	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data->format,
+			    DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &rect_1_fb);
+	dirty_rect_draw_white_rects(data, &rect_1_fb, 1, &rect1);
+
+	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data->format,
+			    DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &rect_2_fb);
+	dirty_rect_draw_white_rects(data, &rect_2_fb, 1, &rect2);
+
+	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data->format,
+			    DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &rect_combined_fb);
+	dirty_rect_draw_white_rects(data, &rect_combined_fb, ARRAY_SIZE(rect_combined),
+				    rect_combined);
+
+	/* main_fb blank blue screen - get and store crc */
+	set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &main_fb_crc);
+
+	/* Whole blue screen with one white rect and collect crc */
+	set_damage_area(primary, &full_rect, sizeof(full_rect));
+	set_fb_and_collect_crc(data, primary, &rect_1_fb, data->pipe_crc, &rect_1_fb_crc);
+
+	/* Second white rect and collect crc */
+	set_damage_area(primary, &full_rect, sizeof(full_rect));
+	set_fb_and_collect_crc(data, primary, &rect_2_fb, data->pipe_crc, &rect_2_fb_crc);
+
+	/* Both rects and collect crc */
+	set_damage_area(primary, &full_rect, sizeof(full_rect));
+	set_fb_and_collect_crc(data, primary, &rect_combined_fb, data->pipe_crc,
+			       &rect_combined_fb_crc);
+
+	/* Put full blank screen back */
+	set_damage_area(primary, &full_rect, sizeof(full_rect));
+	set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &crc);
+	igt_assert_crc_equal(&crc, &main_fb_crc);
+
+	/* Set combined rect - draw two white rects using damage area */
+	set_damage_area(primary, rect_combined, sizeof(rect_combined));
+	set_fb_and_collect_crc(data, primary, &rect_combined_fb, data->pipe_crc, &crc);
+	igt_assert_crc_equal(&crc, &rect_combined_fb_crc);
+
+	/* Clear first rect using damage area. Only the second rect should be visible here! */
+	set_damage_area(primary, &rect1, sizeof(rect1));
+	set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &crc);
+	igt_assert_crc_equal(&crc, &rect_2_fb_crc);
+
+	/* Clear the second rect as well. Now back to original blank screen */
+	set_damage_area(primary, &rect2, sizeof(rect2));
+	set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &crc);
+	igt_assert_crc_equal(&crc, &main_fb_crc);
+
+	igt_plane_set_fb(primary, NULL);
+	igt_remove_fb(data->drm_fd, &main_fb);
+	igt_remove_fb(data->drm_fd, &rect_1_fb);
+	igt_remove_fb(data->drm_fd, &rect_2_fb);
+	igt_remove_fb(data->drm_fd, &rect_combined_fb);
+	igt_display_commit2(display, COMMIT_ATOMIC);
+
+	if (data->pipe_crc) {
+		igt_pipe_crc_free(data->pipe_crc);
+		data->pipe_crc = NULL;
+	}
+}
+
+static void prepare_test(data_t *data, igt_output_t *output)
+{
+	bool is_fbc_supported = intel_fbc_supported_on_chipset(data->drm_fd, data->pipe);
+
+	igt_require_f(is_fbc_supported, "FBC not supported by the chipset on pipe\n");
+
+	if (psr_sink_support(data->drm_fd, data->debugfs_fd, PSR_MODE_1, NULL) ||
+		psr_sink_support(data->drm_fd, data->debugfs_fd, PSR_MODE_2, NULL) ||
+		psr_sink_support(data->drm_fd, data->debugfs_fd, PR_MODE, NULL)) {
+		igt_info("PSR is supported by the sink. Disabling PSR to test Dirty FBC functionality.\n");
+		psr_disable(data->drm_fd, data->debugfs_fd, output);
+	}
+
+	if (data->feature & FEATURE_FBC)
+		intel_fbc_enable(data->drm_fd);
+}
+
+static void fbc_dirty_rectangle_test(data_t *data, void (*test_func)(data_t *))
+{
+	prepare_test(data, data->output);
+	test_func(data);
+}
+
+igt_main
+{
+	data_t data = {0};
+	int display_ver;
+
+	igt_fixture {
+		data.drm_fd = drm_open_driver_master(DRIVER_XE);
+		igt_require(data.drm_fd >= 0);
+		data.debugfs_fd = igt_debugfs_dir(data.drm_fd);
+		kmstest_set_vt_graphics_mode();
+		igt_require_pipe_crc(data.drm_fd);
+		igt_display_require(&data.display, data.drm_fd);
+		igt_display_require_output(&data.display);
+		display_ver = intel_display_ver(intel_get_drm_devid(data.drm_fd));
+		igt_require_f(display_ver >= 30, "FBC with dirty region is not supported\n");
+	}
+
+	igt_subtest_with_dynamic("fbc-dirty-rectangle-out-visible-area") {
+		data.feature = FEATURE_FBC;
+
+		for_each_pipe(&data.display, data.pipe) {
+			for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
+				data.mode = igt_output_get_mode(data.output);
+				data.format = DRM_FORMAT_XRGB8888;
+				igt_display_reset(&data.display);
+				igt_output_set_pipe(data.output, data.pipe);
+				igt_dynamic_f("pipe-%s-%s",
+					       kmstest_pipe_name(data.pipe),
+					       igt_output_name(data.output)) {
+					fbc_dirty_rectangle_test(&data,
+						fbc_dirty_rectangle_outside_visible_region);
+				}
+			}
+		}
+	}
+
+	igt_subtest_with_dynamic("fbc-dirty-rectangle-dirtyfb-tests") {
+		data.feature = FEATURE_FBC;
+
+		for_each_pipe(&data.display, data.pipe) {
+			for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
+				data.mode = igt_output_get_mode(data.output);
+				data.format = DRM_FORMAT_XRGB8888;
+				igt_display_reset(&data.display);
+				igt_output_set_pipe(data.output, data.pipe);
+				igt_dynamic_f("pipe-%s-%s",
+					       kmstest_pipe_name(data.pipe),
+					       igt_output_name(data.output)) {
+					fbc_dirty_rectangle_test(&data,
+							fbc_dirty_rectangle_dirtyfb);
+				}
+			}
+		}
+	}
+
+	igt_subtest_with_dynamic("fbc-dirty-rectangle-different-formats") {
+		uint32_t formats[] = {DRM_FORMAT_XRGB8888, DRM_FORMAT_ARGB8888, DRM_FORMAT_RGB565};
+		int num_formats = ARRAY_SIZE(formats);
+
+		data.feature = FEATURE_FBC;
+
+		for_each_pipe(&data.display, data.pipe) {
+			for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
+				data.mode = igt_output_get_mode(data.output);
+				igt_display_reset(&data.display);
+				igt_output_set_pipe(data.output, data.pipe);
+
+				for (int i = 0; i < num_formats; i++) {
+					igt_dynamic_f("pipe-%s-%s-format-%s",
+						       kmstest_pipe_name(data.pipe),
+						       igt_output_name(data.output),
+						       igt_format_str(formats[i])) {
+						data.format = formats[i];
+						fbc_dirty_rectangle_test(&data,
+							fbc_dirty_rectangle_basic);
+					}
+				}
+			}
+		}
+	}
+
+	igt_fixture {
+		igt_display_fini(&data.display);
+		close(data.drm_fd);
+	}
+}
diff --git a/tests/meson.build b/tests/meson.build
index f8a0ab836..cb7c36f5c 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -250,6 +250,7 @@ intel_kms_progs = [
 	'kms_dsc',
 	'kms_fb_coherency',
 	'kms_fbcon_fbt',
+	'kms_fbc_dirty_rect',
 	'kms_fence_pin_leak',
 	'kms_flip_scaled_crc',
 	'kms_flip_tiling',
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* ✓ Xe.CI.BAT: success for RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test (rev10)
  2025-02-20 18:58 [PATCH i-g-t v10 0/1] RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test Santhosh Reddy Guddati
  2025-02-20 18:58 ` [PATCH i-g-t v10 1/1] tests/intel/kms_dirty_fbc: Add tests to validate FBC dirty rectangle feature Santhosh Reddy Guddati
@ 2025-02-20 20:22 ` Patchwork
  2025-02-20 20:30 ` ✗ i915.CI.BAT: failure " Patchwork
  2025-02-21 14:34 ` ✗ Xe.CI.Full: " Patchwork
  3 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2025-02-20 20:22 UTC (permalink / raw)
  To: Santhosh Reddy Guddati; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 1101 bytes --]

== Series Details ==

Series: RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test (rev10)
URL   : https://patchwork.freedesktop.org/series/138218/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_8245_BAT -> XEIGTPW_12644_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (8 -> 8)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


Build changes
-------------

  * IGT: IGT_8245 -> IGTPW_12644
  * Linux: xe-2695-8554d5b7b4fded481a85ab11d75eeb97443450e2 -> xe-2696-2c2b141845ce906e187d4aa4fee06bcd9d517415

  IGTPW_12644: 12644
  IGT_8245: 822e95b2560133bc21aa3065f70d7148f23f87cf @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-2695-8554d5b7b4fded481a85ab11d75eeb97443450e2: 8554d5b7b4fded481a85ab11d75eeb97443450e2
  xe-2696-2c2b141845ce906e187d4aa4fee06bcd9d517415: 2c2b141845ce906e187d4aa4fee06bcd9d517415

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/index.html

[-- Attachment #2: Type: text/html, Size: 1660 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* ✗ i915.CI.BAT: failure for RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test (rev10)
  2025-02-20 18:58 [PATCH i-g-t v10 0/1] RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test Santhosh Reddy Guddati
  2025-02-20 18:58 ` [PATCH i-g-t v10 1/1] tests/intel/kms_dirty_fbc: Add tests to validate FBC dirty rectangle feature Santhosh Reddy Guddati
  2025-02-20 20:22 ` ✓ Xe.CI.BAT: success for RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test (rev10) Patchwork
@ 2025-02-20 20:30 ` Patchwork
  2025-02-21 14:34 ` ✗ Xe.CI.Full: " Patchwork
  3 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2025-02-20 20:30 UTC (permalink / raw)
  To: Santhosh Reddy Guddati; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 3375 bytes --]

== Series Details ==

Series: RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test (rev10)
URL   : https://patchwork.freedesktop.org/series/138218/
State : failure

== Summary ==

CI Bug Log - changes from IGT_8245 -> IGTPW_12644
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_12644 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_12644, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_12644/index.html

Participating hosts (44 -> 42)
------------------------------

  Missing    (2): fi-snb-2520m fi-pnv-d510 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_12644:

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live@late_gt_pm:
    - fi-cfl-8109u:       [PASS][1] -> [DMESG-WARN][2] +132 other tests dmesg-warn
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8245/fi-cfl-8109u/igt@i915_selftest@live@late_gt_pm.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_12644/fi-cfl-8109u/igt@i915_selftest@live@late_gt_pm.html

  
Known issues
------------

  Here are the changes found in IGTPW_12644 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live:
    - bat-twl-2:          [PASS][3] -> [ABORT][4] ([i915#12919] / [i915#13503])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8245/bat-twl-2/igt@i915_selftest@live.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_12644/bat-twl-2/igt@i915_selftest@live.html

  * igt@i915_selftest@live@gt_engines:
    - bat-twl-2:          [PASS][5] -> [ABORT][6] ([i915#12919])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8245/bat-twl-2/igt@i915_selftest@live@gt_engines.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_12644/bat-twl-2/igt@i915_selftest@live@gt_engines.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@workarounds:
    - bat-arlh-2:         [DMESG-FAIL][7] ([i915#12061]) -> [PASS][8] +1 other test pass
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8245/bat-arlh-2/igt@i915_selftest@live@workarounds.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_12644/bat-arlh-2/igt@i915_selftest@live@workarounds.html

  
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12919]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12919
  [i915#13503]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13503


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_8245 -> IGTPW_12644
  * Linux: CI_DRM_16164 -> CI_DRM_16165

  CI-20190529: 20190529
  CI_DRM_16164: 8554d5b7b4fded481a85ab11d75eeb97443450e2 @ git://anongit.freedesktop.org/gfx-ci/linux
  CI_DRM_16165: 2c2b141845ce906e187d4aa4fee06bcd9d517415 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_12644: 12644
  IGT_8245: 822e95b2560133bc21aa3065f70d7148f23f87cf @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_12644/index.html

[-- Attachment #2: Type: text/html, Size: 4152 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* ✗ Xe.CI.Full: failure for RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test (rev10)
  2025-02-20 18:58 [PATCH i-g-t v10 0/1] RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test Santhosh Reddy Guddati
                   ` (2 preceding siblings ...)
  2025-02-20 20:30 ` ✗ i915.CI.BAT: failure " Patchwork
@ 2025-02-21 14:34 ` Patchwork
  3 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2025-02-21 14:34 UTC (permalink / raw)
  To: Santhosh Reddy Guddati; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 81139 bytes --]

== Series Details ==

Series: RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test (rev10)
URL   : https://patchwork.freedesktop.org/series/138218/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_8245_full -> XEIGTPW_12644_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_12644_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_12644_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (4 -> 4)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in XEIGTPW_12644_full:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats (NEW):
    - shard-dg2-set2:     NOTRUN -> [SKIP][1] +2 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats.html
    - shard-lnl:          NOTRUN -> [SKIP][2] +2 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests (NEW):
    - shard-bmg:          NOTRUN -> [SKIP][3] +2 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-7/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html

  * igt@kms_pm_rpm@modeset-stress-extra-wait:
    - shard-dg2-set2:     [PASS][4] -> [DMESG-WARN][5]
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-434/igt@kms_pm_rpm@modeset-stress-extra-wait.html
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-435/igt@kms_pm_rpm@modeset-stress-extra-wait.html

  * igt@kms_sequence@queue-busy@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][6] +1 other test incomplete
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-435/igt@kms_sequence@queue-busy@pipe-b-hdmi-a-6.html

  
New tests
---------

  New tests have been introduced between XEIGT_8245_full and XEIGTPW_12644_full:

### New IGT tests (3) ###

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats:
    - Statuses : 3 skip(s)
    - Exec time: [0.0] s

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
    - Statuses : 3 skip(s)
    - Exec time: [0.0] s

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
    - Statuses : 3 skip(s)
    - Exec time: [0.0] s

  

Known issues
------------

  Here are the changes found in XEIGTPW_12644_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][7] ([Intel XE#2550] / [Intel XE#3767]) +15 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-6-4-mc-ccs.html

  * igt@kms_async_flips@test-cursor:
    - shard-lnl:          NOTRUN -> [SKIP][8] ([Intel XE#664])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@kms_async_flips@test-cursor.html

  * igt@kms_atomic_transition@plane-all-modeset-transition:
    - shard-lnl:          NOTRUN -> [SKIP][9] ([Intel XE#3279])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-1/igt@kms_atomic_transition@plane-all-modeset-transition.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-bmg:          NOTRUN -> [SKIP][10] ([Intel XE#2370])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-7/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][11] ([Intel XE#2327]) +3 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][12] ([Intel XE#316]) +3 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-463/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-lnl:          NOTRUN -> [SKIP][13] ([Intel XE#3658])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-1/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-270:
    - shard-lnl:          NOTRUN -> [SKIP][14] ([Intel XE#1407]) +3 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][15] ([Intel XE#1124]) +14 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180:
    - shard-lnl:          NOTRUN -> [SKIP][16] ([Intel XE#1124]) +11 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-5/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-addfb-size-overflow:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#610])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][18] ([Intel XE#610])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-435/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-bmg:          NOTRUN -> [SKIP][19] ([Intel XE#1124]) +10 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][20] ([Intel XE#2191]) +2 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html

  * igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#2314] / [Intel XE#2894]) +1 other test skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-3/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][22] ([Intel XE#2191]) +2 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html
    - shard-lnl:          NOTRUN -> [SKIP][23] ([Intel XE#1512])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-1/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html

  * igt@kms_bw@linear-tiling-2-displays-2160x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#367]) +3 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-2/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html

  * igt@kms_bw@linear-tiling-3-displays-2160x1440p:
    - shard-dg2-set2:     NOTRUN -> [SKIP][25] ([Intel XE#367]) +5 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html
    - shard-lnl:          NOTRUN -> [SKIP][26] ([Intel XE#367]) +2 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-3/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc:
    - shard-lnl:          NOTRUN -> [SKIP][27] ([Intel XE#2887]) +14 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][28] ([Intel XE#455] / [Intel XE#787]) +48 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][29] ([Intel XE#2669]) +11 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-b-edp-1.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][30] ([Intel XE#3432])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs.html
    - shard-lnl:          NOTRUN -> [SKIP][31] ([Intel XE#3432])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-5/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][32] ([Intel XE#2907]) +4 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-d-hdmi-a-3:
    - shard-bmg:          NOTRUN -> [SKIP][33] ([Intel XE#2652] / [Intel XE#787]) +8 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-d-hdmi-a-3.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2:
    - shard-dg2-set2:     NOTRUN -> [SKIP][34] ([Intel XE#787]) +195 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][35] ([Intel XE#2887]) +10 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
    - shard-dg2-set2:     [PASS][36] -> [INCOMPLETE][37] ([Intel XE#1727] / [Intel XE#3113]) +1 other test incomplete
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_chamelium_color@ctm-max:
    - shard-lnl:          NOTRUN -> [SKIP][38] ([Intel XE#306]) +2 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_chamelium_color@ctm-max.html

  * igt@kms_chamelium_color@ctm-red-to-blue:
    - shard-bmg:          NOTRUN -> [SKIP][39] ([Intel XE#2325]) +1 other test skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-7/igt@kms_chamelium_color@ctm-red-to-blue.html

  * igt@kms_chamelium_color@gamma:
    - shard-dg2-set2:     NOTRUN -> [SKIP][40] ([Intel XE#306]) +2 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_chamelium_color@gamma.html

  * igt@kms_chamelium_frames@dp-crc-single:
    - shard-bmg:          NOTRUN -> [SKIP][41] ([Intel XE#2252]) +9 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_chamelium_frames@dp-crc-single.html

  * igt@kms_chamelium_hpd@hdmi-hpd:
    - shard-dg2-set2:     NOTRUN -> [SKIP][42] ([Intel XE#373]) +12 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-432/igt@kms_chamelium_hpd@hdmi-hpd.html

  * igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe:
    - shard-lnl:          NOTRUN -> [SKIP][43] ([Intel XE#373]) +10 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html

  * igt@kms_content_protection@content-type-change:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#2341])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-2/igt@kms_content_protection@content-type-change.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-bmg:          NOTRUN -> [SKIP][45] ([Intel XE#2390])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_content_protection@dp-mst-type-0.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][46] ([Intel XE#307])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-434/igt@kms_content_protection@dp-mst-type-0.html
    - shard-lnl:          NOTRUN -> [SKIP][47] ([Intel XE#307])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-1/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@legacy:
    - shard-bmg:          NOTRUN -> [FAIL][48] ([Intel XE#1178]) +1 other test fail
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_content_protection@legacy.html
    - shard-dg2-set2:     NOTRUN -> [FAIL][49] ([Intel XE#1178]) +1 other test fail
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@kms_content_protection@legacy.html
    - shard-lnl:          NOTRUN -> [SKIP][50] ([Intel XE#3278]) +1 other test skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-1/igt@kms_content_protection@legacy.html

  * igt@kms_cursor_crc@cursor-offscreen-128x42:
    - shard-bmg:          NOTRUN -> [SKIP][51] ([Intel XE#2320]) +6 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_cursor_crc@cursor-offscreen-128x42.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-dg2-set2:     NOTRUN -> [SKIP][52] ([Intel XE#308]) +5 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-random-max-size:
    - shard-dg2-set2:     NOTRUN -> [SKIP][53] ([Intel XE#455]) +27 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_cursor_crc@cursor-random-max-size.html

  * igt@kms_cursor_crc@cursor-rapid-movement-128x42:
    - shard-lnl:          NOTRUN -> [SKIP][54] ([Intel XE#1424]) +9 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-5/igt@kms_cursor_crc@cursor-rapid-movement-128x42.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-lnl:          NOTRUN -> [SKIP][55] ([Intel XE#2321]) +3 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-4/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_crc@cursor-sliding-512x512:
    - shard-bmg:          NOTRUN -> [SKIP][56] ([Intel XE#2321]) +4 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-7/igt@kms_cursor_crc@cursor-sliding-512x512.html

  * igt@kms_cursor_crc@cursor-suspend:
    - shard-bmg:          [PASS][57] -> [DMESG-WARN][58] ([Intel XE#4330]) +45 other tests dmesg-warn
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-2/igt@kms_cursor_crc@cursor-suspend.html
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_cursor_crc@cursor-suspend.html

  * igt@kms_cursor_edge_walk@128x128-right-edge:
    - shard-dg2-set2:     [PASS][59] -> [DMESG-WARN][60] ([Intel XE#4330]) +54 other tests dmesg-warn
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-466/igt@kms_cursor_edge_walk@128x128-right-edge.html
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-435/igt@kms_cursor_edge_walk@128x128-right-edge.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
    - shard-dg2-set2:     NOTRUN -> [SKIP][61] ([Intel XE#309]) +1 other test skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-464/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
    - shard-lnl:          NOTRUN -> [SKIP][62] ([Intel XE#309]) +6 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size:
    - shard-bmg:          [PASS][63] -> [SKIP][64] ([Intel XE#2291]) +2 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-3/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
    - shard-dg2-set2:     [PASS][65] -> [SKIP][66] ([Intel XE#309])
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-435/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-464/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size:
    - shard-bmg:          NOTRUN -> [SKIP][67] ([Intel XE#2291]) +2 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-dg2-set2:     NOTRUN -> [SKIP][68] ([Intel XE#323])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dirtyfb@fbc-dirtyfb-ioctl:
    - shard-bmg:          NOTRUN -> [SKIP][69] ([Intel XE#4210])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - shard-bmg:          NOTRUN -> [SKIP][70] ([Intel XE#1508])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

  * igt@kms_dp_linktrain_fallback@dp-fallback:
    - shard-lnl:          NOTRUN -> [SKIP][71] ([Intel XE#4294])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-1/igt@kms_dp_linktrain_fallback@dp-fallback.html

  * igt@kms_dp_linktrain_fallback@dsc-fallback:
    - shard-bmg:          NOTRUN -> [SKIP][72] ([Intel XE#4331])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_dp_linktrain_fallback@dsc-fallback.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][73] ([Intel XE#4331])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_dp_linktrain_fallback@dsc-fallback.html
    - shard-lnl:          NOTRUN -> [SKIP][74] ([Intel XE#4331])
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@kms_dp_linktrain_fallback@dsc-fallback.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#2244]) +2 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-lnl:          NOTRUN -> [SKIP][76] ([Intel XE#2244]) +1 other test skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-4/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_fbcon_fbt@fbc:
    - shard-dg2-set2:     [PASS][77] -> [DMESG-FAIL][78] ([Intel XE#4330])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-466/igt@kms_fbcon_fbt@fbc.html
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-435/igt@kms_fbcon_fbt@fbc.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][79] ([Intel XE#4156])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-dg2-set2:     NOTRUN -> [SKIP][80] ([Intel XE#776]) +1 other test skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_feature_discovery@chamelium:
    - shard-bmg:          NOTRUN -> [SKIP][81] ([Intel XE#2372])
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_feature_discovery@chamelium.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][82] ([Intel XE#701])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-434/igt@kms_feature_discovery@chamelium.html
    - shard-lnl:          NOTRUN -> [SKIP][83] ([Intel XE#701])
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-5/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@display-3x:
    - shard-lnl:          NOTRUN -> [SKIP][84] ([Intel XE#703])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-4/igt@kms_feature_discovery@display-3x.html
    - shard-bmg:          NOTRUN -> [SKIP][85] ([Intel XE#2373])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_feature_discovery@display-3x.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][86] ([Intel XE#703])
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-463/igt@kms_feature_discovery@display-3x.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bd-hdmi-a6-dp4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][87] ([Intel XE#301] / [Intel XE#3321])
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bd-hdmi-a6-dp4.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@cd-hdmi-a6-dp4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][88] ([Intel XE#301]) +4 other tests fail
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@cd-hdmi-a6-dp4.html

  * igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3:
    - shard-bmg:          NOTRUN -> [FAIL][89] ([Intel XE#3321]) +5 other tests fail
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-3/igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3.html

  * igt@kms_flip@2x-plain-flip-fb-recreate:
    - shard-dg2-set2:     [PASS][90] -> [SKIP][91] ([Intel XE#310]) +1 other test skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-433/igt@kms_flip@2x-plain-flip-fb-recreate.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-464/igt@kms_flip@2x-plain-flip-fb-recreate.html

  * igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
    - shard-bmg:          [PASS][92] -> [SKIP][93] ([Intel XE#2316]) +3 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-5/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html

  * igt@kms_flip@2x-plain-flip-ts-check-interruptible:
    - shard-lnl:          NOTRUN -> [SKIP][94] ([Intel XE#1421]) +5 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html

  * igt@kms_flip@blocking-wf_vblank@b-dp2:
    - shard-bmg:          NOTRUN -> [INCOMPLETE][95] ([Intel XE#2049]) +1 other test incomplete
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_flip@blocking-wf_vblank@b-dp2.html

  * igt@kms_flip@flip-vs-expired-vblank@a-dp4:
    - shard-dg2-set2:     [PASS][96] -> [FAIL][97] ([Intel XE#301] / [Intel XE#3321]) +3 other tests fail
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-466/igt@kms_flip@flip-vs-expired-vblank@a-dp4.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_flip@flip-vs-expired-vblank@a-dp4.html

  * igt@kms_flip@flip-vs-expired-vblank@b-dp2:
    - shard-bmg:          [PASS][98] -> [FAIL][99] ([Intel XE#3321])
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-5/igt@kms_flip@flip-vs-expired-vblank@b-dp2.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_flip@flip-vs-expired-vblank@b-dp2.html

  * igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6:
    - shard-dg2-set2:     [PASS][100] -> [FAIL][101] ([Intel XE#301]) +2 other tests fail
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-466/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6.html

  * igt@kms_flip@flip-vs-panning-interruptible:
    - shard-bmg:          [PASS][102] -> [DMESG-WARN][103] ([Intel XE#2955] / [Intel XE#4330])
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-6/igt@kms_flip@flip-vs-panning-interruptible.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_flip@flip-vs-panning-interruptible.html
    - shard-dg2-set2:     [PASS][104] -> [DMESG-WARN][105] ([Intel XE#2955]) +1 other test dmesg-warn
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-433/igt@kms_flip@flip-vs-panning-interruptible.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-434/igt@kms_flip@flip-vs-panning-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][106] ([Intel XE#2293] / [Intel XE#2380]) +4 other tests skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][107] ([Intel XE#1397] / [Intel XE#1745]) +1 other test skip
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][108] ([Intel XE#1397]) +1 other test skip
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][109] ([Intel XE#1401] / [Intel XE#1745]) +6 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][110] ([Intel XE#1401]) +6 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-valid-mode:
    - shard-bmg:          NOTRUN -> [SKIP][111] ([Intel XE#2293]) +4 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][112] ([Intel XE#2311]) +26 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render.html

  * igt@kms_frontbuffer_tracking@drrs-suspend:
    - shard-dg2-set2:     NOTRUN -> [SKIP][113] ([Intel XE#651]) +45 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-463/igt@kms_frontbuffer_tracking@drrs-suspend.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][114] ([Intel XE#4141]) +10 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move:
    - shard-dg2-set2:     [PASS][115] -> [SKIP][116] ([Intel XE#656])
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-466/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-464/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][117] ([Intel XE#656]) +4 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-464/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-msflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][118] ([Intel XE#651]) +16 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][119] ([Intel XE#656]) +48 other tests skip
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][120] ([Intel XE#653]) +39 other tests skip
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff:
    - shard-bmg:          NOTRUN -> [SKIP][121] ([Intel XE#2313]) +24 other tests skip
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][122] ([Intel XE#2312]) +10 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-lnl:          NOTRUN -> [SKIP][123] ([Intel XE#1470] / [Intel XE#2853])
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-3/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-lnl:          NOTRUN -> [SKIP][124] ([Intel XE#3374] / [Intel XE#3544])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-1/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-lnl:          NOTRUN -> [SKIP][125] ([Intel XE#1503]) +1 other test skip
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-5/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-bmg:          [PASS][126] -> [SKIP][127] ([Intel XE#3012])
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-1/igt@kms_joiner@basic-force-big-joiner.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-lnl:          NOTRUN -> [SKIP][128] ([Intel XE#346])
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-4/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_joiner@invalid-modeset-ultra-joiner:
    - shard-dg2-set2:     NOTRUN -> [SKIP][129] ([Intel XE#2927]) +1 other test skip
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-432/igt@kms_joiner@invalid-modeset-ultra-joiner.html

  * igt@kms_panel_fitting@legacy:
    - shard-bmg:          NOTRUN -> [SKIP][130] ([Intel XE#2486]) +1 other test skip
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_panel_fitting@legacy.html

  * igt@kms_plane@plane-panning-bottom-right-suspend:
    - shard-bmg:          NOTRUN -> [DMESG-WARN][131] ([Intel XE#4330]) +20 other tests dmesg-warn
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_plane@plane-panning-bottom-right-suspend.html

  * igt@kms_plane_alpha_blend@coverage-vs-premult-vs-constant:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][132] ([Intel XE#4330]) +23 other tests dmesg-warn
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-435/igt@kms_plane_alpha_blend@coverage-vs-premult-vs-constant.html

  * igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256:
    - shard-dg2-set2:     NOTRUN -> [FAIL][133] ([Intel XE#616]) +3 other tests fail
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256.html

  * igt@kms_plane_cursor@viewport:
    - shard-dg2-set2:     [PASS][134] -> [FAIL][135] ([Intel XE#616])
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-433/igt@kms_plane_cursor@viewport.html
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-432/igt@kms_plane_cursor@viewport.html

  * igt@kms_plane_multiple@tiling-y:
    - shard-bmg:          NOTRUN -> [SKIP][136] ([Intel XE#2493])
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_plane_multiple@tiling-y.html
    - shard-lnl:          NOTRUN -> [SKIP][137] ([Intel XE#2493])
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-5/igt@kms_plane_multiple@tiling-y.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a:
    - shard-lnl:          NOTRUN -> [SKIP][138] ([Intel XE#2763]) +11 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5:
    - shard-bmg:          NOTRUN -> [SKIP][139] ([Intel XE#2763]) +14 other tests skip
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-dg2-set2:     NOTRUN -> [SKIP][140] ([Intel XE#908]) +1 other test skip
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-463/igt@kms_pm_dc@dc6-dpms.html
    - shard-bmg:          NOTRUN -> [FAIL][141] ([Intel XE#1430])
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-lnl:          NOTRUN -> [FAIL][142] ([Intel XE#1430]) +1 other test fail
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-8/igt@kms_pm_dc@dc6-psr.html
    - shard-bmg:          NOTRUN -> [SKIP][143] ([Intel XE#2392])
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_pm_dc@dc6-psr.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][144] ([Intel XE#1129])
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-464/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_dc@deep-pkgc:
    - shard-bmg:          NOTRUN -> [SKIP][145] ([Intel XE#2505])
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-7/igt@kms_pm_dc@deep-pkgc.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][146] ([Intel XE#2499])
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][147] ([Intel XE#1439] / [Intel XE#836])
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-7/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][148] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#836]) +1 other test skip
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-3/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area:
    - shard-lnl:          NOTRUN -> [SKIP][149] ([Intel XE#2893]) +6 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-3/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-bmg:          NOTRUN -> [SKIP][150] ([Intel XE#1489]) +11 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area:
    - shard-dg2-set2:     NOTRUN -> [SKIP][151] ([Intel XE#1489]) +16 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-463/igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr@fbc-psr2-cursor-plane-move:
    - shard-bmg:          NOTRUN -> [SKIP][152] ([Intel XE#2234] / [Intel XE#2850]) +15 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_psr@fbc-psr2-cursor-plane-move.html

  * igt@kms_psr@fbc-psr2-primary-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][153] ([Intel XE#2850] / [Intel XE#929]) +18 other tests skip
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@kms_psr@fbc-psr2-primary-render.html

  * igt@kms_psr@pr-no-drrs:
    - shard-lnl:          NOTRUN -> [SKIP][154] ([Intel XE#1406]) +5 other tests skip
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@kms_psr@pr-no-drrs.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-bmg:          NOTRUN -> [SKIP][155] ([Intel XE#2414])
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][156] ([Intel XE#2939]) +1 other test skip
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-0:
    - shard-lnl:          NOTRUN -> [SKIP][157] ([Intel XE#3414] / [Intel XE#3904]) +1 other test skip
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-1/igt@kms_rotation_crc@primary-4-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-rotation-90:
    - shard-dg2-set2:     NOTRUN -> [SKIP][158] ([Intel XE#3414]) +1 other test skip
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-432/igt@kms_rotation_crc@primary-rotation-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-bmg:          NOTRUN -> [SKIP][159] ([Intel XE#2330])
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][160] ([Intel XE#1127]) +1 other test skip
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
    - shard-lnl:          NOTRUN -> [SKIP][161] ([Intel XE#1127])
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-bmg:          NOTRUN -> [SKIP][162] ([Intel XE#3414] / [Intel XE#3904])
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-bmg:          NOTRUN -> [SKIP][163] ([Intel XE#2426])
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][164] ([Intel XE#1500])
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-432/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
    - shard-lnl:          NOTRUN -> [SKIP][165] ([Intel XE#362])
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_vrr@flip-basic-fastset:
    - shard-bmg:          NOTRUN -> [SKIP][166] ([Intel XE#1499])
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_vrr@flip-basic-fastset.html

  * igt@kms_vrr@lobf:
    - shard-bmg:          NOTRUN -> [SKIP][167] ([Intel XE#2168]) +1 other test skip
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_vrr@lobf.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][168] ([Intel XE#2168]) +1 other test skip
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-463/igt@kms_vrr@lobf.html
    - shard-lnl:          NOTRUN -> [SKIP][169] ([Intel XE#1499])
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-4/igt@kms_vrr@lobf.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-lnl:          NOTRUN -> [SKIP][170] ([Intel XE#1091] / [Intel XE#2849])
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@testdisplay:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][171] ([Intel XE#2705] / [Intel XE#4212])
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@testdisplay.html

  * igt@xe_compute_preempt@compute-threadgroup-preempt@engine-drm_xe_engine_class_compute:
    - shard-dg2-set2:     NOTRUN -> [SKIP][172] ([Intel XE#1280] / [Intel XE#455]) +1 other test skip
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-434/igt@xe_compute_preempt@compute-threadgroup-preempt@engine-drm_xe_engine_class_compute.html

  * igt@xe_copy_basic@mem-set-linear-0x369:
    - shard-dg2-set2:     NOTRUN -> [SKIP][173] ([Intel XE#1126])
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@xe_copy_basic@mem-set-linear-0x369.html

  * igt@xe_eudebug@basic-connect:
    - shard-lnl:          NOTRUN -> [SKIP][174] ([Intel XE#2905]) +13 other tests skip
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@xe_eudebug@basic-connect.html

  * igt@xe_eudebug@basic-vm-bind-ufence-delay-ack:
    - shard-dg2-set2:     NOTRUN -> [SKIP][175] ([Intel XE#3889]) +1 other test skip
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@xe_eudebug@basic-vm-bind-ufence-delay-ack.html

  * igt@xe_eudebug@basic-vm-bind-ufence-reconnect:
    - shard-bmg:          NOTRUN -> [SKIP][176] ([Intel XE#3889])
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@xe_eudebug@basic-vm-bind-ufence-reconnect.html

  * igt@xe_eudebug_online@interrupt-other-debuggable:
    - shard-dg2-set2:     NOTRUN -> [SKIP][177] ([Intel XE#2905]) +14 other tests skip
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-435/igt@xe_eudebug_online@interrupt-other-debuggable.html

  * igt@xe_eudebug_online@single-step:
    - shard-bmg:          NOTRUN -> [SKIP][178] ([Intel XE#2905]) +10 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@xe_eudebug_online@single-step.html

  * igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-samefd:
    - shard-lnl:          NOTRUN -> [SKIP][179] ([Intel XE#688]) +3 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-5/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-samefd.html

  * igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race:
    - shard-dg2-set2:     [PASS][180] -> [SKIP][181] ([Intel XE#1392]) +8 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-433/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-432/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html

  * igt@xe_exec_basic@multigpu-once-null-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][182] ([Intel XE#2322]) +8 other tests skip
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@xe_exec_basic@multigpu-once-null-rebind.html

  * igt@xe_exec_basic@multigpu-once-userptr:
    - shard-lnl:          NOTRUN -> [SKIP][183] ([Intel XE#1392]) +11 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-4/igt@xe_exec_basic@multigpu-once-userptr.html

  * igt@xe_exec_fault_mode@twice-userptr-invalidate-race:
    - shard-dg2-set2:     NOTRUN -> [SKIP][184] ([Intel XE#288]) +37 other tests skip
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-432/igt@xe_exec_fault_mode@twice-userptr-invalidate-race.html

  * igt@xe_exec_mix_modes@exec-simple-batch-store-lr:
    - shard-dg2-set2:     NOTRUN -> [SKIP][185] ([Intel XE#2360]) +1 other test skip
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@xe_exec_mix_modes@exec-simple-batch-store-lr.html

  * igt@xe_live_ktest@xe_dma_buf:
    - shard-bmg:          [PASS][186] -> [SKIP][187] ([Intel XE#4322])
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-5/igt@xe_live_ktest@xe_dma_buf.html
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@xe_live_ktest@xe_dma_buf.html

  * igt@xe_mmap@small-bar:
    - shard-bmg:          NOTRUN -> [SKIP][188] ([Intel XE#586])
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@xe_mmap@small-bar.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][189] ([Intel XE#512])
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@xe_mmap@small-bar.html
    - shard-lnl:          NOTRUN -> [SKIP][190] ([Intel XE#512])
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@xe_mmap@small-bar.html

  * igt@xe_oa@oa-unit-exclusive-stream-sample-oa:
    - shard-dg2-set2:     NOTRUN -> [SKIP][191] ([Intel XE#2541] / [Intel XE#3573]) +11 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-434/igt@xe_oa@oa-unit-exclusive-stream-sample-oa.html

  * igt@xe_peer2peer@write@write-gpua-vram01-gpub-system-p2p:
    - shard-dg2-set2:     NOTRUN -> [FAIL][192] ([Intel XE#1173]) +1 other test fail
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@xe_peer2peer@write@write-gpua-vram01-gpub-system-p2p.html

  * igt@xe_pm@d3cold-mmap-vram:
    - shard-dg2-set2:     NOTRUN -> [SKIP][193] ([Intel XE#2284] / [Intel XE#366]) +1 other test skip
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@xe_pm@d3cold-mmap-vram.html
    - shard-lnl:          NOTRUN -> [SKIP][194] ([Intel XE#2284] / [Intel XE#366]) +1 other test skip
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@xe_pm@d3cold-mmap-vram.html

  * igt@xe_pm@d3cold-mocs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][195] ([Intel XE#2284])
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-434/igt@xe_pm@d3cold-mocs.html

  * igt@xe_pm@d3cold-multiple-execs:
    - shard-bmg:          NOTRUN -> [SKIP][196] ([Intel XE#2284]) +1 other test skip
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@xe_pm@d3cold-multiple-execs.html

  * igt@xe_pm@s3-exec-after:
    - shard-bmg:          [PASS][197] -> [DMESG-WARN][198] ([Intel XE#4330] / [Intel XE#569]) +1 other test dmesg-warn
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-2/igt@xe_pm@s3-exec-after.html
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@xe_pm@s3-exec-after.html
    - shard-dg2-set2:     [PASS][199] -> [DMESG-WARN][200] ([Intel XE#4330] / [Intel XE#569]) +1 other test dmesg-warn
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-436/igt@xe_pm@s3-exec-after.html
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-434/igt@xe_pm@s3-exec-after.html

  * igt@xe_pm@s3-multiple-execs:
    - shard-lnl:          NOTRUN -> [SKIP][201] ([Intel XE#584])
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-6/igt@xe_pm@s3-multiple-execs.html

  * igt@xe_pm@s4-basic:
    - shard-lnl:          NOTRUN -> [ABORT][202] ([Intel XE#4268])
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-3/igt@xe_pm@s4-basic.html

  * igt@xe_pm@s4-exec-after:
    - shard-dg2-set2:     NOTRUN -> [ABORT][203] ([Intel XE#4268])
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@xe_pm@s4-exec-after.html

  * igt@xe_query@multigpu-query-cs-cycles:
    - shard-bmg:          NOTRUN -> [SKIP][204] ([Intel XE#944]) +2 other tests skip
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@xe_query@multigpu-query-cs-cycles.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][205] ([Intel XE#944]) +2 other tests skip
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-463/igt@xe_query@multigpu-query-cs-cycles.html

  * igt@xe_query@multigpu-query-topology-l3-bank-mask:
    - shard-lnl:          NOTRUN -> [SKIP][206] ([Intel XE#944]) +3 other tests skip
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@xe_query@multigpu-query-topology-l3-bank-mask.html

  * igt@xe_sriov_auto_provisioning@fair-allocation:
    - shard-lnl:          NOTRUN -> [SKIP][207] ([Intel XE#4130])
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-8/igt@xe_sriov_auto_provisioning@fair-allocation.html
    - shard-bmg:          NOTRUN -> [SKIP][208] ([Intel XE#4130])
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@xe_sriov_auto_provisioning@fair-allocation.html

  * igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][209] ([Intel XE#4130]) +1 other test skip
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-434/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs.html

  * igt@xe_sriov_flr@flr-twice:
    - shard-dg2-set2:     NOTRUN -> [SKIP][210] ([Intel XE#4273])
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@xe_sriov_flr@flr-twice.html

  * igt@xe_sriov_scheduling@equal-throughput:
    - shard-dg2-set2:     NOTRUN -> [SKIP][211] ([Intel XE#4351])
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@xe_sriov_scheduling@equal-throughput.html
    - shard-lnl:          NOTRUN -> [SKIP][212] ([Intel XE#4351])
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-3/igt@xe_sriov_scheduling@equal-throughput.html
    - shard-bmg:          NOTRUN -> [SKIP][213] ([Intel XE#4351])
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-7/igt@xe_sriov_scheduling@equal-throughput.html

  * igt@xe_wedged@wedged-mode-toggle:
    - shard-dg2-set2:     NOTRUN -> [ABORT][214] ([Intel XE#3075] / [Intel XE#3084])
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@xe_wedged@wedged-mode-toggle.html

  
#### Possible fixes ####

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-linear:
    - shard-lnl:          [FAIL][215] ([Intel XE#911]) -> [PASS][216] +3 other tests pass
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-lnl-7/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-linear.html
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-linear.html

  * igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p:
    - shard-bmg:          [SKIP][217] ([Intel XE#2314] / [Intel XE#2894]) -> [PASS][218] +1 other test pass
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-6/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-bmg:          [INCOMPLETE][219] ([Intel XE#3862]) -> [PASS][220] +1 other test pass
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-8/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
    - shard-dg2-set2:     [INCOMPLETE][221] ([Intel XE#1727]) -> [PASS][222]
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
    - shard-bmg:          [SKIP][223] ([Intel XE#2291]) -> [PASS][224] +3 other tests pass
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-4/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
    - shard-dg2-set2:     [SKIP][225] ([Intel XE#309]) -> [PASS][226] +1 other test pass
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-464/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html

  * igt@kms_cursor_legacy@forked-bo@pipe-c:
    - shard-dg2-set2:     [DMESG-WARN][227] ([Intel XE#4330]) -> [PASS][228] +17 other tests pass
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-464/igt@kms_cursor_legacy@forked-bo@pipe-c.html
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@kms_cursor_legacy@forked-bo@pipe-c.html

  * igt@kms_feature_discovery@display-2x:
    - shard-bmg:          [SKIP][229] ([Intel XE#2373]) -> [PASS][230]
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-4/igt@kms_feature_discovery@display-2x.html
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-3/igt@kms_feature_discovery@display-2x.html

  * igt@kms_flip@2x-flip-vs-dpms:
    - shard-bmg:          [DMESG-WARN][231] ([Intel XE#2955]) -> [PASS][232] +1 other test pass
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-2/igt@kms_flip@2x-flip-vs-dpms.html
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_flip@2x-flip-vs-dpms.html
    - shard-dg2-set2:     [SKIP][233] ([Intel XE#310]) -> [PASS][234] +2 other tests pass
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-464/igt@kms_flip@2x-flip-vs-dpms.html
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_flip@2x-flip-vs-dpms.html

  * igt@kms_flip@2x-modeset-vs-vblank-race:
    - shard-dg2-set2:     [DMESG-WARN][235] ([Intel XE#2955]) -> [PASS][236]
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-432/igt@kms_flip@2x-modeset-vs-vblank-race.html
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_flip@2x-modeset-vs-vblank-race.html

  * igt@kms_flip@2x-plain-flip-interruptible:
    - shard-bmg:          [SKIP][237] ([Intel XE#2316]) -> [PASS][238] +3 other tests pass
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-4/igt@kms_flip@2x-plain-flip-interruptible.html
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_flip@2x-plain-flip-interruptible.html

  * igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a3:
    - shard-bmg:          [FAIL][239] ([Intel XE#3321]) -> [PASS][240]
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-5/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a3.html
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a3.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-bmg:          [INCOMPLETE][241] ([Intel XE#2049] / [Intel XE#2597]) -> [PASS][242] +1 other test pass
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-7/igt@kms_flip@flip-vs-suspend-interruptible.html
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-3/igt@kms_flip@flip-vs-suspend-interruptible.html
    - shard-dg2-set2:     [INCOMPLETE][243] ([Intel XE#2049] / [Intel XE#2597]) -> [PASS][244] +1 other test pass
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-463/igt@kms_flip@flip-vs-suspend-interruptible.html
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-436/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip@plain-flip-ts-check@a-edp1:
    - shard-lnl:          [FAIL][245] ([Intel XE#886]) -> [PASS][246] +1 other test pass
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-lnl-6/igt@kms_flip@plain-flip-ts-check@a-edp1.html
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-7/igt@kms_flip@plain-flip-ts-check@a-edp1.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-dg2-set2:     [SKIP][247] ([Intel XE#656]) -> [PASS][248] +7 other tests pass
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-464/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc.html
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-435/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_hdr@bpc-switch-dpms:
    - shard-dg2-set2:     [INCOMPLETE][249] -> [PASS][250] +1 other test pass
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-435/igt@kms_hdr@bpc-switch-dpms.html
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@kms_hdr@bpc-switch-dpms.html

  * igt@kms_joiner@invalid-modeset-force-big-joiner:
    - shard-bmg:          [SKIP][251] ([Intel XE#3012]) -> [PASS][252]
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-6/igt@kms_joiner@invalid-modeset-force-big-joiner.html
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_joiner@invalid-modeset-force-big-joiner.html

  * igt@kms_vblank@query-busy@pipe-d-hdmi-a-3:
    - shard-bmg:          [DMESG-WARN][253] ([Intel XE#4330]) -> [PASS][254] +28 other tests pass
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-2/igt@kms_vblank@query-busy@pipe-d-hdmi-a-3.html
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_vblank@query-busy@pipe-d-hdmi-a-3.html

  * igt@kms_vrr@flipline:
    - shard-lnl:          [FAIL][255] ([Intel XE#1522]) -> [PASS][256] +1 other test pass
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-lnl-5/igt@kms_vrr@flipline.html
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-lnl-5/igt@kms_vrr@flipline.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap:
    - shard-dg2-set2:     [SKIP][257] ([Intel XE#1392]) -> [PASS][258] +1 other test pass
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap.html
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap.html

  * igt@xe_exec_threads@threads-hang-rebind:
    - shard-dg2-set2:     [DMESG-WARN][259] ([Intel XE#3876]) -> [PASS][260]
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-434/igt@xe_exec_threads@threads-hang-rebind.html
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-432/igt@xe_exec_threads@threads-hang-rebind.html

  * igt@xe_pm@s3-multiple-execs:
    - shard-bmg:          [DMESG-WARN][261] ([Intel XE#4330] / [Intel XE#569]) -> [PASS][262]
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-6/igt@xe_pm@s3-multiple-execs.html
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@xe_pm@s3-multiple-execs.html
    - shard-dg2-set2:     [DMESG-WARN][263] ([Intel XE#4330] / [Intel XE#569]) -> [PASS][264]
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-432/igt@xe_pm@s3-multiple-execs.html
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-466/igt@xe_pm@s3-multiple-execs.html

  
#### Warnings ####

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][265] ([Intel XE#787]) -> [SKIP][266] ([Intel XE#455] / [Intel XE#787]) +2 other tests skip
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-466/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-6.html
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-464/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-6.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][267] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][268] ([Intel XE#787]) +5 other tests skip
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-464/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-6.html
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-434/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-6.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic:
    - shard-bmg:          [SKIP][269] ([Intel XE#2291]) -> [DMESG-WARN][270] ([Intel XE#4330]) +1 other test dmesg-warn
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-atomic.html
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-1/igt@kms_cursor_legacy@cursora-vs-flipb-atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
    - shard-dg2-set2:     [SKIP][271] ([Intel XE#309]) -> [DMESG-WARN][272] ([Intel XE#4330])
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-464/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-435/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html

  * igt@kms_flip@2x-flip-vs-expired-vblank:
    - shard-bmg:          [SKIP][273] ([Intel XE#2316]) -> [FAIL][274] ([Intel XE#3321])
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-6/igt@kms_flip@2x-flip-vs-expired-vblank.html
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-3/igt@kms_flip@2x-flip-vs-expired-vblank.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff:
    - shard-dg2-set2:     [SKIP][275] ([Intel XE#656]) -> [SKIP][276] ([Intel XE#651]) +6 other tests skip
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-464/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff.html
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-433/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render:
    - shard-bmg:          [SKIP][277] ([Intel XE#2312]) -> [SKIP][278] ([Intel XE#2311]) +14 other tests skip
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render.html
   [278]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt:
    - shard-bmg:          [SKIP][279] ([Intel XE#2311]) -> [SKIP][280] ([Intel XE#2312]) +9 other tests skip
   [279]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt.html
   [280]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt.html
    - shard-dg2-set2:     [SKIP][281] ([Intel XE#651]) -> [SKIP][282] ([Intel XE#656]) +1 other test skip
   [281]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-463/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt.html
   [282]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-464/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc:
    - shard-bmg:          [SKIP][283] ([Intel XE#4141]) -> [SKIP][284] ([Intel XE#2312]) +4 other tests skip
   [283]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc.html
   [284]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
    - shard-bmg:          [SKIP][285] ([Intel XE#2312]) -> [SKIP][286] ([Intel XE#4141]) +7 other tests skip
   [285]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html
   [286]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render:
    - shard-bmg:          [SKIP][287] ([Intel XE#2312]) -> [SKIP][288] ([Intel XE#2313]) +11 other tests skip
   [287]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render.html
   [288]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt:
    - shard-dg2-set2:     [SKIP][289] ([Intel XE#656]) -> [SKIP][290] ([Intel XE#653]) +6 other tests skip
   [289]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt.html
   [290]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-463/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen:
    - shard-bmg:          [SKIP][291] ([Intel XE#2313]) -> [SKIP][292] ([Intel XE#2312]) +8 other tests skip
   [291]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-1/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html
   [292]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
    - shard-dg2-set2:     [SKIP][293] ([Intel XE#653]) -> [SKIP][294] ([Intel XE#656]) +3 other tests skip
   [293]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html
   [294]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html

  * igt@xe_live_ktest@xe_eudebug:
    - shard-bmg:          [SKIP][295] ([Intel XE#4322]) -> [SKIP][296] ([Intel XE#2833])
   [295]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8245/shard-bmg-2/igt@xe_live_ktest@xe_eudebug.html
   [296]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/shard-bmg-8/igt@xe_live_ktest@xe_eudebug.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
  [Intel XE#1173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1173
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1430]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1430
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1522
  [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
  [Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
  [Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
  [Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
  [Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
  [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
  [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
  [Intel XE#2370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2370
  [Intel XE#2372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2372
  [Intel XE#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373
  [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
  [Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
  [Intel XE#2414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2414
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
  [Intel XE#2493]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2493
  [Intel XE#2499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2499
  [Intel XE#2505]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2505
  [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
  [Intel XE#2550]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2550
  [Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
  [Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [Intel XE#2833]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2833
  [Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2853]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2853
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
  [Intel XE#2905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2905
  [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
  [Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927
  [Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
  [Intel XE#2955]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2955
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#3012]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3012
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#3075]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3075
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#3084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3084
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
  [Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
  [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
  [Intel XE#3279]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3279
  [Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
  [Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
  [Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
  [Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
  [Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
  [Intel XE#3658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3658
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#3767]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3767
  [Intel XE#3862]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3862
  [Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
  [Intel XE#3889]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3889
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156
  [Intel XE#4210]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4210
  [Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
  [Intel XE#4268]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4268
  [Intel XE#4273]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4273
  [Intel XE#4294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4294
  [Intel XE#4322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4322
  [Intel XE#4330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4330
  [Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
  [Intel XE#4351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4351
  [Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/512
  [Intel XE#569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/569
  [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
  [Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#664]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/664
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/701
  [Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
  [Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/908
  [Intel XE#911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/911
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


Build changes
-------------

  * IGT: IGT_8245 -> IGTPW_12644
  * Linux: xe-2695-8554d5b7b4fded481a85ab11d75eeb97443450e2 -> xe-2696-2c2b141845ce906e187d4aa4fee06bcd9d517415

  IGTPW_12644: 12644
  IGT_8245: 822e95b2560133bc21aa3065f70d7148f23f87cf @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-2695-8554d5b7b4fded481a85ab11d75eeb97443450e2: 8554d5b7b4fded481a85ab11d75eeb97443450e2
  xe-2696-2c2b141845ce906e187d4aa4fee06bcd9d517415: 2c2b141845ce906e187d4aa4fee06bcd9d517415

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_12644/index.html

[-- Attachment #2: Type: text/html, Size: 95239 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH i-g-t v10 1/1] tests/intel/kms_dirty_fbc: Add tests to validate FBC dirty rectangle feature
  2025-02-20 18:58 ` [PATCH i-g-t v10 1/1] tests/intel/kms_dirty_fbc: Add tests to validate FBC dirty rectangle feature Santhosh Reddy Guddati
@ 2025-02-25  9:14   ` Govindapillai, Vinod
  0 siblings, 0 replies; 6+ messages in thread
From: Govindapillai, Vinod @ 2025-02-25  9:14 UTC (permalink / raw)
  To: igt-dev@lists.freedesktop.org, Reddy Guddati, Santhosh
  Cc: Joshi, Kunal1, Naladala, Ramanaidu, Sharma, Swati2,
	Heikkila, Juha-pekka, B, Jeevan

On Fri, 2025-02-21 at 00:28 +0530, Santhosh Reddy Guddati wrote:
> This feature allows FBC to recompress a subsection of a frame.
> When the Dirty Rectangle Enable bit is set in the FBC_DIRTY_CTL register,
> and there is a sync flip indication, display will read the scanlines
> between (and including) the Dirty Rectangle Start Line and End Line,
> in FBC_DIRTY_RECTANGLE, from the uncompressed frame buffer.
> 
> Utilise the FP_DAMAGE_CLIPS property in the below subtests to validate
> the feature.
> 
> 1.Implement basic tests for Frame Buffer Compression (FBC) with dirty rectangles.
> 2.Add tests for dirty rectangles outside the visible region.
> 3.Include tests for dirtyfb functionality.
> 4.Support different formats in FBC dirty rectangle tests.
> 5.Ensure proper CRC validation for each test case.
> 
> v2: Fix typo , add version check for feature support,
>     extend support for all pipes (Rama Naidu).
> 
> v3: Add new subtest to scatter dirty rectangles at differnt places in a
>     frame and commit all rectangles at once (Rama Naidu).
>     Add a negative case with invalid coordinates (Vinod)
> 
> v4: Add subtest `fbc-dirty-rectangle-basic` to perform sanity checks
>     by sending multiple damaged areas with non-PSR modes.(Vinod)
>     Update `meson.build` to include the new test.
> 
> v5: Include checks to ensure FBC is enabled during tests.(Vinod)
>     Add dynamic subtests for fbc-dirty-rectangle-different-formats
>     and fbc-dirty-rectangle-dirtyfb-ioctl. (Vinod)
> 
> v6: Update meson.build to include kms_fbc_dirty_rect.
> 
> v7: Add commit description, remove i915 check and remove
>     redundant checks (Swathi)
>     Reformat code by removing redundant usage.
>     Add new test to verify dirty rect outside-visible-region.
> 
> v8: Include test description and documentation for subtests.
>     Updated framebuffer to target the specific area,
>     avoiding a full screen update and making the damage area
>     check effective (Vinod).
>     Add new subtest fbc-dirty-rectangle-dirtyfb-tests (Vinod)
> 
> v9: Improve commit message and description.
>     Disable psr on supported sinks to validate fbc tests (Vinod)
> 
> v10: Update driver to DRIVER_XE. Remove unused enum.
>      Improve FBC check timing to align close with CRC capture.
>      Order list alphabetically.Remove basic formats test as this is
>      included in other formats test. (Juha Pekka Heikkila)
> 
> Signed-off-by: Santhosh Reddy Guddati <santhosh.reddy.guddati@intel.com>
> ---
>  tests/intel/kms_fbc_dirty_rect.c | 559 +++++++++++++++++++++++++++++++
>  tests/meson.build                |   1 +
>  2 files changed, 560 insertions(+)
>  create mode 100644 tests/intel/kms_fbc_dirty_rect.c

Thanks for the updates. Tried these and seems to work.
So mostly okay to me.

But please check set_fb_and_collect_crc() with some IGT experts regarding the FBC is enabled check
in that function. I think it works - but just be aligned with other such FBC tests.

Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>


> 
> diff --git a/tests/intel/kms_fbc_dirty_rect.c b/tests/intel/kms_fbc_dirty_rect.c
> new file mode 100644
> index 000000000..c08ee7c4b
> --- /dev/null
> +++ b/tests/intel/kms_fbc_dirty_rect.c
> @@ -0,0 +1,559 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +/**
> + * TEST: kms dirty fbc
> + * Category: Display
> + * Description: Test DIRTYFB ioctl functionality with FBC enabled.
> + * Driver requirement: xe
> + * Functionality: dirtyfb, fbc
> + * Mega feature: General Display Features
> + * Test category: functionality test
> + */
> +
> +#include <sys/types.h>
> +
> +#include "igt.h"
> +
> +#include "igt_sysfs.h"
> +#include "i915/gem.h"
> +#include "i915/gem_create.h"
> +#include "i915/intel_drrs.h"
> +#include "igt_psr.h"
> +
> +#include "i915/intel_fbc.h"
> +#include "intel_mocs.h"
> +#include "intel_pat.h"
> +
> +#include "xe/xe_query.h"
> +
> +/**
> + *
> + * SUBTEST: fbc-dirty-rectangle-out-visible-area
> + * Description: Sanity test to verify FBC DR by sending multiple damaged areas with non psr modes
> + *
> + * SUBTEST: fbc-dirty-rectangle-dirtyfb-tests
> + * Description: Sanity test to verify FBC DR by sending multiple damaged areas with non psr modes
> + *
> + * SUBTEST: fbc-dirty-rectangle-different-formats
> + * Description: Sanity test to verify FBC DR by sending multiple
> + *              damaged areas with different formats.
> + *
> + */
> +
> +#ifndef PAGE_SIZE
> +#define PAGE_SIZE 4096
> +#endif
> +
> +#define SQUARE_SIZE 100
> +#define SQUARE_OFFSET 100
> +#define SQUARE_OFFSET_2 600
> +
> +typedef struct {
> +	int drm_fd;
> +	int debugfs_fd;
> +	igt_display_t display;
> +	drmModeModeInfo *mode;
> +	igt_output_t *output;
> +	igt_pipe_crc_t *pipe_crc;
> +	enum pipe pipe;
> +	u32 format;
> +
> +	igt_crc_t ref_crc;
> +
> +	enum {
> +		FEATURE_NONE  = 0,
> +		FEATURE_PSR   = 1,
> +		FEATURE_FBC   = 2,
> +		FEATURE_DRRS  = 4,
> +		FEATURE_COUNT = 8,
> +		FEATURE_DEFAULT = 8,
> +	} feature;
> +} data_t;
> +
> +static void set_damage_clip(struct drm_mode_rect *damage, int x1, int y1, int x2, int y2)
> +{
> +	damage->x1 = x1;
> +	damage->y1 = y1;
> +	damage->x2 = x2;
> +	damage->y2 = y2;
> +}
> +
> +static void set_damage_clip_w(struct drm_mode_rect *damage, int x1, int y1, int width, int
> height)
> +{
> +	set_damage_clip(damage, x1, y1, x1 + width, y1 + height);
> +}
> +
> +static void dirty_rect_draw_white_rects(data_t *data, struct igt_fb *fb,
> +					int nrects, struct drm_mode_rect *rect)
> +{
> +	cairo_t *cr;
> +
> +	if (!nrects || !rect)
> +		return;
> +
> +	cr = igt_get_cairo_ctx(data->drm_fd, fb);
> +
> +	for (int i = 0; i < nrects; i++) {
> +		igt_paint_color_alpha(cr, rect[i].x1, rect[i].y1,
> +				      rect[i].x2 - rect[i].x1,
> +				      rect[i].y2 - rect[i].y1,
> +				      1.0, 1.0, 1.0, 1.0);
> +	}
> +
> +	igt_put_cairo_ctx(cr);
> +}
> +
> +
> +static void
> +set_damage_area(igt_plane_t *plane,  struct drm_mode_rect *rects,
> +		size_t length)
> +{
> +	igt_plane_replace_prop_blob(plane, IGT_PLANE_FB_DAMAGE_CLIPS, rects, length);
> +}
> +
> +static void
> +set_fb_and_collect_crc(data_t *data, igt_plane_t *plane, struct igt_fb *fb,
> +		       igt_pipe_crc_t *pipe_crc, igt_crc_t *crc)
> +{
> +	igt_plane_set_fb(plane, fb);
> +	igt_display_commit2(&data->display, COMMIT_ATOMIC);
> +
> +	if (!data->pipe_crc) {
> +		data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
> +						  IGT_PIPE_CRC_SOURCE_AUTO);
> +	}
> +
> +	igt_pipe_crc_start(data->pipe_crc);
> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, crc);
> +	igt_pipe_crc_stop(data->pipe_crc);
> +	igt_assert_f(intel_fbc_is_enabled(data->drm_fd, data->pipe,
> +					  IGT_LOG_WARN),
> +					  "FBC is not enabled\n");
> +}
> +
> +static void
> +update_rect_with_dirtyfb(data_t *data, struct igt_fb *fb1, struct igt_fb *fb2,
> +			 struct drm_mode_rect *rect)
> +{
> +	struct intel_buf *src, *dst;
> +	struct intel_bb *ibb;
> +	igt_spin_t *spin;
> +	int r;
> +	struct buf_ops *bops;
> +	igt_render_copyfunc_t rendercopy;
> +
> +	bops = buf_ops_create(data->drm_fd);
> +	rendercopy = igt_get_render_copyfunc(intel_get_drm_devid(data->drm_fd));
> +
> +	src = intel_buf_create_full(bops, fb1->gem_handle, fb1->width,
> +				    fb1->height,
> +				    igt_drm_format_to_bpp(fb1->drm_format),
> +				    0,
> +				    igt_fb_mod_to_tiling(fb1->modifier),
> +				    0, fb1->size, 0, system_memory(data->drm_fd),
> +				    intel_get_pat_idx_uc(data->drm_fd),
> +				    DEFAULT_MOCS_INDEX);
> +	dst = intel_buf_create_full(bops, fb2->gem_handle,
> +				    fb2->width, fb2->height,
> +				    igt_drm_format_to_bpp(fb2->drm_format),
> +				    0, igt_fb_mod_to_tiling(fb2->modifier),
> +				    0, fb2->size, 0, system_memory(data->drm_fd),
> +				    intel_get_pat_idx_uc(data->drm_fd),
> +				    DEFAULT_MOCS_INDEX);
> +	ibb = intel_bb_create(data->drm_fd, PAGE_SIZE);
> +
> +	spin = igt_spin_new(data->drm_fd, .ahnd = ibb->allocator_handle);
> +	igt_spin_set_timeout(spin, NSEC_PER_SEC);
> +
> +	rendercopy(ibb, src, rect->x1, rect->y1, rect->x2 - rect->x1,
> +		   rect->y2 - rect->y1, dst, rect->x1, rect->y1);
> +
> +	/* Perfom dirtyfb right after initiating rendercopy/blitter */
> +	r = drmModeDirtyFB(data->drm_fd, fb2->fb_id, NULL, 0);
> +	igt_assert(r == 0 || r == -ENOSYS);
> +
> +	/* Ensure rendercopy/blitter is complete */
> +	intel_bb_sync(ibb);
> +
> +	igt_spin_free(data->drm_fd, spin);
> +	intel_bb_destroy(ibb);
> +	intel_buf_destroy(src);
> +	intel_buf_destroy(dst);
> +}
> +
> +static void fbc_dirty_rectangle_dirtyfb(data_t *data)
> +{
> +	igt_pipe_crc_t *pipe_crc = data->pipe_crc;
> +	igt_display_t *display = &data->display;
> +	igt_output_t *output = data->output;
> +	igt_plane_t *primary;
> +	drmModeModeInfo *mode;
> +	struct igt_fb main_fb, fb2, fb3;
> +	struct drm_mode_rect full_rect, rect1, rect2;
> +	igt_crc_t main_crc, fb2_crc, fb3_crc, crc;
> +
> +	mode = igt_output_get_mode(output);
> +	igt_output_set_pipe(output, data->pipe);
> +	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> +
> +	set_damage_clip_w(&full_rect, 0, 0, mode->hdisplay, mode->vdisplay);
> +	set_damage_clip_w(&rect1, SQUARE_OFFSET, SQUARE_OFFSET, SQUARE_SIZE, SQUARE_SIZE);
> +	set_damage_clip_w(&rect2, SQUARE_OFFSET_2, SQUARE_OFFSET_2, SQUARE_SIZE, SQUARE_SIZE);
> +
> +	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay,
> +			    data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &main_fb);
> +
> +	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay,
> +			    data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &fb2);
> +	dirty_rect_draw_white_rects(data, &fb2, 1, &rect1);
> +
> +	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay,
> +			    data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &fb3);
> +	dirty_rect_draw_white_rects(data, &fb3, 1, &rect2);
> +
> +	/* 1st screen - Empty blue screen */
> +	set_damage_area(primary, &full_rect, sizeof(full_rect));
> +	set_fb_and_collect_crc(data, primary, &main_fb, pipe_crc, &main_crc);
> +
> +	/* 2nd screen - 1st white rect at 100, 100 - using damage area */
> +	set_damage_area(primary, &rect1, sizeof(rect1));
> +	set_fb_and_collect_crc(data, primary, &fb2, pipe_crc, &fb2_crc);
> +
> +	/* 3rd screen - 2nd white rect at 600, 600 - using damage area.
> +	 * Now two white rects on screen
> +	 */
> +	set_damage_area(primary, &rect2, sizeof(rect2));
> +	set_fb_and_collect_crc(data, primary, &fb3, pipe_crc, &fb3_crc);
> +
> +	/* 4th screen - clear the 2nd white rect at 600,600 with dirtyfb.
> +	 * Copy rect2 area from main_fb to fb3.
> +	 */
> +	update_rect_with_dirtyfb(data, &main_fb, &fb3, &rect2);
> +	/* Now the screen must match 1st screen - with whole blue */
> +	igt_pipe_crc_collect_crc(data->pipe_crc, &crc);
> +	igt_assert_crc_equal(&crc, &main_crc);
> +
> +	/* 5th screen - Copy the first rect at 100,100 with dirtyfb.
> +	 * Copy rect1 area from fb2 to fb3.
> +	 */
> +	update_rect_with_dirtyfb(data, &fb2, &fb3, &rect1);
> +	/* Now the screen must match 2nd screen - with one rect at 100,100 */
> +	igt_pipe_crc_collect_crc(data->pipe_crc, &crc);
> +	igt_assert_crc_equal(&crc, &fb2_crc);
> +
> +	igt_plane_set_fb(primary, NULL);
> +	igt_remove_fb(data->drm_fd, &main_fb);
> +	igt_remove_fb(data->drm_fd, &fb2);
> +	igt_remove_fb(data->drm_fd, &fb3);
> +	igt_display_commit2(display, COMMIT_ATOMIC);
> +
> +	if (data->pipe_crc) {
> +		igt_pipe_crc_free(data->pipe_crc);
> +		data->pipe_crc = NULL;
> +	}
> +}
> +
> +/**
> + * fbc_dirty_rectangle_outside_visible_region - Test dirty rectangle outside visible region
> + * @data: Pointer to the test data structure
> + *
> + * This test verifies the behavior of the Frame Buffer Compression (FBC) when
> + * dirty rectangles are set outside the visible region of the display. It creates
> + * a main framebuffer and three additional framebuffers with dirty rectangles
> + * positioned horizontally, vertically, and both horizontally and vertically
> + * outside the visible region. The test then sets the damage area to these
> + * rectangles and collects CRCs to ensure that the content outside the visible
> + * region does not affect the main framebuffer's CRC.
> + */
> +static void fbc_dirty_rectangle_outside_visible_region(data_t *data)
> +{
> +	igt_pipe_crc_t *pipe_crc = data->pipe_crc;
> +	igt_display_t *display = &data->display;
> +	igt_output_t *output = data->output;
> +	igt_plane_t *primary;
> +	struct igt_fb main_fb, rect_fb[3];
> +	struct drm_mode_rect rect[3], full_rect;
> +	igt_crc_t main_crc, rect_crc[3];
> +
> +	igt_output_set_pipe(output, data->pipe);
> +	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> +
> +	set_damage_clip(&full_rect, 0, 0, data->mode->hdisplay + 200, data->mode->vdisplay +
> 200);
> +	/* Rect Horizontally outside visible region */
> +	set_damage_clip_w(&rect[0], data->mode->hdisplay + 10, 100, SQUARE_SIZE, SQUARE_SIZE);
> +	/* Rect vertically outside visible region */
> +	set_damage_clip_w(&rect[1], 10, data->mode->vdisplay + 50, SQUARE_SIZE, SQUARE_SIZE);
> +	/* Rect Horizontally and vertically outside visible region */
> +	set_damage_clip_w(&rect[2], data->mode->hdisplay + 10, data->mode->vdisplay + 50,
> +			  SQUARE_SIZE, SQUARE_SIZE);
> +
> +	igt_create_color_fb(data->drm_fd, data->mode->hdisplay + 200,
> +			    data->mode->vdisplay + 200, data->format,
> +			    DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0, &main_fb);
> +
> +	for (int i = 0; i < 3; i++) {
> +		igt_create_color_fb(data->drm_fd, data->mode->hdisplay + 200,
> +				    data->mode->vdisplay + 200, data->format,
> +				    DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0, &rect_fb[i]);
> +		dirty_rect_draw_white_rects(data, &rect_fb[i], 1, &rect[i]);
> +	}
> +
> +	/* Main rect */
> +	set_damage_area(primary, &full_rect, sizeof(full_rect));
> +	set_fb_and_collect_crc(data, primary, &main_fb, pipe_crc, &main_crc);
> +
> +	for (int i = 0; i < 3; i++) {
> +		set_damage_area(primary, &rect[i], sizeof(rect[i]));
> +		set_fb_and_collect_crc(data, primary, &rect_fb[i], pipe_crc, &rect_crc[i]);
> +		igt_assert_crc_equal(&rect_crc[i], &main_crc);
> +	}
> +
> +	igt_plane_set_fb(primary, NULL);
> +	igt_remove_fb(data->drm_fd, &main_fb);
> +	for (int i = 0; i < 3; i++)
> +		igt_remove_fb(data->drm_fd, &rect_fb[i]);
> +	igt_display_commit2(display, COMMIT_ATOMIC);
> +
> +	if (data->pipe_crc) {
> +		igt_pipe_crc_free(data->pipe_crc);
> +		data->pipe_crc = NULL;
> +	}
> +}
> +
> +/*
> + * fbc_dirty_rectangle_basic
> + * @data: data_t
> + *
> + * This test draws screens as full-screen updates and collects their CRCs
> + * as reference values. Screens are then updated using the FBC
> + * dirty rect feature and compared with the reference CRCs.
> + * Matching CRCs indicate success.
> + *
> + * Steps to Collect Reference CRCs:
> + * 1. Full Blue Screen
> + *    - Frame Buffer: main_fb
> + *    - CRC: main_fb_crc
> + * 2. White Square on Upper Left
> + *    - Frame Buffer: rect1_fb
> + *    - CRC: rect1_fb_crc
> + * 3. Second White Square Below First
> + *    - Frame Buffer: rect2_fb
> + *    - CRC: rect2_fb_crc
> + * 4. Both Rectangles
> + *    - Frame Buffer: rect_combined_fb
> + *    - CRC: rect_combined_fb_crc
> + *
> + * Steps to Update Screen with FBC Dirty Rect:
> + * 1. Full Blue Screen
> + *    - Set rect_combined_fb with Damage Area Update
> + *    - CRC should match rect_combined_fb_crc
> + * 2. Clear First Rectangle Area
> + *    - Use main_fb and damage area as rect1 coordinates
> + *    - CRC should match rect2_fb_crc
> + * 3. Clear Second Rectangle Area
> + *    - Use main_fb and damage area as rect2 coordinates
> + *    - CRC should match main_fb_crc
> + */
> +static void fbc_dirty_rectangle_basic(data_t *data)
> +{
> +	igt_display_t *display = &data->display;
> +	igt_output_t *output = data->output;
> +	igt_plane_t *primary;
> +	struct igt_fb main_fb;
> +	struct igt_fb rect_1_fb;
> +	struct igt_fb rect_2_fb;
> +	struct igt_fb rect_combined_fb;
> +	struct drm_mode_rect rect1;
> +	struct drm_mode_rect rect2;
> +	struct drm_mode_rect rect_combined[2];
> +	struct drm_mode_rect full_rect;
> +	igt_crc_t main_fb_crc, rect_1_fb_crc, rect_2_fb_crc, rect_combined_fb_crc, crc;
> +
> +	igt_output_set_pipe(output, data->pipe);
> +	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> +
> +	set_damage_clip(&full_rect, 0, 0, data->mode->hdisplay-1, data->mode->vdisplay-1);
> +	set_damage_clip(&rect1, SQUARE_OFFSET, SQUARE_OFFSET, SQUARE_OFFSET + SQUARE_SIZE,
> +			SQUARE_OFFSET + SQUARE_SIZE);
> +	set_damage_clip(&rect2, SQUARE_OFFSET_2, SQUARE_OFFSET_2, SQUARE_OFFSET_2 + SQUARE_SIZE,
> +			SQUARE_OFFSET_2 + SQUARE_SIZE);
> +	set_damage_clip(&rect_combined[0], rect1.x1, rect1.y1, rect1.x2, rect1.y2);
> +	set_damage_clip(&rect_combined[1], rect2.x1, rect2.y1, rect2.x2, rect2.y2);
> +
> +	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data-
> >format,
> +			    DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &main_fb);
> +
> +	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data-
> >format,
> +			    DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &rect_1_fb);
> +	dirty_rect_draw_white_rects(data, &rect_1_fb, 1, &rect1);
> +
> +	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data-
> >format,
> +			    DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &rect_2_fb);
> +	dirty_rect_draw_white_rects(data, &rect_2_fb, 1, &rect2);
> +
> +	igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data-
> >format,
> +			    DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &rect_combined_fb);
> +	dirty_rect_draw_white_rects(data, &rect_combined_fb, ARRAY_SIZE(rect_combined),
> +				    rect_combined);
> +
> +	/* main_fb blank blue screen - get and store crc */
> +	set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &main_fb_crc);
> +
> +	/* Whole blue screen with one white rect and collect crc */
> +	set_damage_area(primary, &full_rect, sizeof(full_rect));
> +	set_fb_and_collect_crc(data, primary, &rect_1_fb, data->pipe_crc, &rect_1_fb_crc);
> +
> +	/* Second white rect and collect crc */
> +	set_damage_area(primary, &full_rect, sizeof(full_rect));
> +	set_fb_and_collect_crc(data, primary, &rect_2_fb, data->pipe_crc, &rect_2_fb_crc);
> +
> +	/* Both rects and collect crc */
> +	set_damage_area(primary, &full_rect, sizeof(full_rect));
> +	set_fb_and_collect_crc(data, primary, &rect_combined_fb, data->pipe_crc,
> +			       &rect_combined_fb_crc);
> +
> +	/* Put full blank screen back */
> +	set_damage_area(primary, &full_rect, sizeof(full_rect));
> +	set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &crc);
> +	igt_assert_crc_equal(&crc, &main_fb_crc);
> +
> +	/* Set combined rect - draw two white rects using damage area */
> +	set_damage_area(primary, rect_combined, sizeof(rect_combined));
> +	set_fb_and_collect_crc(data, primary, &rect_combined_fb, data->pipe_crc, &crc);
> +	igt_assert_crc_equal(&crc, &rect_combined_fb_crc);
> +
> +	/* Clear first rect using damage area. Only the second rect should be visible here! */
> +	set_damage_area(primary, &rect1, sizeof(rect1));
> +	set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &crc);
> +	igt_assert_crc_equal(&crc, &rect_2_fb_crc);
> +
> +	/* Clear the second rect as well. Now back to original blank screen */
> +	set_damage_area(primary, &rect2, sizeof(rect2));
> +	set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &crc);
> +	igt_assert_crc_equal(&crc, &main_fb_crc);
> +
> +	igt_plane_set_fb(primary, NULL);
> +	igt_remove_fb(data->drm_fd, &main_fb);
> +	igt_remove_fb(data->drm_fd, &rect_1_fb);
> +	igt_remove_fb(data->drm_fd, &rect_2_fb);
> +	igt_remove_fb(data->drm_fd, &rect_combined_fb);
> +	igt_display_commit2(display, COMMIT_ATOMIC);
> +
> +	if (data->pipe_crc) {
> +		igt_pipe_crc_free(data->pipe_crc);
> +		data->pipe_crc = NULL;
> +	}
> +}
> +
> +static void prepare_test(data_t *data, igt_output_t *output)
> +{
> +	bool is_fbc_supported = intel_fbc_supported_on_chipset(data->drm_fd, data->pipe);
> +
> +	igt_require_f(is_fbc_supported, "FBC not supported by the chipset on pipe\n");
> +
> +	if (psr_sink_support(data->drm_fd, data->debugfs_fd, PSR_MODE_1, NULL) ||
> +		psr_sink_support(data->drm_fd, data->debugfs_fd, PSR_MODE_2, NULL) ||
> +		psr_sink_support(data->drm_fd, data->debugfs_fd, PR_MODE, NULL)) {
> +		igt_info("PSR is supported by the sink. Disabling PSR to test Dirty FBC
> functionality.\n");
> +		psr_disable(data->drm_fd, data->debugfs_fd, output);
> +	}
> +
> +	if (data->feature & FEATURE_FBC)
> +		intel_fbc_enable(data->drm_fd);
> +}
> +
> +static void fbc_dirty_rectangle_test(data_t *data, void (*test_func)(data_t *))
> +{
> +	prepare_test(data, data->output);
> +	test_func(data);
> +}
> +
> +igt_main
> +{
> +	data_t data = {0};
> +	int display_ver;
> +
> +	igt_fixture {
> +		data.drm_fd = drm_open_driver_master(DRIVER_XE);
> +		igt_require(data.drm_fd >= 0);
> +		data.debugfs_fd = igt_debugfs_dir(data.drm_fd);
> +		kmstest_set_vt_graphics_mode();
> +		igt_require_pipe_crc(data.drm_fd);
> +		igt_display_require(&data.display, data.drm_fd);
> +		igt_display_require_output(&data.display);
> +		display_ver = intel_display_ver(intel_get_drm_devid(data.drm_fd));
> +		igt_require_f(display_ver >= 30, "FBC with dirty region is not supported\n");
> +	}
> +
> +	igt_subtest_with_dynamic("fbc-dirty-rectangle-out-visible-area") {
> +		data.feature = FEATURE_FBC;
> +
> +		for_each_pipe(&data.display, data.pipe) {
> +			for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> +				data.mode = igt_output_get_mode(data.output);
> +				data.format = DRM_FORMAT_XRGB8888;
> +				igt_display_reset(&data.display);
> +				igt_output_set_pipe(data.output, data.pipe);
> +				igt_dynamic_f("pipe-%s-%s",
> +					       kmstest_pipe_name(data.pipe),
> +					       igt_output_name(data.output)) {
> +					fbc_dirty_rectangle_test(&data,
> +						fbc_dirty_rectangle_outside_visible_region);
> +				}
> +			}
> +		}
> +	}
> +
> +	igt_subtest_with_dynamic("fbc-dirty-rectangle-dirtyfb-tests") {
> +		data.feature = FEATURE_FBC;
> +
> +		for_each_pipe(&data.display, data.pipe) {
> +			for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> +				data.mode = igt_output_get_mode(data.output);
> +				data.format = DRM_FORMAT_XRGB8888;
> +				igt_display_reset(&data.display);
> +				igt_output_set_pipe(data.output, data.pipe);
> +				igt_dynamic_f("pipe-%s-%s",
> +					       kmstest_pipe_name(data.pipe),
> +					       igt_output_name(data.output)) {
> +					fbc_dirty_rectangle_test(&data,
> +							fbc_dirty_rectangle_dirtyfb);
> +				}
> +			}
> +		}
> +	}
> +
> +	igt_subtest_with_dynamic("fbc-dirty-rectangle-different-formats") {
> +		uint32_t formats[] = {DRM_FORMAT_XRGB8888, DRM_FORMAT_ARGB8888,
> DRM_FORMAT_RGB565};
> +		int num_formats = ARRAY_SIZE(formats);
> +
> +		data.feature = FEATURE_FBC;
> +
> +		for_each_pipe(&data.display, data.pipe) {
> +			for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> +				data.mode = igt_output_get_mode(data.output);
> +				igt_display_reset(&data.display);
> +				igt_output_set_pipe(data.output, data.pipe);
> +
> +				for (int i = 0; i < num_formats; i++) {
> +					igt_dynamic_f("pipe-%s-%s-format-%s",
> +						       kmstest_pipe_name(data.pipe),
> +						       igt_output_name(data.output),
> +						       igt_format_str(formats[i])) {
> +						data.format = formats[i];
> +						fbc_dirty_rectangle_test(&data,
> +							fbc_dirty_rectangle_basic);
> +					}
> +				}
> +			}
> +		}
> +	}
> +
> +	igt_fixture {
> +		igt_display_fini(&data.display);
> +		close(data.drm_fd);
> +	}
> +}
> diff --git a/tests/meson.build b/tests/meson.build
> index f8a0ab836..cb7c36f5c 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -250,6 +250,7 @@ intel_kms_progs = [
>  	'kms_dsc',
>  	'kms_fb_coherency',
>  	'kms_fbcon_fbt',
> +	'kms_fbc_dirty_rect',
>  	'kms_fence_pin_leak',
>  	'kms_flip_scaled_crc',
>  	'kms_flip_tiling',


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-02-25  9:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-20 18:58 [PATCH i-g-t v10 0/1] RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test Santhosh Reddy Guddati
2025-02-20 18:58 ` [PATCH i-g-t v10 1/1] tests/intel/kms_dirty_fbc: Add tests to validate FBC dirty rectangle feature Santhosh Reddy Guddati
2025-02-25  9:14   ` Govindapillai, Vinod
2025-02-20 20:22 ` ✓ Xe.CI.BAT: success for RFC tests/intel/kms_frontbuffer_tracking: Introduce plane-fbc-dr test (rev10) Patchwork
2025-02-20 20:30 ` ✗ i915.CI.BAT: failure " Patchwork
2025-02-21 14:34 ` ✗ Xe.CI.Full: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox