All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v3 0/2] Convert PSR2 sf & su test to dynamic
@ 2022-09-26 10:34 Jeevan B
  2022-09-26 10:34 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/i915/kms_psr2_sf: Convert tests " Jeevan B
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Jeevan B @ 2022-09-26 10:34 UTC (permalink / raw)
  To: igt-dev; +Cc: Nidhi Gupta, petri.latvala

From: Nidhi Gupta <nidhi1.gupta@intel.com>

Convert psr2_sf & psr2_su patch to dynamic subtests. 
We check psr2 support for each pipe and if the pipe supports then
its added as part of dynamic subtest instead to running through all
pipe.

Jeevan B (2):
  tests/i915/kms_psr2_sf: Convert tests to dynamic
  tests/i915/kms_psr2_su: Convert tests to dynamic

 tests/i915/kms_psr2_sf.c | 291 ++++++++++++++++++++++++++-------------
 tests/i915/kms_psr2_su.c |  93 ++++++++-----
 2 files changed, 257 insertions(+), 127 deletions(-)

-- 
2.36.0

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

* [igt-dev] [PATCH i-g-t v3 1/2] tests/i915/kms_psr2_sf: Convert tests to dynamic
  2022-09-26 10:34 [igt-dev] [PATCH i-g-t v3 0/2] Convert PSR2 sf & su test to dynamic Jeevan B
@ 2022-09-26 10:34 ` Jeevan B
  2022-09-27  6:46   ` Hogander, Jouni
  2022-09-26 10:34 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/i915/kms_psr2_su: " Jeevan B
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Jeevan B @ 2022-09-26 10:34 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

Converting the existing subtests to dynamic subtests.
Adding support for each_pipe, currently PSR2 is supported on
few pipes so breaking the loop for other pipes currently.

v2: Check for pipe supporting PSR2 or not and then add to dynamic subtest. (Jouni)
v3: Check PSR2 support once in fixture then iterate pipes. (Jouni)
v4: Add output part into dynamic name. (Jouni)

Signed-off-by: Jeevan B <jeevan.b@intel.com>
---
 tests/i915/kms_psr2_sf.c | 291 ++++++++++++++++++++++++++-------------
 1 file changed, 195 insertions(+), 96 deletions(-)

diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
index 6612587c..3ba6cb02 100644
--- a/tests/i915/kms_psr2_sf.c
+++ b/tests/i915/kms_psr2_sf.c
@@ -237,7 +237,7 @@ static void plane_move_setup_square(data_t *data, igt_fb_t *fb, uint32_t h,
 	set_clip(&data->plane_move_clip, x, y, SQUARE_SIZE, SQUARE_SIZE);
 }
 
-static void prepare(data_t *data)
+static void prepare(data_t *data, igt_output_t *output)
 {
 	igt_plane_t *primary, *sprite = NULL, *cursor = NULL;
 	int fb_w, fb_h, x, y, view_w, view_h;
@@ -262,12 +262,12 @@ static void prepare(data_t *data)
 			    0.0, 1.0, 0.0,
 			    &data->fb_primary);
 
-	primary = igt_output_get_plane_type(data->output,
+	primary = igt_output_get_plane_type(output,
 			DRM_PLANE_TYPE_PRIMARY);
 
 	switch (data->test_plane_id) {
 	case DRM_PLANE_TYPE_OVERLAY:
-		sprite = igt_output_get_plane_type(data->output,
+		sprite = igt_output_get_plane_type(output,
 						   DRM_PLANE_TYPE_OVERLAY);
 		/*All blue plane*/
 		igt_create_color_fb(data->drm_fd,
@@ -318,7 +318,7 @@ static void prepare(data_t *data)
 		data->test_plane = primary;
 
 		if (data->op == OVERLAY_PRIM_UPDATE) {
-			sprite = igt_output_get_plane_type(data->output,
+			sprite = igt_output_get_plane_type(output,
 						   DRM_PLANE_TYPE_OVERLAY);
 
 			igt_create_color_fb(data->drm_fd, fb_w, fb_h,
@@ -338,7 +338,7 @@ static void prepare(data_t *data)
 		break;
 
 	case DRM_PLANE_TYPE_CURSOR:
-		cursor = igt_output_get_plane_type(data->output,
+		cursor = igt_output_get_plane_type(output,
 						   DRM_PLANE_TYPE_CURSOR);
 		igt_plane_set_position(cursor, 0, 0);
 
@@ -808,12 +808,12 @@ static void run(data_t *data)
 	}
 }
 
-static void cleanup(data_t *data)
+static void cleanup(data_t *data, igt_output_t *output)
 {
 	igt_plane_t *primary;
 	igt_plane_t *sprite;
 
-	primary = igt_output_get_plane_type(data->output,
+	primary = igt_output_get_plane_type(output,
 					    DRM_PLANE_TYPE_PRIMARY);
 
 	igt_plane_set_fb(primary, NULL);
@@ -824,7 +824,7 @@ static void cleanup(data_t *data)
 	}
 
 	if (data->op == OVERLAY_PRIM_UPDATE) {
-		sprite = igt_output_get_plane_type(data->output,
+		sprite = igt_output_get_plane_type(output,
 				DRM_PLANE_TYPE_OVERLAY);
 		igt_plane_set_position(sprite, 0, 0);
 		igt_plane_set_fb(sprite, NULL);
@@ -838,14 +838,35 @@ static void cleanup(data_t *data)
 	igt_remove_fb(data->drm_fd, &data->fb_test);
 }
 
+static int check_psr2_support(data_t *data, enum pipe pipe)
+{
+	int status;
+
+	igt_output_t *output;
+	igt_display_t *display = &data->display;
+
+	igt_display_reset(display);
+	output = data->output;
+	igt_output_set_pipe(output, pipe);
+
+	prepare(data, output);
+	status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2);
+	cleanup(data, output);
+
+	return status;
+}
+
 igt_main
 {
 	data_t data = {};
-	int i;
+	igt_output_t *outputs[IGT_MAX_PIPES];
+	int i, j;
+	enum pipe pipe;
+	int pipes[IGT_MAX_PIPES];
+	int n_pipes = 0;
 
 	igt_fixture {
 		drmModeResPtr res;
-		int r;
 
 		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
 		data.debugfs_fd = igt_debugfs_dir(data.drm_fd);
@@ -873,146 +894,218 @@ igt_main
 		data.big_fb_height = res->max_height;
 		igt_info("Big framebuffer size %dx%d\n",
 			 data.big_fb_width, data.big_fb_height);
-		prepare(&data);
-		r = psr_wait_entry(data.debugfs_fd, PSR_MODE_2);
-		if (!r)
-			psr_print_debugfs(data.debugfs_fd);
 
 		igt_require_f(psr2_selective_fetch_check(data.debugfs_fd),
 			      "PSR2 selective fetch not enabled\n");
-		cleanup(&data);
-		if (!r)
-			psr_print_debugfs(data.debugfs_fd);
-		igt_require_f(r, "PSR2 can not be enabled\n");
+
+		for_each_pipe_with_valid_output(&data.display, pipe, data.output) {
+			if (check_psr2_support(&data, pipe)) {
+				pipes[n_pipes] = pipe;
+				outputs[n_pipes] = data.output;
+				n_pipes++;
+			}
+		}
 	}
 
 	/* Verify primary plane selective fetch */
 	igt_describe("Test that selective fetch works on primary plane");
-	igt_subtest_f("primary-%s-sf-dmg-area", op_str(data.op)) {
-		for (i = 1; i <= MAX_DAMAGE_AREAS; i++) {
-			data.damage_area_count = i;
-			data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
-			prepare(&data);
-			run(&data);
-			cleanup(&data);
+	igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
+					data.damage_area_count = j;
+					data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
+					prepare(&data, outputs[i]);
+					run(&data);
+					cleanup(&data, outputs[i]);
+				}
+			}
 		}
 	}
 
 	/* Verify primary plane selective fetch with big fb */
 	data.big_fb_test = 1;
 	igt_describe("Test that selective fetch works on primary plane with big fb");
-	igt_subtest_f("primary-%s-sf-dmg-area-big-fb", op_str(data.op)) {
-		for (i = 1; i <= MAX_DAMAGE_AREAS; i++) {
-			data.damage_area_count = i;
-			data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
-			prepare(&data);
-			run(&data);
-			cleanup(&data);
+	igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area-big-fb", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
+					data.damage_area_count = j;
+					data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
+					prepare(&data, outputs[i]);
+					run(&data);
+					cleanup(&data, outputs[i]);
+				}
+			}
 		}
 	}
+
 	data.big_fb_test = 0;
 
 	/* Verify overlay plane selective fetch */
 	igt_describe("Test that selective fetch works on overlay plane");
-	igt_subtest_f("overlay-%s-sf-dmg-area", op_str(data.op)) {
-		for (i = 1; i <= MAX_DAMAGE_AREAS; i++) {
-			data.damage_area_count = i;
-			data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-			prepare(&data);
-			run(&data);
-			cleanup(&data);
+	igt_subtest_with_dynamic_f("overlay-%s-sf-dmg-area", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
+					data.damage_area_count = j;
+					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
+					prepare(&data, outputs[i]);
+					run(&data);
+					cleanup(&data, outputs[i]);
+				}
+			}
 		}
 	}
 
-	/* Verify overlay plane selective fetch */
+	/* Verify cursor plane selective fetch */
 	igt_describe("Test that selective fetch works on cursor plane");
-	igt_subtest_f("cursor-%s-sf", op_str(data.op)) {
-		data.damage_area_count = 1;
-		data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-		prepare(&data);
-		run(&data);
-		cleanup(&data);
+	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
+				prepare(&data, outputs[i]);
+				run(&data);
+				cleanup(&data, outputs[i]);
+			}
+		}
 	}
 
 	data.op = PLANE_MOVE_CONTINUOUS;
 	igt_describe("Test that selective fetch works on moving cursor plane (no update)");
-	igt_subtest_f("cursor-%s-sf", op_str(data.op)) {
-		data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-		prepare(&data);
-		run(&data);
-		cleanup(&data);
+	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
+				prepare(&data, outputs[i]);
+				run(&data);
+				cleanup(&data, outputs[i]);
+			}
+		}
 	}
 
 	data.op = PLANE_MOVE_CONTINUOUS_EXCEED;
 	igt_describe("Test that selective fetch works on moving cursor plane exceeding partially visible area (no update)");
-	igt_subtest_f("cursor-%s-sf", op_str(data.op)) {
-		data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-		prepare(&data);
-		run(&data);
-		cleanup(&data);
+	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
+				prepare(&data, outputs[i]);
+				run(&data);
+				cleanup(&data, outputs[i]);
+			}
+		}
 	}
 
 	data.op = PLANE_MOVE_CONTINUOUS_EXCEED_FULLY;
 	igt_describe("Test that selective fetch works on moving cursor plane exceeding fully visible area (no update)");
-	igt_subtest_f("cursor-%s-sf", op_str(data.op)) {
-		data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-		prepare(&data);
-		run(&data);
-		cleanup(&data);
+	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
+				prepare(&data, outputs[i]);
+				run(&data);
+				cleanup(&data, outputs[i]);
+			}
+		}
 	}
 
 	/* Only for overlay plane */
 	data.op = PLANE_MOVE;
 	/* Verify overlay plane move selective fetch */
 	igt_describe("Test that selective fetch works on moving overlay plane");
-	igt_subtest_f("%s-sf-dmg-area", op_str(data.op)) {
-		for (i = POS_TOP_LEFT; i <= POS_BOTTOM_RIGHT ; i++) {
-			data.pos = i;
-			data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-			prepare(&data);
-			run(&data);
-			cleanup(&data);
+	igt_subtest_with_dynamic_f("%s-sf-dmg-area", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				for (j = POS_TOP_LEFT; j <= POS_BOTTOM_RIGHT ; j++) {
+					data.pos = j;
+					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
+					prepare(&data, outputs[i]);
+					run(&data);
+					cleanup(&data, outputs[i]);
+				}
+			}
 		}
 	}
 
 	data.op = PLANE_MOVE_CONTINUOUS;
 	igt_describe("Test that selective fetch works on moving overlay plane (no update)");
-	igt_subtest_f("overlay-%s-sf", op_str(data.op)) {
-		data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-		prepare(&data);
-		run(&data);
-		cleanup(&data);
+	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
+				prepare(&data, outputs[i]);
+				run(&data);
+				cleanup(&data, outputs[i]);
+			}
+		}
 	}
 
 	data.op = PLANE_MOVE_CONTINUOUS_EXCEED;
 	igt_describe("Test that selective fetch works on moving overlay plane partially exceeding visible area (no update)");
-	igt_subtest_f("overlay-%s-sf", op_str(data.op)) {
-		data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-		prepare(&data);
-		run(&data);
-		cleanup(&data);
+	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
+				prepare(&data, outputs[i]);
+				run(&data);
+				cleanup(&data, outputs[i]);
+			}
+		}
 	}
 
 	data.op = PLANE_MOVE_CONTINUOUS_EXCEED_FULLY;
 	igt_describe("Test that selective fetch works on moving overlay plane fully exceeding visible area (no update)");
-	igt_subtest_f("overlay-%s-sf", op_str(data.op)) {
-		data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-		prepare(&data);
-		run(&data);
-		cleanup(&data);
+	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
+				prepare(&data, outputs[i]);
+				run(&data);
+				cleanup(&data, outputs[i]);
+			}
+		}
 	}
 
 	/* Verify primary plane selective fetch with overplay plane blended */
 	data.op = OVERLAY_PRIM_UPDATE;
 	igt_describe("Test that selective fetch works on primary plane "
 		     "with blended overlay plane");
-	igt_subtest_f("%s-sf-dmg-area", op_str(data.op)) {
-		for (i = 1; i <= MAX_DAMAGE_AREAS; i++) {
-			data.damage_area_count = i;
-			data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
-			prepare(&data);
-			run(&data);
-			cleanup(&data);
+	igt_subtest_with_dynamic_f("%s-sf-dmg-area", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
+					data.damage_area_count = j;
+					data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
+					prepare(&data, outputs[i]);
+					run(&data);
+					cleanup(&data, outputs[i]);
+				}
+			}
 		}
 	}
 
@@ -1023,12 +1116,18 @@ igt_main
 	data.op = PLANE_UPDATE_CONTINUOUS;
 	data.primary_format = DRM_FORMAT_NV12;
 	igt_describe("Test that selective fetch works on overlay plane");
-	igt_subtest_f("overlay-%s-sf", op_str(data.op)) {
-			data.damage_area_count = 1;
-			data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-			prepare(&data);
-			run(&data);
-			cleanup(&data);
+	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
+		for (i = 0; i < n_pipes; i++) {
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+					igt_output_name(outputs[i])) {
+				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.damage_area_count = 1;
+				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
+				prepare(&data, outputs[i]);
+				run(&data);
+				cleanup(&data, outputs[i]);
+			}
+		}
 	}
 
 	igt_fixture {
-- 
2.36.0

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

* [igt-dev] [PATCH i-g-t v3 2/2] tests/i915/kms_psr2_su: Convert tests to dynamic
  2022-09-26 10:34 [igt-dev] [PATCH i-g-t v3 0/2] Convert PSR2 sf & su test to dynamic Jeevan B
  2022-09-26 10:34 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/i915/kms_psr2_sf: Convert tests " Jeevan B
@ 2022-09-26 10:34 ` Jeevan B
  2022-09-27  7:05   ` Hogander, Jouni
  2022-09-26 13:31 ` [igt-dev] ✓ Fi.CI.BAT: success for Convert PSR2 sf & su test to dynamic (rev4) Patchwork
  2022-09-26 16:40 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  3 siblings, 1 reply; 7+ messages in thread
From: Jeevan B @ 2022-09-26 10:34 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

Converting the existing subtests to dynamic subtests.
Adding support for each_pipe, currently PSR2 is supported on
few pipes so breaking the loop for other pipes currently.

v2: Add commit message and change break to continue. (Jouni)
v3: Check for pipe supporting PSR2 or not and then add to dynamic subtest. (Jouni)
v4: Check PSR2 support once in fixture then iterate pipes. (Jouni)

Signed-off-by: Jeevan B <jeevan.b@intel.com>
---
 tests/i915/kms_psr2_su.c | 93 ++++++++++++++++++++++++++--------------
 1 file changed, 62 insertions(+), 31 deletions(-)

diff --git a/tests/i915/kms_psr2_su.c b/tests/i915/kms_psr2_su.c
index caccf713..3a0d241f 100644
--- a/tests/i915/kms_psr2_su.c
+++ b/tests/i915/kms_psr2_su.c
@@ -123,7 +123,7 @@ static void display_fini(data_t *data)
 	igt_display_fini(&data->display);
 }
 
-static void prepare(data_t *data)
+static void prepare(data_t *data, igt_output_t *output)
 {
 	igt_plane_t *primary;
 
@@ -154,14 +154,14 @@ static void prepare(data_t *data)
 		data->cr = igt_get_cairo_ctx(data->drm_fd, &data->fb[0]);
 	}
 
-	primary = igt_output_get_plane_type(data->output,
+	primary = igt_output_get_plane_type(output,
 					    DRM_PLANE_TYPE_PRIMARY);
 
 	igt_plane_set_fb(primary, &data->fb[0]);
 	igt_display_commit2(&data->display, COMMIT_ATOMIC);
 }
 
-static bool update_screen_and_test(data_t *data)
+static bool update_screen_and_test(data_t *data, igt_output_t *output)
 {
 	uint16_t su_blocks;
 	bool ret = false;
@@ -170,7 +170,7 @@ static bool update_screen_and_test(data_t *data)
 	case PAGE_FLIP: {
 		igt_plane_t *primary;
 
-		primary = igt_output_get_plane_type(data->output,
+		primary = igt_output_get_plane_type(output,
 						    DRM_PLANE_TYPE_PRIMARY);
 
 		if (igt_plane_has_prop(primary, IGT_PLANE_FB_DAMAGE_CLIPS)) {
@@ -222,7 +222,7 @@ static bool update_screen_and_test(data_t *data)
 	return ret;
 }
 
-static void run(data_t *data)
+static void run(data_t *data, igt_output_t *output)
 {
 	bool result = false;
 
@@ -236,18 +236,18 @@ static void run(data_t *data)
 
 		r = read(data->change_screen_timerfd, &exp, sizeof(exp));
 		if (r == sizeof(uint64_t) && exp)
-			result = update_screen_and_test(data);
+			result = update_screen_and_test(data, output);
 	}
 
 	igt_assert_f(result,
 		     "No matching selective update blocks read from debugfs\n");
 }
 
-static void cleanup(data_t *data)
+static void cleanup(data_t *data, igt_output_t *output)
 {
 	igt_plane_t *primary;
 
-	primary = igt_output_get_plane_type(data->output,
+	primary = igt_output_get_plane_type(output,
 					    DRM_PLANE_TYPE_PRIMARY);
 	igt_plane_set_fb(primary, NULL);
 	igt_display_commit2(&data->display, COMMIT_ATOMIC);
@@ -260,13 +260,35 @@ static void cleanup(data_t *data)
 	igt_remove_fb(data->drm_fd, &data->fb[0]);
 }
 
+static int check_psr2_support(data_t *data, enum pipe pipe)
+{
+	int status;
+
+	igt_output_t *output;
+	igt_display_t *display = &data->display;
+
+	igt_display_reset(display);
+	output = data->output;
+	igt_output_set_pipe(output, pipe);
+
+	prepare(data, output);
+	status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2);
+	cleanup(data, output);
+
+	return status;
+}
+
 igt_main
 {
 	data_t data = {};
+	enum pipe pipe;
+	int r, i;
+	igt_output_t *outputs[IGT_MAX_PIPES];
+	int pipes[IGT_MAX_PIPES];
+	int n_pipes = 0;
 
 	igt_fixture {
 		struct itimerspec interval;
-		int r;
 
 		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
 		data.debugfs_fd = igt_debugfs_dir(data.drm_fd);
@@ -287,12 +309,6 @@ igt_main
 			      "Error enabling PSR2\n");
 		data.op = FRONTBUFFER;
 		data.format = DRM_FORMAT_XRGB8888;
-		prepare(&data);
-		r = psr_wait_entry(data.debugfs_fd, PSR_MODE_2);
-		cleanup(&data);
-		if (!r)
-			psr_print_debugfs(data.debugfs_fd);
-		igt_require_f(r, "PSR2 can not be enabled\n");
 
 		/* blocking timerfd */
 		data.change_screen_timerfd = timerfd_create(CLOCK_MONOTONIC, 0);
@@ -304,6 +320,14 @@ igt_main
 		interval.it_interval.tv_sec = interval.it_value.tv_sec;
 		r = timerfd_settime(data.change_screen_timerfd, 0, &interval, NULL);
 		igt_require_f(r != -1, "Error setting timerfd\n");
+
+		for_each_pipe_with_valid_output(&data.display, pipe, data.output) {
+			if (check_psr2_support(&data, pipe)) {
+				pipes[n_pipes] = pipe;
+				outputs[n_pipes] = data.output;
+				n_pipes++;
+			}
+		}
 	}
 
 	for (data.op = PAGE_FLIP; data.op < LAST; data.op++) {
@@ -312,26 +336,33 @@ igt_main
 		while (*format != DRM_FORMAT_INVALID) {
 			data.format = *format++;
 			igt_describe("Test that selective update works when screen changes");
-			igt_subtest_f("%s-%s", op_str(data.op), igt_format_str(data.format)) {
-				if (data.op == FRONTBUFFER &&
-				    intel_display_ver(intel_get_drm_devid(data.drm_fd)) >= 12) {
-					/*
-					 * FIXME: Display 12+ platforms now have PSR2
-					 * selective fetch enabled by default but we
-					 * still can't properly handle frontbuffer
-					 * rendering, so right it does full frame
-					 * fetches at every frontbuffer rendering.
-					 * So it is expected that this test will fail
-					 * in display 12+ platform for now.
-					 */
-					igt_skip("PSR2 selective fetch is doing full frame fetches for frontbuffer rendering\n");
+			igt_subtest_with_dynamic_f("%s-%s", op_str(data.op), igt_format_str(data.format)) {
+				for (i = 0; i < n_pipes; i++) {
+					igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
+							igt_output_name(outputs[i])) {
+						igt_output_set_pipe(outputs[i], pipes[i]);
+						if (data.op == FRONTBUFFER &&
+						    intel_display_ver(intel_get_drm_devid(data.drm_fd)) >= 12) {
+							/*
+							 * FIXME: Display 12+ platforms now have PSR2
+							 * selective fetch enabled by default but we
+							 * still can't properly handle frontbuffer
+							 * rendering, so right it does full frame
+							 * fetches at every frontbuffer rendering.
+							 * So it is expected that this test will fail
+							 * in display 12+ platform for now.
+							 */
+							igt_skip("PSR2 selective fetch is doing full frame fetches for frontbuffer rendering\n");
+						}
+						prepare(&data, outputs[i]);
+						run(&data, outputs[i]);
+						cleanup(&data, outputs[i]);
+					}
 				}
-				prepare(&data);
-				run(&data);
-				cleanup(&data);
 			}
 		}
 	}
+
 	igt_fixture {
 		close(data.debugfs_fd);
 		display_fini(&data);
-- 
2.36.0

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

* [igt-dev] ✓ Fi.CI.BAT: success for Convert PSR2 sf & su test to dynamic (rev4)
  2022-09-26 10:34 [igt-dev] [PATCH i-g-t v3 0/2] Convert PSR2 sf & su test to dynamic Jeevan B
  2022-09-26 10:34 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/i915/kms_psr2_sf: Convert tests " Jeevan B
  2022-09-26 10:34 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/i915/kms_psr2_su: " Jeevan B
@ 2022-09-26 13:31 ` Patchwork
  2022-09-26 16:40 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2022-09-26 13:31 UTC (permalink / raw)
  To: Jeevan B; +Cc: igt-dev

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

== Series Details ==

Series: Convert PSR2 sf & su test to dynamic (rev4)
URL   : https://patchwork.freedesktop.org/series/108299/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12182 -> IGTPW_7841
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (48 -> 45)
------------------------------

  Additional (1): fi-icl-u2 
  Missing    (4): fi-bdw-samus bat-dg2-9 bat-adls-5 bat-dg1-6 

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

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

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-dp-2:
    - {bat-dg2-11}:       [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/bat-dg2-11/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-dp-2.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/bat-dg2-11/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-dp-2.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_huc_copy@huc-copy:
    - fi-icl-u2:          NOTRUN -> [SKIP][3] ([i915#2190])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-icl-u2/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@random-engines:
    - fi-icl-u2:          NOTRUN -> [SKIP][4] ([i915#4613]) +3 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-icl-u2/igt@gem_lmem_swapping@random-engines.html

  * igt@i915_selftest@live@hangcheck:
    - fi-hsw-4770:        [PASS][5] -> [INCOMPLETE][6] ([i915#4785])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/fi-hsw-4770/igt@i915_selftest@live@hangcheck.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-hsw-4770/igt@i915_selftest@live@hangcheck.html

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-hsw-g3258:       NOTRUN -> [SKIP][7] ([fdo#109271] / [fdo#111827])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-hsw-g3258/igt@kms_chamelium@common-hpd-after-suspend.html
    - fi-rkl-11600:       NOTRUN -> [SKIP][8] ([fdo#111827])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-rkl-11600/igt@kms_chamelium@common-hpd-after-suspend.html
    - fi-bdw-5557u:       NOTRUN -> [SKIP][9] ([fdo#109271] / [fdo#111827])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-bdw-5557u/igt@kms_chamelium@common-hpd-after-suspend.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-icl-u2:          NOTRUN -> [SKIP][10] ([fdo#111827]) +8 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor:
    - fi-icl-u2:          NOTRUN -> [SKIP][11] ([i915#4103])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-icl-u2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions:
    - fi-bsw-kefka:       [PASS][12] -> [FAIL][13] ([i915#6298])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions.html

  * igt@kms_force_connector_basic@force-connector-state:
    - fi-icl-u2:          NOTRUN -> [WARN][14] ([i915#6008])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-icl-u2/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-icl-u2:          NOTRUN -> [SKIP][15] ([fdo#109285])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-icl-u2/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - fi-icl-u2:          NOTRUN -> [SKIP][16] ([i915#3555])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-icl-u2/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-userptr:
    - fi-icl-u2:          NOTRUN -> [SKIP][17] ([fdo#109295] / [i915#3301])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-icl-u2/igt@prime_vgem@basic-userptr.html

  * igt@runner@aborted:
    - fi-hsw-4770:        NOTRUN -> [FAIL][18] ([fdo#109271] / [i915#4312] / [i915#5594])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-hsw-4770/igt@runner@aborted.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s0@smem:
    - {bat-adlm-1}:       [DMESG-WARN][19] ([i915#2867]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/bat-adlm-1/igt@gem_exec_suspend@basic-s0@smem.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/bat-adlm-1/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@gem_exec_suspend@basic-s3@smem:
    - {bat-rplp-1}:       [DMESG-WARN][21] ([i915#2867]) -> [PASS][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/bat-rplp-1/igt@gem_exec_suspend@basic-s3@smem.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/bat-rplp-1/igt@gem_exec_suspend@basic-s3@smem.html

  * igt@i915_selftest@live@hangcheck:
    - fi-hsw-g3258:       [INCOMPLETE][23] ([i915#3303] / [i915#4785]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/fi-hsw-g3258/igt@i915_selftest@live@hangcheck.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-hsw-g3258/igt@i915_selftest@live@hangcheck.html

  * igt@i915_suspend@basic-s3-without-i915:
    - fi-rkl-11600:       [INCOMPLETE][25] ([i915#5982]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/fi-rkl-11600/igt@i915_suspend@basic-s3-without-i915.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/fi-rkl-11600/igt@i915_suspend@basic-s3-without-i915.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2867]: https://gitlab.freedesktop.org/drm/intel/issues/2867
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3303]: https://gitlab.freedesktop.org/drm/intel/issues/3303
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4785]: https://gitlab.freedesktop.org/drm/intel/issues/4785
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5594]: https://gitlab.freedesktop.org/drm/intel/issues/5594
  [i915#5828]: https://gitlab.freedesktop.org/drm/intel/issues/5828
  [i915#5982]: https://gitlab.freedesktop.org/drm/intel/issues/5982
  [i915#6008]: https://gitlab.freedesktop.org/drm/intel/issues/6008
  [i915#6298]: https://gitlab.freedesktop.org/drm/intel/issues/6298


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6663 -> IGTPW_7841

  CI-20190529: 20190529
  CI_DRM_12182: 8ad031bd195081f699414339ac21fa46dd0b8e2d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7841: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/index.html
  IGT_6663: 5e232c77cd762147e0882c337a984121fabb1c75 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* [igt-dev] ✗ Fi.CI.IGT: failure for Convert PSR2 sf & su test to dynamic (rev4)
  2022-09-26 10:34 [igt-dev] [PATCH i-g-t v3 0/2] Convert PSR2 sf & su test to dynamic Jeevan B
                   ` (2 preceding siblings ...)
  2022-09-26 13:31 ` [igt-dev] ✓ Fi.CI.BAT: success for Convert PSR2 sf & su test to dynamic (rev4) Patchwork
@ 2022-09-26 16:40 ` Patchwork
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2022-09-26 16:40 UTC (permalink / raw)
  To: Jeevan B; +Cc: igt-dev

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

== Series Details ==

Series: Convert PSR2 sf & su test to dynamic (rev4)
URL   : https://patchwork.freedesktop.org/series/108299/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_12182_full -> IGTPW_7841_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_7841_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_7841_full, please notify your bug team 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_7841/index.html

Participating hosts (9 -> 6)
------------------------------

  Missing    (3): pig-skl-6260u pig-kbl-iris pig-glk-j5005 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-snb:          NOTRUN -> [DMESG-WARN][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-snb7/igt@i915_module_load@reload-with-fault-injection.html

  * {igt@kms_psr2_su@page_flip-p010@pipe-b-edp-1} (NEW):
    - shard-iclb:         NOTRUN -> [FAIL][2] +2 similar issues
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb2/igt@kms_psr2_su@page_flip-p010@pipe-b-edp-1.html

  * igt@nouveau_crc@pipe-b-source-outp-inactive:
    - shard-tglb:         NOTRUN -> [SKIP][3] +49 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb2/igt@nouveau_crc@pipe-b-source-outp-inactive.html

  * igt@prime_nv_test@i915_blt_fill_nv_read:
    - shard-iclb:         NOTRUN -> [SKIP][4] +48 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb7/igt@prime_nv_test@i915_blt_fill_nv_read.html

  
#### Warnings ####

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-tglb:         [SKIP][5] ([i915#1911]) -> [SKIP][6] +3 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-tglb2/igt@kms_psr2_su@page_flip-nv12.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb2/igt@kms_psr2_su@page_flip-nv12.html

  
New tests
---------

  New tests have been introduced between CI_DRM_12182_full and IGTPW_7841_full:

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

  * igt@kms_psr2_su@page_flip-p010@pipe-a-edp-1:
    - Statuses : 1 fail(s)
    - Exec time: [3.11] s

  * igt@kms_psr2_su@page_flip-p010@pipe-b-edp-1:
    - Statuses : 1 fail(s)
    - Exec time: [3.03] s

  * igt@kms_psr2_su@page_flip-p010@pipe-c-edp-1:
    - Statuses : 1 fail(s)
    - Exec time: [3.00] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_persistence@many-contexts:
    - shard-tglb:         NOTRUN -> [FAIL][7] ([i915#2410])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb3/igt@gem_ctx_persistence@many-contexts.html

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-tglb:         NOTRUN -> [SKIP][8] ([i915#280])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb1/igt@gem_ctx_sseu@invalid-sseu.html

  * igt@gem_eio@reset-stress:
    - shard-tglb:         [PASS][9] -> [FAIL][10] ([i915#5784])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-tglb5/igt@gem_eio@reset-stress.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb5/igt@gem_eio@reset-stress.html

  * igt@gem_eio@unwedge-stress:
    - shard-iclb:         [PASS][11] -> [TIMEOUT][12] ([i915#3070])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-iclb3/igt@gem_eio@unwedge-stress.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb7/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_balancer@parallel:
    - shard-iclb:         [PASS][13] -> [SKIP][14] ([i915#4525])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-iclb1/igt@gem_exec_balancer@parallel.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb6/igt@gem_exec_balancer@parallel.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-glk:          [PASS][15] -> [FAIL][16] ([i915#2842]) +1 similar issue
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-glk8/igt@gem_exec_fair@basic-none-share@rcs0.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-glk9/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none@bcs0:
    - shard-tglb:         NOTRUN -> [FAIL][17] ([i915#2842]) +4 similar issues
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb2/igt@gem_exec_fair@basic-none@bcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-tglb:         [PASS][18] -> [FAIL][19] ([i915#2842])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-tglb3/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb7/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace@vcs1:
    - shard-iclb:         NOTRUN -> [FAIL][20] ([i915#2842])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb2/igt@gem_exec_fair@basic-pace@vcs1.html

  * igt@gem_exec_fair@basic-pace@vecs0:
    - shard-iclb:         [PASS][21] -> [FAIL][22] ([i915#2842]) +1 similar issue
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-iclb7/igt@gem_exec_fair@basic-pace@vecs0.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb2/igt@gem_exec_fair@basic-pace@vecs0.html

  * igt@gem_lmem_swapping@heavy-multi:
    - shard-tglb:         NOTRUN -> [SKIP][23] ([i915#4613])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb3/igt@gem_lmem_swapping@heavy-multi.html

  * igt@gem_pxp@create-valid-protected-context:
    - shard-iclb:         NOTRUN -> [SKIP][24] ([i915#4270])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb5/igt@gem_pxp@create-valid-protected-context.html
    - shard-tglb:         NOTRUN -> [SKIP][25] ([i915#4270])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb1/igt@gem_pxp@create-valid-protected-context.html

  * igt@gem_render_copy@y-tiled-to-vebox-linear:
    - shard-iclb:         NOTRUN -> [SKIP][26] ([i915#768]) +1 similar issue
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb5/igt@gem_render_copy@y-tiled-to-vebox-linear.html

  * igt@gem_userptr_blits@unsync-unmap-after-close:
    - shard-tglb:         NOTRUN -> [SKIP][27] ([i915#3297])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb3/igt@gem_userptr_blits@unsync-unmap-after-close.html
    - shard-iclb:         NOTRUN -> [SKIP][28] ([i915#3297])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb8/igt@gem_userptr_blits@unsync-unmap-after-close.html

  * igt@gen3_render_linear_blits:
    - shard-iclb:         NOTRUN -> [SKIP][29] ([fdo#109289]) +1 similar issue
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb1/igt@gen3_render_linear_blits.html
    - shard-tglb:         NOTRUN -> [SKIP][30] ([fdo#109289]) +1 similar issue
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb7/igt@gen3_render_linear_blits.html

  * igt@gen9_exec_parse@allowed-all:
    - shard-glk:          [PASS][31] -> [DMESG-WARN][32] ([i915#5566] / [i915#716])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-glk8/igt@gen9_exec_parse@allowed-all.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-glk5/igt@gen9_exec_parse@allowed-all.html

  * igt@gen9_exec_parse@bb-start-param:
    - shard-tglb:         NOTRUN -> [SKIP][33] ([i915#2527] / [i915#2856])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb8/igt@gen9_exec_parse@bb-start-param.html

  * igt@gen9_exec_parse@shadow-peek:
    - shard-iclb:         NOTRUN -> [SKIP][34] ([i915#2856])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb3/igt@gen9_exec_parse@shadow-peek.html

  * igt@i915_pm_rc6_residency@rc6-idle@rcs0:
    - shard-tglb:         NOTRUN -> [WARN][35] ([i915#2681]) +3 similar issues
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb8/igt@i915_pm_rc6_residency@rc6-idle@rcs0.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-270:
    - shard-tglb:         NOTRUN -> [SKIP][36] ([i915#5286])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb1/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-iclb:         NOTRUN -> [SKIP][37] ([i915#5286])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb1/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-iclb:         NOTRUN -> [SKIP][38] ([fdo#110723])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb7/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180:
    - shard-tglb:         NOTRUN -> [SKIP][39] ([fdo#111615]) +2 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb3/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180.html

  * igt@kms_big_joiner@invalid-modeset:
    - shard-tglb:         NOTRUN -> [SKIP][40] ([i915#2705])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb2/igt@kms_big_joiner@invalid-modeset.html

  * igt@kms_ccs@pipe-b-bad-rotation-90-4_tiled_dg2_rc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][41] ([i915#3689] / [i915#6095]) +1 similar issue
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb3/igt@kms_ccs@pipe-b-bad-rotation-90-4_tiled_dg2_rc_ccs.html

  * igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc:
    - shard-glk:          NOTRUN -> [SKIP][42] ([fdo#109271] / [i915#3886]) +1 similar issue
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-glk2/igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc.html
    - shard-iclb:         NOTRUN -> [SKIP][43] ([fdo#109278] / [i915#3886]) +1 similar issue
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb8/igt@kms_ccs@pipe-b-ccs-on-another-bo-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_dg2_rc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][44] ([i915#6095]) +5 similar issues
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb2/igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_dg2_rc_ccs.html

  * igt@kms_ccs@pipe-c-bad-pixel-format-y_tiled_gen12_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][45] ([fdo#109271] / [i915#3886]) +4 similar issues
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-apl2/igt@kms_ccs@pipe-c-bad-pixel-format-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-c-bad-rotation-90-yf_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][46] ([fdo#111615] / [i915#3689])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb8/igt@kms_ccs@pipe-c-bad-rotation-90-yf_tiled_ccs.html

  * igt@kms_ccs@pipe-d-crc-primary-basic-4_tiled_dg2_mc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][47] ([i915#3689]) +4 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb1/igt@kms_ccs@pipe-d-crc-primary-basic-4_tiled_dg2_mc_ccs.html

  * igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_ccs:
    - shard-iclb:         NOTRUN -> [SKIP][48] ([fdo#109278]) +13 similar issues
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb7/igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_ccs.html

  * igt@kms_chamelium@dp-edid-change-during-suspend:
    - shard-apl:          NOTRUN -> [SKIP][49] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-apl6/igt@kms_chamelium@dp-edid-change-during-suspend.html

  * igt@kms_chamelium@vga-hpd-enable-disable-mode:
    - shard-tglb:         NOTRUN -> [SKIP][50] ([fdo#109284] / [fdo#111827]) +2 similar issues
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb3/igt@kms_chamelium@vga-hpd-enable-disable-mode.html

  * igt@kms_color_chamelium@ctm-blue-to-red:
    - shard-iclb:         NOTRUN -> [SKIP][51] ([fdo#109284] / [fdo#111827])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb3/igt@kms_color_chamelium@ctm-blue-to-red.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-tglb:         NOTRUN -> [SKIP][52] ([i915#3116] / [i915#3299])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb3/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@uevent:
    - shard-iclb:         NOTRUN -> [SKIP][53] ([fdo#109300] / [fdo#111066])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb3/igt@kms_content_protection@uevent.html
    - shard-apl:          NOTRUN -> [FAIL][54] ([i915#2105])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-apl2/igt@kms_content_protection@uevent.html
    - shard-tglb:         NOTRUN -> [SKIP][55] ([i915#1063])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb5/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-tglb:         NOTRUN -> [SKIP][56] ([i915#3359])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb7/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic:
    - shard-iclb:         NOTRUN -> [SKIP][57] ([fdo#109274]) +7 similar issues
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb6/igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-glk:          [PASS][58] -> [FAIL][59] ([i915#72])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-glk5/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-glk8/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
    - shard-tglb:         NOTRUN -> [SKIP][60] ([fdo#109274] / [fdo#111825]) +1 similar issue
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb7/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html

  * igt@kms_dsc@basic-dsc:
    - shard-iclb:         NOTRUN -> [SKIP][61] ([i915#3555]) +4 similar issues
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb5/igt@kms_dsc@basic-dsc.html

  * igt@kms_flip@2x-flip-vs-fences-interruptible:
    - shard-tglb:         NOTRUN -> [SKIP][62] ([fdo#109274] / [fdo#111825] / [i915#3637])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb3/igt@kms_flip@2x-flip-vs-fences-interruptible.html

  * igt@kms_flip@flip-vs-suspend@c-dp1:
    - shard-apl:          [PASS][63] -> [DMESG-WARN][64] ([i915#180]) +1 similar issue
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-apl2/igt@kms_flip@flip-vs-suspend@c-dp1.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-apl7/igt@kms_flip@flip-vs-suspend@c-dp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-default-mode:
    - shard-iclb:         [PASS][65] -> [SKIP][66] ([i915#3555])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-iclb3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-default-mode.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode:
    - shard-iclb:         NOTRUN -> [SKIP][67] ([i915#2587] / [i915#2672]) +4 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-valid-mode:
    - shard-tglb:         NOTRUN -> [SKIP][68] ([i915#2587] / [i915#2672]) +2 similar issues
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-default-mode:
    - shard-iclb:         NOTRUN -> [SKIP][69] ([i915#2672]) +1 similar issue
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode:
    - shard-iclb:         NOTRUN -> [SKIP][70] ([i915#2672] / [i915#3555]) +1 similar issue
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb3/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu:
    - shard-tglb:         NOTRUN -> [SKIP][71] ([i915#6497]) +3 similar issues
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb1/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-pwrite:
    - shard-iclb:         NOTRUN -> [SKIP][72] ([fdo#109280]) +11 similar issues
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb1/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt:
    - shard-tglb:         NOTRUN -> [SKIP][73] ([fdo#109280] / [fdo#111825]) +13 similar issues
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb3/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_hdr@bpc-switch-dpms:
    - shard-tglb:         NOTRUN -> [SKIP][74] ([i915#3555]) +1 similar issue
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb1/igt@kms_hdr@bpc-switch-dpms.html

  * igt@kms_plane_lowres@tiling-none@pipe-c-edp-1:
    - shard-tglb:         NOTRUN -> [SKIP][75] ([i915#3536]) +3 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb1/igt@kms_plane_lowres@tiling-none@pipe-c-edp-1.html

  * igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-75@pipe-c-edp-1:
    - shard-iclb:         NOTRUN -> [SKIP][76] ([i915#5176]) +2 similar issues
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb7/igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-75@pipe-c-edp-1.html

  * igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-75@pipe-d-edp-1:
    - shard-tglb:         NOTRUN -> [SKIP][77] ([i915#5176]) +3 similar issues
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb3/igt@kms_plane_scaling@plane-downscale-with-rotation-factor-0-75@pipe-d-edp-1.html

  * igt@kms_psr2_sf@primary-plane-update-sf-dmg-area:
    - shard-apl:          NOTRUN -> [SKIP][78] ([fdo#109271] / [i915#658]) +1 similar issue
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-apl3/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area.html
    - shard-tglb:         NOTRUN -> [SKIP][79] ([i915#2920])
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb1/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area.html
    - shard-glk:          NOTRUN -> [SKIP][80] ([fdo#109271] / [i915#658])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-glk9/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area.html
    - shard-iclb:         NOTRUN -> [SKIP][81] ([fdo#111068] / [i915#658])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb5/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area.html

  * igt@kms_psr@psr2_cursor_mmap_gtt:
    - shard-iclb:         [PASS][82] -> [SKIP][83] ([fdo#109441])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_gtt.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb7/igt@kms_psr@psr2_cursor_mmap_gtt.html

  * igt@kms_psr@psr2_sprite_mmap_cpu:
    - shard-tglb:         NOTRUN -> [FAIL][84] ([i915#132] / [i915#3467])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb5/igt@kms_psr@psr2_sprite_mmap_cpu.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-tglb:         NOTRUN -> [SKIP][85] ([i915#5519])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb1/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-tglb:         NOTRUN -> [SKIP][86] ([fdo#111615] / [i915#5289])
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-tglb1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

  * igt@prime_nv_pcopy@test3_2:
    - shard-glk:          NOTRUN -> [SKIP][87] ([fdo#109271]) +77 similar issues
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-glk7/igt@prime_nv_pcopy@test3_2.html

  * igt@prime_nv_pcopy@test3_4:
    - shard-apl:          NOTRUN -> [SKIP][88] ([fdo#109271]) +122 similar issues
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-apl8/igt@prime_nv_pcopy@test3_4.html

  * igt@prime_nv_pcopy@test3_5:
    - shard-snb:          NOTRUN -> [SKIP][89] ([fdo#109271]) +101 similar issues
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-snb4/igt@prime_nv_pcopy@test3_5.html

  * igt@prime_udl:
    - shard-iclb:         NOTRUN -> [SKIP][90] ([fdo#109291])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb6/igt@prime_udl.html

  * igt@sysfs_clients@sema-50:
    - shard-iclb:         NOTRUN -> [SKIP][91] ([i915#2994])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb4/igt@sysfs_clients@sema-50.html

  
#### Possible fixes ####

  * igt@gem_exec_balancer@parallel-contexts:
    - shard-iclb:         [SKIP][92] ([i915#4525]) -> [PASS][93]
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-iclb5/igt@gem_exec_balancer@parallel-contexts.html
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb1/igt@gem_exec_balancer@parallel-contexts.html

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-apl:          [FAIL][94] ([i915#2842]) -> [PASS][95]
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-apl6/igt@gem_exec_fair@basic-pace-solo@rcs0.html
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-apl7/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-apl:          [SKIP][96] ([fdo#109271]) -> [PASS][97]
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-apl1/igt@i915_pm_dc@dc9-dpms.html
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-apl3/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_rps@engine-order:
    - shard-apl:          [FAIL][98] ([i915#6537]) -> [PASS][99]
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-apl8/igt@i915_pm_rps@engine-order.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-apl8/igt@i915_pm_rps@engine-order.html

  * igt@kms_big_fb@y-tiled-32bpp-rotate-180:
    - shard-glk:          [DMESG-FAIL][100] ([i915#118] / [i915#1888] / [i915#5138]) -> [PASS][101]
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-glk7/igt@kms_big_fb@y-tiled-32bpp-rotate-180.html
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-glk7/igt@kms_big_fb@y-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-180:
    - shard-glk:          [FAIL][102] ([i915#1888] / [i915#5138]) -> [PASS][103]
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-glk6/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-glk7/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html

  
#### Warnings ####

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-glk:          [FAIL][104] ([i915#1888] / [i915#2842]) -> [FAIL][105] ([i915#2842])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-glk9/igt@gem_exec_fair@basic-pace-solo@rcs0.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-glk6/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-fully-sf:
    - shard-iclb:         [SKIP][106] ([i915#658]) -> [SKIP][107] ([i915#2920])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-iclb3/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-fully-sf.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb2/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@overlay-plane-update-continuous-sf:
    - shard-iclb:         [SKIP][108] ([i915#2920]) -> [SKIP][109] ([fdo#111068] / [i915#658])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-iclb2/igt@kms_psr2_sf@overlay-plane-update-continuous-sf.html
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb1/igt@kms_psr2_sf@overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area:
    - shard-iclb:         [SKIP][110] ([fdo#111068] / [i915#658]) -> [SKIP][111] ([i915#2920]) +1 similar issue
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12182/shard-iclb1/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/shard-iclb2/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111066]: https://bugs.freedesktop.org/show_bug.cgi?id=111066
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1063]: https://gitlab.freedesktop.org/drm/intel/issues/1063
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#1911]: https://gitlab.freedesktop.org/drm/intel/issues/1911
  [i915#2105]: https://gitlab.freedesktop.org/drm/intel/issues/2105
  [i915#2410]: https://gitlab.freedesktop.org/drm/intel/issues/2410
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994
  [i915#3070]: https://gitlab.freedesktop.org/drm/intel/issues/3070
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3467]: https://gitlab.freedesktop.org/drm/intel/issues/3467
  [i915#3536]: https://gitlab.freedesktop.org/drm/intel/issues/3536
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#5138]: https://gitlab.freedesktop.org/drm/intel/issues/5138
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5519]: https://gitlab.freedesktop.org/drm/intel/issues/5519
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
  [i915#6537]: https://gitlab.freedesktop.org/drm/intel/issues/6537
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
  [i915#768]: https://gitlab.freedesktop.org/drm/intel/issues/768


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6663 -> IGTPW_7841
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_12182: 8ad031bd195081f699414339ac21fa46dd0b8e2d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7841: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7841/index.html
  IGT_6663: 5e232c77cd762147e0882c337a984121fabb1c75 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

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

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

* Re: [igt-dev] [PATCH i-g-t v3 1/2] tests/i915/kms_psr2_sf: Convert tests to dynamic
  2022-09-26 10:34 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/i915/kms_psr2_sf: Convert tests " Jeevan B
@ 2022-09-27  6:46   ` Hogander, Jouni
  0 siblings, 0 replies; 7+ messages in thread
From: Hogander, Jouni @ 2022-09-27  6:46 UTC (permalink / raw)
  To: igt-dev, B, Jeevan; +Cc: Latvala, Petri

Hello Jeevan,

One small issue I noticed. See my comment below.

On Mon, 2022-09-26 at 16:04 +0530, Jeevan B wrote:
> Converting the existing subtests to dynamic subtests.
> Adding support for each_pipe, currently PSR2 is supported on
> few pipes so breaking the loop for other pipes currently.
> 
> v2: Check for pipe supporting PSR2 or not and then add to dynamic
> subtest. (Jouni)
> v3: Check PSR2 support once in fixture then iterate pipes. (Jouni)
> v4: Add output part into dynamic name. (Jouni)
> 
> Signed-off-by: Jeevan B <jeevan.b@intel.com>
> ---
>  tests/i915/kms_psr2_sf.c | 291 ++++++++++++++++++++++++++-----------
> --
>  1 file changed, 195 insertions(+), 96 deletions(-)
> 
> diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
> index 6612587c..3ba6cb02 100644
> --- a/tests/i915/kms_psr2_sf.c
> +++ b/tests/i915/kms_psr2_sf.c
> @@ -237,7 +237,7 @@ static void plane_move_setup_square(data_t *data,
> igt_fb_t *fb, uint32_t h,
>         set_clip(&data->plane_move_clip, x, y, SQUARE_SIZE,
> SQUARE_SIZE);
>  }
>  
> -static void prepare(data_t *data)
> +static void prepare(data_t *data, igt_output_t *output)
>  {
>         igt_plane_t *primary, *sprite = NULL, *cursor = NULL;
>         int fb_w, fb_h, x, y, view_w, view_h;
> @@ -262,12 +262,12 @@ static void prepare(data_t *data)
>                             0.0, 1.0, 0.0,
>                             &data->fb_primary);
>  
> -       primary = igt_output_get_plane_type(data->output,
> +       primary = igt_output_get_plane_type(output,
>                         DRM_PLANE_TYPE_PRIMARY);
>  
>         switch (data->test_plane_id) {
>         case DRM_PLANE_TYPE_OVERLAY:
> -               sprite = igt_output_get_plane_type(data->output,
> +               sprite = igt_output_get_plane_type(output,
>                                                   
> DRM_PLANE_TYPE_OVERLAY);
>                 /*All blue plane*/
>                 igt_create_color_fb(data->drm_fd,
> @@ -318,7 +318,7 @@ static void prepare(data_t *data)
>                 data->test_plane = primary;
>  
>                 if (data->op == OVERLAY_PRIM_UPDATE) {
> -                       sprite = igt_output_get_plane_type(data-
> >output,
> +                       sprite = igt_output_get_plane_type(output,
>                                                   
> DRM_PLANE_TYPE_OVERLAY);
>  
>                         igt_create_color_fb(data->drm_fd, fb_w, fb_h,
> @@ -338,7 +338,7 @@ static void prepare(data_t *data)
>                 break;
>  
>         case DRM_PLANE_TYPE_CURSOR:
> -               cursor = igt_output_get_plane_type(data->output,
> +               cursor = igt_output_get_plane_type(output,
>                                                   
> DRM_PLANE_TYPE_CURSOR);
>                 igt_plane_set_position(cursor, 0, 0);
>  
> @@ -808,12 +808,12 @@ static void run(data_t *data)
>         }
>  }
>  
> -static void cleanup(data_t *data)
> +static void cleanup(data_t *data, igt_output_t *output)
>  {
>         igt_plane_t *primary;
>         igt_plane_t *sprite;
>  
> -       primary = igt_output_get_plane_type(data->output,
> +       primary = igt_output_get_plane_type(output,
>                                             DRM_PLANE_TYPE_PRIMARY);
>  
>         igt_plane_set_fb(primary, NULL);
> @@ -824,7 +824,7 @@ static void cleanup(data_t *data)
>         }
>  
>         if (data->op == OVERLAY_PRIM_UPDATE) {
> -               sprite = igt_output_get_plane_type(data->output,
> +               sprite = igt_output_get_plane_type(output,
>                                 DRM_PLANE_TYPE_OVERLAY);
>                 igt_plane_set_position(sprite, 0, 0);
>                 igt_plane_set_fb(sprite, NULL);
> @@ -838,14 +838,35 @@ static void cleanup(data_t *data)
>         igt_remove_fb(data->drm_fd, &data->fb_test);
>  }
>  
> +static int check_psr2_support(data_t *data, enum pipe pipe)
> +{
> +       int status;
> +
> +       igt_output_t *output;
> +       igt_display_t *display = &data->display;
> +
> +       igt_display_reset(display);
> +       output = data->output;
> +       igt_output_set_pipe(output, pipe);
> +
> +       prepare(data, output);
> +       status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2);
> +       cleanup(data, output);
> +
> +       return status;
> +}
> +
>  igt_main
>  {
>         data_t data = {};
> -       int i;
> +       igt_output_t *outputs[IGT_MAX_PIPES];
> +       int i, j;
> +       enum pipe pipe;
> +       int pipes[IGT_MAX_PIPES];
> +       int n_pipes = 0;
>  
>         igt_fixture {
>                 drmModeResPtr res;
> -               int r;
>  
>                 data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
>                 data.debugfs_fd = igt_debugfs_dir(data.drm_fd);
> @@ -873,146 +894,218 @@ igt_main
>                 data.big_fb_height = res->max_height;
>                 igt_info("Big framebuffer size %dx%d\n",
>                          data.big_fb_width, data.big_fb_height);
> -               prepare(&data);
> -               r = psr_wait_entry(data.debugfs_fd, PSR_MODE_2);
> -               if (!r)
> -                       psr_print_debugfs(data.debugfs_fd);
>  
>                 igt_require_f(psr2_selective_fetch_check(data.debugfs
> _fd),
>                               "PSR2 selective fetch not enabled\n");
> -               cleanup(&data);
> -               if (!r)
> -                       psr_print_debugfs(data.debugfs_fd);
> -               igt_require_f(r, "PSR2 can not be enabled\n");
> +
> +               for_each_pipe_with_valid_output(&data.display, pipe,
> data.output) {
> +                       if (check_psr2_support(&data, pipe)) {
> +                               pipes[n_pipes] = pipe;
> +                               outputs[n_pipes] = data.output;
> +                               n_pipes++;
> +                       }
> +               }
>         }
>  
>         /* Verify primary plane selective fetch */
>         igt_describe("Test that selective fetch works on primary
> plane");
> -       igt_subtest_f("primary-%s-sf-dmg-area", op_str(data.op)) {
> -               for (i = 1; i <= MAX_DAMAGE_AREAS; i++) {
> -                       data.damage_area_count = i;
> -                       data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
> -                       prepare(&data);
> -                       run(&data);
> -                       cleanup(&data);
> +       igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area",
> op_str(data.op)) {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> j++) {
> +                                       data.damage_area_count = j;
> +                                       data.test_plane_id =
> DRM_PLANE_TYPE_PRIMARY;
> +                                       prepare(&data, outputs[i]);
> +                                       run(&data);
> +                                       cleanup(&data, outputs[i]);
> +                               }
> +                       }
>                 }
>         }
>  
>         /* Verify primary plane selective fetch with big fb */
>         data.big_fb_test = 1;
>         igt_describe("Test that selective fetch works on primary
> plane with big fb");
> -       igt_subtest_f("primary-%s-sf-dmg-area-big-fb",
> op_str(data.op)) {
> -               for (i = 1; i <= MAX_DAMAGE_AREAS; i++) {
> -                       data.damage_area_count = i;
> -                       data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
> -                       prepare(&data);
> -                       run(&data);
> -                       cleanup(&data);
> +       igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area-big-fb",
> op_str(data.op)) {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> j++) {
> +                                       data.damage_area_count = j;
> +                                       data.test_plane_id =
> DRM_PLANE_TYPE_PRIMARY;
> +                                       prepare(&data, outputs[i]);
> +                                       run(&data);
> +                                       cleanup(&data, outputs[i]);
> +                               }
> +                       }
>                 }
>         }
> +
>         data.big_fb_test = 0;
>  
>         /* Verify overlay plane selective fetch */
>         igt_describe("Test that selective fetch works on overlay
> plane");
> -       igt_subtest_f("overlay-%s-sf-dmg-area", op_str(data.op)) {
> -               for (i = 1; i <= MAX_DAMAGE_AREAS; i++) {
> -                       data.damage_area_count = i;
> -                       data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -                       prepare(&data);
> -                       run(&data);
> -                       cleanup(&data);
> +       igt_subtest_with_dynamic_f("overlay-%s-sf-dmg-area",
> op_str(data.op)) {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> j++) {
> +                                       data.damage_area_count = j;
> +                                       data.test_plane_id =
> DRM_PLANE_TYPE_OVERLAY;
> +                                       prepare(&data, outputs[i]);
> +                                       run(&data);
> +                                       cleanup(&data, outputs[i]);
> +                               }
> +                       }
>                 }
>         }
>  
> -       /* Verify overlay plane selective fetch */
> +       /* Verify cursor plane selective fetch */
>         igt_describe("Test that selective fetch works on cursor
> plane");
> -       igt_subtest_f("cursor-%s-sf", op_str(data.op)) {
> -               data.damage_area_count = 1;
> -               data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> -               prepare(&data);
> -               run(&data);
> -               cleanup(&data);
> +       igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {

You are missing "data.damage_area_count = 1;" here.

> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               data.test_plane_id =
> DRM_PLANE_TYPE_CURSOR;
> +                               prepare(&data, outputs[i]);
> +                               run(&data);
> +                               cleanup(&data, outputs[i]);
> +                       }
> +               }
>         }
>  
>         data.op = PLANE_MOVE_CONTINUOUS;
>         igt_describe("Test that selective fetch works on moving
> cursor plane (no update)");
> -       igt_subtest_f("cursor-%s-sf", op_str(data.op)) {
> -               data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> -               prepare(&data);
> -               run(&data);
> -               cleanup(&data);
> +       igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               data.test_plane_id =
> DRM_PLANE_TYPE_CURSOR;
> +                               prepare(&data, outputs[i]);
> +                               run(&data);
> +                               cleanup(&data, outputs[i]);
> +                       }
> +               }
>         }
>  
>         data.op = PLANE_MOVE_CONTINUOUS_EXCEED;
>         igt_describe("Test that selective fetch works on moving
> cursor plane exceeding partially visible area (no update)");
> -       igt_subtest_f("cursor-%s-sf", op_str(data.op)) {
> -               data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> -               prepare(&data);
> -               run(&data);
> -               cleanup(&data);
> +       igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               data.test_plane_id =
> DRM_PLANE_TYPE_CURSOR;
> +                               prepare(&data, outputs[i]);
> +                               run(&data);
> +                               cleanup(&data, outputs[i]);
> +                       }
> +               }
>         }
>  
>         data.op = PLANE_MOVE_CONTINUOUS_EXCEED_FULLY;
>         igt_describe("Test that selective fetch works on moving
> cursor plane exceeding fully visible area (no update)");
> -       igt_subtest_f("cursor-%s-sf", op_str(data.op)) {
> -               data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> -               prepare(&data);
> -               run(&data);
> -               cleanup(&data);
> +       igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               data.test_plane_id =
> DRM_PLANE_TYPE_CURSOR;
> +                               prepare(&data, outputs[i]);
> +                               run(&data);
> +                               cleanup(&data, outputs[i]);
> +                       }
> +               }
>         }
>  
>         /* Only for overlay plane */
>         data.op = PLANE_MOVE;
>         /* Verify overlay plane move selective fetch */
>         igt_describe("Test that selective fetch works on moving
> overlay plane");
> -       igt_subtest_f("%s-sf-dmg-area", op_str(data.op)) {
> -               for (i = POS_TOP_LEFT; i <= POS_BOTTOM_RIGHT ; i++) {
> -                       data.pos = i;
> -                       data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -                       prepare(&data);
> -                       run(&data);
> -                       cleanup(&data);
> +       igt_subtest_with_dynamic_f("%s-sf-dmg-area", op_str(data.op))
> {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               for (j = POS_TOP_LEFT; j <=
> POS_BOTTOM_RIGHT ; j++) {
> +                                       data.pos = j;
> +                                       data.test_plane_id =
> DRM_PLANE_TYPE_OVERLAY;
> +                                       prepare(&data, outputs[i]);
> +                                       run(&data);
> +                                       cleanup(&data, outputs[i]);
> +                               }
> +                       }
>                 }
>         }
>  
>         data.op = PLANE_MOVE_CONTINUOUS;
>         igt_describe("Test that selective fetch works on moving
> overlay plane (no update)");
> -       igt_subtest_f("overlay-%s-sf", op_str(data.op)) {
> -               data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -               prepare(&data);
> -               run(&data);
> -               cleanup(&data);
> +       igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op))
> {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               data.test_plane_id =
> DRM_PLANE_TYPE_OVERLAY;
> +                               prepare(&data, outputs[i]);
> +                               run(&data);
> +                               cleanup(&data, outputs[i]);
> +                       }
> +               }
>         }
>  
>         data.op = PLANE_MOVE_CONTINUOUS_EXCEED;
>         igt_describe("Test that selective fetch works on moving
> overlay plane partially exceeding visible area (no update)");
> -       igt_subtest_f("overlay-%s-sf", op_str(data.op)) {
> -               data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -               prepare(&data);
> -               run(&data);
> -               cleanup(&data);
> +       igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op))
> {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               data.test_plane_id =
> DRM_PLANE_TYPE_OVERLAY;
> +                               prepare(&data, outputs[i]);
> +                               run(&data);
> +                               cleanup(&data, outputs[i]);
> +                       }
> +               }
>         }
>  
>         data.op = PLANE_MOVE_CONTINUOUS_EXCEED_FULLY;
>         igt_describe("Test that selective fetch works on moving
> overlay plane fully exceeding visible area (no update)");
> -       igt_subtest_f("overlay-%s-sf", op_str(data.op)) {
> -               data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -               prepare(&data);
> -               run(&data);
> -               cleanup(&data);
> +       igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op))
> {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               data.test_plane_id =
> DRM_PLANE_TYPE_OVERLAY;
> +                               prepare(&data, outputs[i]);
> +                               run(&data);
> +                               cleanup(&data, outputs[i]);
> +                       }
> +               }
>         }
>  
>         /* Verify primary plane selective fetch with overplay plane
> blended */
>         data.op = OVERLAY_PRIM_UPDATE;
>         igt_describe("Test that selective fetch works on primary
> plane "
>                      "with blended overlay plane");
> -       igt_subtest_f("%s-sf-dmg-area", op_str(data.op)) {
> -               for (i = 1; i <= MAX_DAMAGE_AREAS; i++) {
> -                       data.damage_area_count = i;
> -                       data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
> -                       prepare(&data);
> -                       run(&data);
> -                       cleanup(&data);
> +       igt_subtest_with_dynamic_f("%s-sf-dmg-area", op_str(data.op))
> {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> j++) {
> +                                       data.damage_area_count = j;
> +                                       data.test_plane_id =
> DRM_PLANE_TYPE_PRIMARY;
> +                                       prepare(&data, outputs[i]);
> +                                       run(&data);
> +                                       cleanup(&data, outputs[i]);
> +                               }
> +                       }
>                 }
>         }
>  
> @@ -1023,12 +1116,18 @@ igt_main
>         data.op = PLANE_UPDATE_CONTINUOUS;
>         data.primary_format = DRM_FORMAT_NV12;
>         igt_describe("Test that selective fetch works on overlay
> plane");
> -       igt_subtest_f("overlay-%s-sf", op_str(data.op)) {
> -                       data.damage_area_count = 1;
> -                       data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -                       prepare(&data);
> -                       run(&data);
> -                       cleanup(&data);
> +       igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op))
> {
> +               for (i = 0; i < n_pipes; i++) {
> +                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                       igt_output_name(outputs[i]))
> {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               data.damage_area_count = 1;
> +                               data.test_plane_id =
> DRM_PLANE_TYPE_OVERLAY;
> +                               prepare(&data, outputs[i]);
> +                               run(&data);
> +                               cleanup(&data, outputs[i]);
> +                       }
> +               }
>         }
>  
>         igt_fixture {


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

* Re: [igt-dev] [PATCH i-g-t v3 2/2] tests/i915/kms_psr2_su: Convert tests to dynamic
  2022-09-26 10:34 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/i915/kms_psr2_su: " Jeevan B
@ 2022-09-27  7:05   ` Hogander, Jouni
  0 siblings, 0 replies; 7+ messages in thread
From: Hogander, Jouni @ 2022-09-27  7:05 UTC (permalink / raw)
  To: igt-dev, B, Jeevan; +Cc: Latvala, Petri

On Mon, 2022-09-26 at 16:04 +0530, Jeevan B wrote:
> Converting the existing subtests to dynamic subtests.
> Adding support for each_pipe, currently PSR2 is supported on
> few pipes so breaking the loop for other pipes currently.
> 
> v2: Add commit message and change break to continue. (Jouni)
> v3: Check for pipe supporting PSR2 or not and then add to dynamic
> subtest. (Jouni)
> v4: Check PSR2 support once in fixture then iterate pipes. (Jouni)
> 
> Signed-off-by: Jeevan B <jeevan.b@intel.com>
> ---
>  tests/i915/kms_psr2_su.c | 93 ++++++++++++++++++++++++++------------
> --
>  1 file changed, 62 insertions(+), 31 deletions(-)
> 
> diff --git a/tests/i915/kms_psr2_su.c b/tests/i915/kms_psr2_su.c
> index caccf713..3a0d241f 100644
> --- a/tests/i915/kms_psr2_su.c
> +++ b/tests/i915/kms_psr2_su.c
> @@ -123,7 +123,7 @@ static void display_fini(data_t *data)
>         igt_display_fini(&data->display);
>  }
>  
> -static void prepare(data_t *data)
> +static void prepare(data_t *data, igt_output_t *output)
>  {
>         igt_plane_t *primary;
>  
> @@ -154,14 +154,14 @@ static void prepare(data_t *data)
>                 data->cr = igt_get_cairo_ctx(data->drm_fd, &data-
> >fb[0]);
>         }
>  
> -       primary = igt_output_get_plane_type(data->output,
> +       primary = igt_output_get_plane_type(output,
>                                             DRM_PLANE_TYPE_PRIMARY);
>  
>         igt_plane_set_fb(primary, &data->fb[0]);
>         igt_display_commit2(&data->display, COMMIT_ATOMIC);
>  }
>  
> -static bool update_screen_and_test(data_t *data)
> +static bool update_screen_and_test(data_t *data, igt_output_t
> *output)
>  {
>         uint16_t su_blocks;
>         bool ret = false;
> @@ -170,7 +170,7 @@ static bool update_screen_and_test(data_t *data)
>         case PAGE_FLIP: {
>                 igt_plane_t *primary;
>  
> -               primary = igt_output_get_plane_type(data->output,
> +               primary = igt_output_get_plane_type(output,
>                                                    
> DRM_PLANE_TYPE_PRIMARY);
>  
>                 if (igt_plane_has_prop(primary,
> IGT_PLANE_FB_DAMAGE_CLIPS)) {
> @@ -222,7 +222,7 @@ static bool update_screen_and_test(data_t *data)
>         return ret;
>  }
>  
> -static void run(data_t *data)
> +static void run(data_t *data, igt_output_t *output)
>  {
>         bool result = false;
>  
> @@ -236,18 +236,18 @@ static void run(data_t *data)
>  
>                 r = read(data->change_screen_timerfd, &exp,
> sizeof(exp));
>                 if (r == sizeof(uint64_t) && exp)
> -                       result = update_screen_and_test(data);
> +                       result = update_screen_and_test(data,
> output);
>         }
>  
>         igt_assert_f(result,
>                      "No matching selective update blocks read from
> debugfs\n");
>  }
>  
> -static void cleanup(data_t *data)
> +static void cleanup(data_t *data, igt_output_t *output)
>  {
>         igt_plane_t *primary;
>  
> -       primary = igt_output_get_plane_type(data->output,
> +       primary = igt_output_get_plane_type(output,
>                                             DRM_PLANE_TYPE_PRIMARY);
>         igt_plane_set_fb(primary, NULL);
>         igt_display_commit2(&data->display, COMMIT_ATOMIC);
> @@ -260,13 +260,35 @@ static void cleanup(data_t *data)
>         igt_remove_fb(data->drm_fd, &data->fb[0]);
>  }
>  
> +static int check_psr2_support(data_t *data, enum pipe pipe)
> +{
> +       int status;
> +
> +       igt_output_t *output;
> +       igt_display_t *display = &data->display;
> +
> +       igt_display_reset(display);
> +       output = data->output;
> +       igt_output_set_pipe(output, pipe);
> +
> +       prepare(data, output);
> +       status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2);
> +       cleanup(data, output);
> +
> +       return status;
> +}
> +
>  igt_main
>  {
>         data_t data = {};
> +       enum pipe pipe;
> +       int r, i;
> +       igt_output_t *outputs[IGT_MAX_PIPES];
> +       int pipes[IGT_MAX_PIPES];
> +       int n_pipes = 0;
>  
>         igt_fixture {
>                 struct itimerspec interval;
> -               int r;
>  
>                 data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
>                 data.debugfs_fd = igt_debugfs_dir(data.drm_fd);
> @@ -287,12 +309,6 @@ igt_main
>                               "Error enabling PSR2\n");
>                 data.op = FRONTBUFFER;
>                 data.format = DRM_FORMAT_XRGB8888;
> -               prepare(&data);
> -               r = psr_wait_entry(data.debugfs_fd, PSR_MODE_2);
> -               cleanup(&data);
> -               if (!r)
> -                       psr_print_debugfs(data.debugfs_fd);
> -               igt_require_f(r, "PSR2 can not be enabled\n");
>  
>                 /* blocking timerfd */
>                 data.change_screen_timerfd =
> timerfd_create(CLOCK_MONOTONIC, 0);
> @@ -304,6 +320,14 @@ igt_main
>                 interval.it_interval.tv_sec =
> interval.it_value.tv_sec;
>                 r = timerfd_settime(data.change_screen_timerfd, 0,
> &interval, NULL);
>                 igt_require_f(r != -1, "Error setting timerfd\n");
> +
> +               for_each_pipe_with_valid_output(&data.display, pipe,
> data.output) {
> +                       if (check_psr2_support(&data, pipe)) {
> +                               pipes[n_pipes] = pipe;

Just realized that one pipe might be used with two or more outputs:
pipes[IGT_MAX_PIPES] might not be big enough. Maybe
"pipes[IGT_MAX_PIPES * IGT_MAX_PIPES]"? Not sure if that can ever
happen but should be handled in the code to my opinion. Same problem in
kms_psr2_sf.c changes.

> +                               outputs[n_pipes] = data.output;
> +                               n_pipes++;
> +                       }
> +               }
>         }
>  
>         for (data.op = PAGE_FLIP; data.op < LAST; data.op++) {
> @@ -312,26 +336,33 @@ igt_main
>                 while (*format != DRM_FORMAT_INVALID) {
>                         data.format = *format++;
>                         igt_describe("Test that selective update
> works when screen changes");
> -                       igt_subtest_f("%s-%s", op_str(data.op),
> igt_format_str(data.format)) {
> -                               if (data.op == FRONTBUFFER &&
> -                                  
> intel_display_ver(intel_get_drm_devid(data.drm_fd)) >= 12) {
> -                                       /*
> -                                        * FIXME: Display 12+
> platforms now have PSR2
> -                                        * selective fetch enabled by
> default but we
> -                                        * still can't properly
> handle frontbuffer
> -                                        * rendering, so right it
> does full frame
> -                                        * fetches at every
> frontbuffer rendering.
> -                                        * So it is expected that
> this test will fail
> -                                        * in display 12+ platform
> for now.
> -                                        */
> -                                       igt_skip("PSR2 selective
> fetch is doing full frame fetches for frontbuffer rendering\n");
> +                       igt_subtest_with_dynamic_f("%s-%s",
> op_str(data.op), igt_format_str(data.format)) {
> +                               for (i = 0; i < n_pipes; i++) {
> +                                       igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> +                                                       igt_output_na
> me(outputs[i])) {
> +                                               igt_output_set_pipe(o
> utputs[i], pipes[i]);
> +                                               if (data.op ==
> FRONTBUFFER &&
> +                                                  
> intel_display_ver(intel_get_drm_devid(data.drm_fd)) >= 12) {
> +                                                       /*
> +                                                        * FIXME:
> Display 12+ platforms now have PSR2
> +                                                        * selective
> fetch enabled by default but we
> +                                                        * still
> can't properly handle frontbuffer
> +                                                        * rendering,
> so right it does full frame
> +                                                        * fetches at
> every frontbuffer rendering.
> +                                                        * So it is
> expected that this test will fail
> +                                                        * in display
> 12+ platform for now.
> +                                                        */
> +                                                       igt_skip("PSR
> 2 selective fetch is doing full frame fetches for frontbuffer
> rendering\n");
> +                                               }
> +                                               prepare(&data,
> outputs[i]);
> +                                               run(&data,
> outputs[i]);
> +                                               cleanup(&data,
> outputs[i]);
> +                                       }
>                                 }
> -                               prepare(&data);
> -                               run(&data);
> -                               cleanup(&data);
>                         }
>                 }
>         }
> +
>         igt_fixture {
>                 close(data.debugfs_fd);
>                 display_fini(&data);


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

end of thread, other threads:[~2022-09-27  7:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-26 10:34 [igt-dev] [PATCH i-g-t v3 0/2] Convert PSR2 sf & su test to dynamic Jeevan B
2022-09-26 10:34 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/i915/kms_psr2_sf: Convert tests " Jeevan B
2022-09-27  6:46   ` Hogander, Jouni
2022-09-26 10:34 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/i915/kms_psr2_su: " Jeevan B
2022-09-27  7:05   ` Hogander, Jouni
2022-09-26 13:31 ` [igt-dev] ✓ Fi.CI.BAT: success for Convert PSR2 sf & su test to dynamic (rev4) Patchwork
2022-09-26 16:40 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.