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

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 | 278 +++++++++++++++++++++++++--------------
 tests/i915/kms_psr2_su.c |  92 ++++++++-----
 2 files changed, 243 insertions(+), 127 deletions(-)

-- 
2.36.0

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

* [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Convert tests to dynamic
  2022-09-21 23:04 [igt-dev] [PATCH i-g-t v2 0/2] Convert PSR2 sf & su test to dynamic Jeevan B
@ 2022-09-21 23:04 ` Jeevan B
  2022-09-22 11:46   ` Hogander, Jouni
  2022-09-21 23:04 ` [igt-dev] [PATCH i-g-t v2 2/2] tests/i915/kms_psr2_su: " Jeevan B
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Jeevan B @ 2022-09-21 23:04 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)

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

diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
index 6612587c..ad1afee1 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,206 @@ 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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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", kmstest_pipe_name(pipes[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 +1104,17 @@ 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", kmstest_pipe_name(pipes[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] 8+ messages in thread

* [igt-dev] [PATCH i-g-t v2 2/2] tests/i915/kms_psr2_su: Convert tests to dynamic
  2022-09-21 23:04 [igt-dev] [PATCH i-g-t v2 0/2] Convert PSR2 sf & su test to dynamic Jeevan B
  2022-09-21 23:04 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Convert tests " Jeevan B
@ 2022-09-21 23:04 ` Jeevan B
  2022-09-22 13:25 ` [igt-dev] ✓ Fi.CI.BAT: success for Convert PSR2 sf & su test to dynamic (rev2) Patchwork
  2022-09-22 14:54 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  3 siblings, 0 replies; 8+ messages in thread
From: Jeevan B @ 2022-09-21 23:04 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 | 92 ++++++++++++++++++++++++++--------------
 1 file changed, 61 insertions(+), 31 deletions(-)

diff --git a/tests/i915/kms_psr2_su.c b/tests/i915/kms_psr2_su.c
index caccf713..ab42afb8 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,32 @@ 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", kmstest_pipe_name(pipe)) {
+						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] 8+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Convert tests to dynamic
  2022-09-21 23:04 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Convert tests " Jeevan B
@ 2022-09-22 11:46   ` Hogander, Jouni
  2022-09-22 17:44     ` B, Jeevan
  0 siblings, 1 reply; 8+ messages in thread
From: Hogander, Jouni @ 2022-09-22 11:46 UTC (permalink / raw)
  To: igt-dev, B, Jeevan; +Cc: Latvala, Petri

Hello Jeevan,

See my comments below.

On Thu, 2022-09-22 at 04:34 +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)
> 
> Signed-off-by: Jeevan B <jeevan.b@intel.com>
> ---
>  tests/i915/kms_psr2_sf.c | 278 +++++++++++++++++++++++++------------
> --
>  1 file changed, 182 insertions(+), 96 deletions(-)
> 
> diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
> index 6612587c..ad1afee1 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,206 @@ 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) {

Did you noticed comment from Petri Latvala about
for_each_pipe_with_single_output?

I'm not sure if that is what we want here, because check_psr2_support
may fail with certain pipe + output combination while with some other
it may pass?

On the other hand if we store each pipe + output combination we may end
up having one pipe two times in pipes array. i.e. one pipe is tested
two times? I'm not sure if this is wanted?

> +                       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",
> kmstest_pipe_name(pipes[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",
> kmstest_pipe_name(pipes[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",
> kmstest_pipe_name(pipes[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",
> kmstest_pipe_name(pipes[i])) {
> +                               igt_output_set_pipe(outputs[i],
> pipes[i]);
> +                               data.test_plane_id =
> DRM_PLANE_TYPE_CURSOR;

You are missing damge_area_count setting here.

> +                               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",
> kmstest_pipe_name(pipes[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",
> kmstest_pipe_name(pipes[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",
> kmstest_pipe_name(pipes[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",
> kmstest_pipe_name(pipes[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",
> kmstest_pipe_name(pipes[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",
> kmstest_pipe_name(pipes[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",
> kmstest_pipe_name(pipes[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",
> kmstest_pipe_name(pipes[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 +1104,17 @@ 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",
> kmstest_pipe_name(pipes[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] 8+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for Convert PSR2 sf & su test to dynamic (rev2)
  2022-09-21 23:04 [igt-dev] [PATCH i-g-t v2 0/2] Convert PSR2 sf & su test to dynamic Jeevan B
  2022-09-21 23:04 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Convert tests " Jeevan B
  2022-09-21 23:04 ` [igt-dev] [PATCH i-g-t v2 2/2] tests/i915/kms_psr2_su: " Jeevan B
@ 2022-09-22 13:25 ` Patchwork
  2022-09-22 14:54 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2022-09-22 13:25 UTC (permalink / raw)
  To: Jeevan B; +Cc: igt-dev

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

== Series Details ==

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

== Summary ==

CI Bug Log - changes from IGT_6660 -> IGTPW_7816
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

  Additional (1): fi-tgl-u2 
  Missing    (1): fi-bdw-samus 

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

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

### 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-b-dp-2:
    - {bat-dg2-11}:       [PASS][1] -> [FAIL][2] +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/bat-dg2-11/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-2.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/bat-dg2-11/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-dp-2.html

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

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

### IGT changes ###

#### Issues hit ####

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

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

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-bdw-5557u:       NOTRUN -> [SKIP][6] ([fdo#109271] / [fdo#111827])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/fi-bdw-5557u/igt@kms_chamelium@common-hpd-after-suspend.html

  * igt@kms_chamelium@hdmi-edid-read:
    - fi-tgl-u2:          NOTRUN -> [SKIP][7] ([fdo#109284] / [fdo#111827]) +7 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/fi-tgl-u2/igt@kms_chamelium@hdmi-edid-read.html

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

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

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

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

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s3@smem:
    - {bat-rplp-1}:       [DMESG-WARN][12] ([i915#2867]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/bat-rplp-1/igt@gem_exec_suspend@basic-s3@smem.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/bat-rplp-1/igt@gem_exec_suspend@basic-s3@smem.html
    - {bat-adlm-1}:       [DMESG-WARN][14] ([i915#2867]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/bat-adlm-1/igt@gem_exec_suspend@basic-s3@smem.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/bat-adlm-1/igt@gem_exec_suspend@basic-s3@smem.html

  * igt@i915_selftest@live@requests:
    - {bat-rpls-1}:       [INCOMPLETE][16] ([i915#4983] / [i915#6257] / [i915#6380]) -> [PASS][17]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/bat-rpls-1/igt@i915_selftest@live@requests.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/bat-rpls-1/igt@i915_selftest@live@requests.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#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [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#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#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#6257]: https://gitlab.freedesktop.org/drm/intel/issues/6257
  [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
  [i915#6380]: https://gitlab.freedesktop.org/drm/intel/issues/6380
  [i915#6818]: https://gitlab.freedesktop.org/drm/intel/issues/6818


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6660 -> IGTPW_7816

  CI-20190529: 20190529
  CI_DRM_12166: 3e89f6dc5d22dcc4f56bed3abade8107c95815b3 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7816: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/index.html
  IGT_6660: 129bea58b9424f0a0da995311a219fdf57732594 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* [igt-dev] ✗ Fi.CI.IGT: failure for Convert PSR2 sf & su test to dynamic (rev2)
  2022-09-21 23:04 [igt-dev] [PATCH i-g-t v2 0/2] Convert PSR2 sf & su test to dynamic Jeevan B
                   ` (2 preceding siblings ...)
  2022-09-22 13:25 ` [igt-dev] ✓ Fi.CI.BAT: success for Convert PSR2 sf & su test to dynamic (rev2) Patchwork
@ 2022-09-22 14:54 ` Patchwork
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2022-09-22 14:54 UTC (permalink / raw)
  To: Jeevan B; +Cc: igt-dev

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

== Series Details ==

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

== Summary ==

CI Bug Log - changes from IGT_6660_full -> IGTPW_7816_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_7816_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_7816_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_7816/index.html

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@gem_create@hog-create@smem0:
    - shard-apl:          [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl1/igt@gem_create@hog-create@smem0.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl2/igt@gem_create@hog-create@smem0.html

  
#### Warnings ####

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-tglb:         [SKIP][3] ([i915#1911]) -> [SKIP][4] +3 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-tglb7/igt@kms_psr2_su@page_flip-nv12.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb3/igt@kms_psr2_su@page_flip-nv12.html

  
#### Suppressed ####

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

  * igt@kms_cursor_crc@cursor-random-256x256:
    - {shard-rkl}:        [SKIP][5] ([i915#4098]) -> [SKIP][6] +1 similar issue
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-2/igt@kms_cursor_crc@cursor-random-256x256.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-5/igt@kms_cursor_crc@cursor-random-256x256.html

  * igt@kms_cursor_crc@cursor-sliding-32x10:
    - {shard-rkl}:        NOTRUN -> [SKIP][7] +2 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-5/igt@kms_cursor_crc@cursor-sliding-32x10.html

  
New tests
---------

  New tests have been introduced between IGT_6660_full and IGTPW_7816_full:

### New IGT tests (16) ###

  * igt@kms_flip_event_leak@basic@pipe-a-dp-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.25] s

  * igt@kms_flip_event_leak@basic@pipe-a-edp-1:
    - Statuses : 2 pass(s)
    - Exec time: [0.41, 0.51] s

  * igt@kms_flip_event_leak@basic@pipe-a-hdmi-a-1:
    - Statuses : 2 pass(s)
    - Exec time: [0.25, 0.56] s

  * igt@kms_flip_event_leak@basic@pipe-a-hdmi-a-2:
    - Statuses : 1 pass(s)
    - Exec time: [0.39] s

  * igt@kms_flip_event_leak@basic@pipe-a-vga-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.12] s

  * igt@kms_flip_event_leak@basic@pipe-b-dp-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.35] s

  * igt@kms_flip_event_leak@basic@pipe-b-edp-1:
    - Statuses : 2 pass(s)
    - Exec time: [1.20, 1.23] s

  * igt@kms_flip_event_leak@basic@pipe-b-hdmi-a-1:
    - Statuses : 2 pass(s)
    - Exec time: [0.16, 0.36] s

  * igt@kms_flip_event_leak@basic@pipe-b-hdmi-a-2:
    - Statuses : 1 pass(s)
    - Exec time: [0.39] s

  * igt@kms_flip_event_leak@basic@pipe-b-vga-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.14] s

  * igt@kms_flip_event_leak@basic@pipe-c-dp-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.36] s

  * igt@kms_flip_event_leak@basic@pipe-c-edp-1:
    - Statuses : 2 pass(s)
    - Exec time: [1.18, 1.21] s

  * igt@kms_flip_event_leak@basic@pipe-c-hdmi-a-1:
    - Statuses : 2 pass(s)
    - Exec time: [0.16, 0.37] s

  * igt@kms_flip_event_leak@basic@pipe-c-hdmi-a-2:
    - Statuses : 1 pass(s)
    - Exec time: [0.33] s

  * igt@kms_flip_event_leak@basic@pipe-d-edp-1:
    - Statuses : 1 pass(s)
    - Exec time: [1.18] s

  * igt@kms_flip_event_leak@basic@pipe-d-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.17] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@feature_discovery@psr2:
    - shard-iclb:         [PASS][8] -> [SKIP][9] ([i915#658])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb2/igt@feature_discovery@psr2.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb8/igt@feature_discovery@psr2.html

  * igt@gem_ctx_sseu@invalid-args:
    - shard-tglb:         NOTRUN -> [SKIP][10] ([i915#280])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb8/igt@gem_ctx_sseu@invalid-args.html

  * igt@gem_exec_balancer@parallel-bb-first:
    - shard-iclb:         [PASS][11] -> [SKIP][12] ([i915#4525]) +3 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb2/igt@gem_exec_balancer@parallel-bb-first.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb8/igt@gem_exec_balancer@parallel-bb-first.html

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

  * igt@gem_exec_fair@basic-none@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][14] ([i915#2842]) +1 similar issue
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-glk3/igt@gem_exec_fair@basic-none@rcs0.html

  * igt@gem_exec_fair@basic-none@vcs1:
    - shard-iclb:         NOTRUN -> [FAIL][15] ([i915#2842]) +4 similar issues
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb1/igt@gem_exec_fair@basic-none@vcs1.html

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

  * igt@gem_exec_fair@basic-pace@rcs0:
    - shard-glk:          [PASS][18] -> [FAIL][19] ([i915#2842])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-glk6/igt@gem_exec_fair@basic-pace@rcs0.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-glk5/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@gem_lmem_swapping@basic:
    - shard-apl:          NOTRUN -> [SKIP][20] ([fdo#109271] / [i915#4613])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl3/igt@gem_lmem_swapping@basic.html

  * igt@gem_mmap_gtt@fault-concurrent-x:
    - shard-snb:          [PASS][21] -> [INCOMPLETE][22] ([i915#5161])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-snb4/igt@gem_mmap_gtt@fault-concurrent-x.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-snb6/igt@gem_mmap_gtt@fault-concurrent-x.html

  * igt@gem_pxp@create-regular-context-2:
    - shard-iclb:         NOTRUN -> [SKIP][23] ([i915#4270])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb6/igt@gem_pxp@create-regular-context-2.html

  * igt@gem_pxp@fail-invalid-protected-context:
    - shard-tglb:         NOTRUN -> [SKIP][24] ([i915#4270]) +1 similar issue
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb2/igt@gem_pxp@fail-invalid-protected-context.html

  * igt@gem_render_copy@y-tiled-mc-ccs-to-y-tiled-ccs:
    - shard-iclb:         NOTRUN -> [SKIP][25] ([i915#768])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb4/igt@gem_render_copy@y-tiled-mc-ccs-to-y-tiled-ccs.html

  * igt@gen7_exec_parse@basic-offset:
    - shard-iclb:         NOTRUN -> [SKIP][26] ([fdo#109289]) +1 similar issue
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb3/igt@gen7_exec_parse@basic-offset.html

  * igt@gen7_exec_parse@load-register-reg:
    - shard-tglb:         NOTRUN -> [SKIP][27] ([fdo#109289]) +1 similar issue
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb7/igt@gen7_exec_parse@load-register-reg.html

  * igt@gen9_exec_parse@bb-start-param:
    - shard-iclb:         NOTRUN -> [SKIP][28] ([i915#2856])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb1/igt@gen9_exec_parse@bb-start-param.html
    - shard-tglb:         NOTRUN -> [SKIP][29] ([i915#2527] / [i915#2856])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb5/igt@gen9_exec_parse@bb-start-param.html

  * igt@i915_pm_dc@dc5-dpms:
    - shard-tglb:         [PASS][30] -> [FAIL][31] ([i915#3989])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-tglb1/igt@i915_pm_dc@dc5-dpms.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb7/igt@i915_pm_dc@dc5-dpms.html

  * igt@i915_pm_dc@dc6-psr:
    - shard-iclb:         [PASS][32] -> [FAIL][33] ([i915#3989] / [i915#454])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb5/igt@i915_pm_dc@dc6-psr.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb3/igt@i915_pm_dc@dc6-psr.html

  * igt@i915_pm_rpm@dpms-non-lpsp:
    - shard-tglb:         NOTRUN -> [SKIP][34] ([fdo#111644] / [i915#1397] / [i915#2411])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb8/igt@i915_pm_rpm@dpms-non-lpsp.html

  * igt@i915_pm_rps@engine-order:
    - shard-apl:          [PASS][35] -> [FAIL][36] ([i915#6537])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl7/igt@i915_pm_rps@engine-order.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl1/igt@i915_pm_rps@engine-order.html

  * igt@i915_selftest@live@gt_heartbeat:
    - shard-apl:          [PASS][37] -> [DMESG-FAIL][38] ([i915#5334])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl7/igt@i915_selftest@live@gt_heartbeat.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl3/igt@i915_selftest@live@gt_heartbeat.html

  * igt@i915_selftest@live@hangcheck:
    - shard-tglb:         [PASS][39] -> [DMESG-WARN][40] ([i915#5591])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-tglb2/igt@i915_selftest@live@hangcheck.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb8/igt@i915_selftest@live@hangcheck.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-180:
    - shard-tglb:         NOTRUN -> [SKIP][41] ([i915#5286])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb5/igt@kms_big_fb@4-tiled-8bpp-rotate-180.html
    - shard-iclb:         NOTRUN -> [SKIP][42] ([i915#5286])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb1/igt@kms_big_fb@4-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-90:
    - shard-iclb:         NOTRUN -> [SKIP][43] ([fdo#110723])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb3/igt@kms_big_fb@yf-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-tglb:         NOTRUN -> [SKIP][44] ([fdo#111615]) +1 similar issue
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb8/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_ccs@pipe-c-bad-aux-stride-y_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][45] ([i915#3689]) +2 similar issues
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb7/igt@kms_ccs@pipe-c-bad-aux-stride-y_tiled_ccs.html

  * igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][46] ([fdo#109271] / [i915#3886]) +4 similar issues
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl8/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-c-crc-primary-rotation-180-y_tiled_gen12_mc_ccs:
    - shard-iclb:         NOTRUN -> [SKIP][47] ([fdo#109278] / [i915#3886]) +1 similar issue
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb2/igt@kms_ccs@pipe-c-crc-primary-rotation-180-y_tiled_gen12_mc_ccs.html
    - shard-tglb:         NOTRUN -> [SKIP][48] ([i915#3689] / [i915#3886])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb5/igt@kms_ccs@pipe-c-crc-primary-rotation-180-y_tiled_gen12_mc_ccs.html
    - shard-glk:          NOTRUN -> [SKIP][49] ([fdo#109271] / [i915#3886]) +1 similar issue
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-glk7/igt@kms_ccs@pipe-c-crc-primary-rotation-180-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-c-crc-primary-rotation-180-yf_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][50] ([fdo#111615] / [i915#3689]) +1 similar issue
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb5/igt@kms_ccs@pipe-c-crc-primary-rotation-180-yf_tiled_ccs.html

  * igt@kms_chamelium@hdmi-crc-fast:
    - shard-glk:          NOTRUN -> [SKIP][51] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-glk7/igt@kms_chamelium@hdmi-crc-fast.html
    - shard-iclb:         NOTRUN -> [SKIP][52] ([fdo#109284] / [fdo#111827]) +1 similar issue
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb2/igt@kms_chamelium@hdmi-crc-fast.html

  * igt@kms_chamelium@vga-hpd-fast:
    - shard-snb:          NOTRUN -> [SKIP][53] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-snb5/igt@kms_chamelium@vga-hpd-fast.html
    - shard-apl:          NOTRUN -> [SKIP][54] ([fdo#109271] / [fdo#111827]) +2 similar issues
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl7/igt@kms_chamelium@vga-hpd-fast.html
    - shard-tglb:         NOTRUN -> [SKIP][55] ([fdo#109284] / [fdo#111827]) +1 similar issue
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb2/igt@kms_chamelium@vga-hpd-fast.html

  * igt@kms_color@ctm-0-25@pipe-b-dp-1:
    - shard-apl:          NOTRUN -> [FAIL][56] ([i915#315]) +2 similar issues
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl1/igt@kms_color@ctm-0-25@pipe-b-dp-1.html

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

  * igt@kms_cursor_crc@cursor-offscreen-32x32:
    - shard-tglb:         NOTRUN -> [SKIP][58] ([i915#3555]) +1 similar issue
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb2/igt@kms_cursor_crc@cursor-offscreen-32x32.html

  * igt@kms_cursor_crc@cursor-suspend@pipe-c-edp-1:
    - shard-iclb:         [PASS][59] -> [DMESG-WARN][60] ([i915#2867])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb4/igt@kms_cursor_crc@cursor-suspend@pipe-c-edp-1.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb5/igt@kms_cursor_crc@cursor-suspend@pipe-c-edp-1.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic:
    - shard-tglb:         NOTRUN -> [SKIP][61] ([fdo#109274] / [fdo#111825])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb1/igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size:
    - shard-glk:          [PASS][62] -> [FAIL][63] ([i915#2346]) +1 similar issue
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-glk8/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html

  * igt@kms_flip@2x-flip-vs-absolute-wf_vblank:
    - shard-tglb:         NOTRUN -> [SKIP][64] ([fdo#109274] / [fdo#111825] / [i915#3637]) +2 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb3/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-wf_vblank-interruptible:
    - shard-iclb:         NOTRUN -> [SKIP][65] ([fdo#109274]) +2 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb3/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html

  * igt@kms_flip@2x-plain-flip-fb-recreate:
    - shard-apl:          NOTRUN -> [SKIP][66] ([fdo#109271]) +112 similar issues
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl3/igt@kms_flip@2x-plain-flip-fb-recreate.html

  * igt@kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-downscaling@pipe-a-default-mode:
    - shard-iclb:         NOTRUN -> [SKIP][67] ([i915#3555]) +1 similar issue
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb2/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling@pipe-a-valid-mode:
    - shard-tglb:         NOTRUN -> [SKIP][68] ([i915#2587] / [i915#2672])
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-valid-mode:
    - shard-iclb:         NOTRUN -> [SKIP][69] ([i915#2587] / [i915#2672]) +1 similar issue
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-valid-mode.html

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

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

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

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-cpu:
    - shard-snb:          NOTRUN -> [SKIP][73] ([fdo#109271]) +76 similar issues
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-snb7/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-tglb:         NOTRUN -> [SKIP][74] ([fdo#109280] / [fdo#111825]) +8 similar issues
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-wc:
    - shard-glk:          NOTRUN -> [SKIP][75] ([fdo#109271]) +42 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-glk3/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-wc.html
    - shard-iclb:         NOTRUN -> [SKIP][76] ([fdo#109280]) +6 similar issues
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max:
    - shard-apl:          NOTRUN -> [FAIL][77] ([fdo#108145] / [i915#265]) +1 similar issue
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl3/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max.html

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
    - shard-apl:          [PASS][78] -> [FAIL][79] ([fdo#108145] / [i915#265])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl6/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl2/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html

  * igt@kms_prime@basic-modeset-hybrid:
    - shard-tglb:         NOTRUN -> [SKIP][80] ([i915#6524])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb1/igt@kms_prime@basic-modeset-hybrid.html
    - shard-iclb:         NOTRUN -> [SKIP][81] ([i915#6524])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb1/igt@kms_prime@basic-modeset-hybrid.html

  * igt@kms_psr2_sf@cursor-plane-update-sf:
    - shard-apl:          NOTRUN -> [SKIP][82] ([fdo#109271] / [i915#658]) +1 similar issue
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl3/igt@kms_psr2_sf@cursor-plane-update-sf.html
    - shard-tglb:         NOTRUN -> [SKIP][83] ([i915#2920])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb8/igt@kms_psr2_sf@cursor-plane-update-sf.html
    - shard-glk:          NOTRUN -> [SKIP][84] ([fdo#109271] / [i915#658])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-glk5/igt@kms_psr2_sf@cursor-plane-update-sf.html
    - shard-iclb:         NOTRUN -> [SKIP][85] ([fdo#111068] / [i915#658])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb7/igt@kms_psr2_sf@cursor-plane-update-sf.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-iclb:         [PASS][86] -> [SKIP][87] ([fdo#109642] / [fdo#111068] / [i915#658])
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb2/igt@kms_psr2_su@page_flip-xrgb8888.html
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb7/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@psr2_cursor_mmap_gtt:
    - shard-tglb:         NOTRUN -> [FAIL][88] ([i915#132] / [i915#3467]) +1 similar issue
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb3/igt@kms_psr@psr2_cursor_mmap_gtt.html

  * igt@kms_psr@psr2_sprite_render:
    - shard-iclb:         [PASS][89] -> [SKIP][90] ([fdo#109441]) +3 similar issues
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb2/igt@kms_psr@psr2_sprite_render.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb3/igt@kms_psr@psr2_sprite_render.html

  * igt@kms_vblank@pipe-d-query-forked-hang:
    - shard-iclb:         NOTRUN -> [SKIP][91] ([fdo#109278]) +6 similar issues
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb6/igt@kms_vblank@pipe-d-query-forked-hang.html

  * igt@kms_writeback@writeback-invalid-parameters:
    - shard-apl:          NOTRUN -> [SKIP][92] ([fdo#109271] / [i915#2437])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl6/igt@kms_writeback@writeback-invalid-parameters.html

  * igt@nouveau_crc@pipe-c-ctx-flip-detection:
    - shard-iclb:         NOTRUN -> [SKIP][93] ([i915#2530])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb3/igt@nouveau_crc@pipe-c-ctx-flip-detection.html
    - shard-tglb:         NOTRUN -> [SKIP][94] ([i915#2530]) +1 similar issue
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb1/igt@nouveau_crc@pipe-c-ctx-flip-detection.html

  * igt@perf@polling-parameterized:
    - shard-glk:          [PASS][95] -> [FAIL][96] ([i915#5639])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-glk6/igt@perf@polling-parameterized.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-glk9/igt@perf@polling-parameterized.html

  * igt@perf_pmu@rc6-suspend:
    - shard-snb:          [PASS][97] -> [FAIL][98] ([fdo#103375])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-snb2/igt@perf_pmu@rc6-suspend.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-snb6/igt@perf_pmu@rc6-suspend.html

  * igt@prime_nv_api@i915_nv_import_twice:
    - shard-tglb:         NOTRUN -> [SKIP][99] ([fdo#109291]) +2 similar issues
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb7/igt@prime_nv_api@i915_nv_import_twice.html

  * igt@prime_nv_test@i915_import_pread_pwrite:
    - shard-iclb:         NOTRUN -> [SKIP][100] ([fdo#109291]) +2 similar issues
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb2/igt@prime_nv_test@i915_import_pread_pwrite.html

  * igt@prime_vgem@fence-write-hang:
    - shard-tglb:         NOTRUN -> [SKIP][101] ([fdo#109295])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb3/igt@prime_vgem@fence-write-hang.html

  * igt@sysfs_clients@busy:
    - shard-tglb:         NOTRUN -> [SKIP][102] ([i915#2994])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb7/igt@sysfs_clients@busy.html

  * igt@sysfs_clients@split-50:
    - shard-apl:          NOTRUN -> [SKIP][103] ([fdo#109271] / [i915#2994])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl3/igt@sysfs_clients@split-50.html

  
#### Possible fixes ####

  * igt@fbdev@unaligned-write:
    - {shard-rkl}:        [SKIP][104] ([i915#2582]) -> [PASS][105]
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-1/igt@fbdev@unaligned-write.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-5/igt@fbdev@unaligned-write.html

  * igt@gem_ctx_exec@basic-nohangcheck:
    - shard-tglb:         [FAIL][106] ([i915#6268]) -> [PASS][107]
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-tglb7/igt@gem_ctx_exec@basic-nohangcheck.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb3/igt@gem_ctx_exec@basic-nohangcheck.html

  * igt@gem_eio@in-flight-contexts-10ms:
    - {shard-rkl}:        [TIMEOUT][108] ([i915#3063]) -> [PASS][109]
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-2/igt@gem_eio@in-flight-contexts-10ms.html
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-1/igt@gem_eio@in-flight-contexts-10ms.html

  * igt@gem_eio@reset-stress:
    - shard-tglb:         [FAIL][110] ([i915#5784]) -> [PASS][111]
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-tglb3/igt@gem_eio@reset-stress.html
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb8/igt@gem_eio@reset-stress.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-tglb:         [FAIL][112] ([i915#2842]) -> [PASS][113]
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-tglb3/igt@gem_exec_fair@basic-none-share@rcs0.html
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb5/igt@gem_exec_fair@basic-none-share@rcs0.html
    - shard-glk:          [FAIL][114] ([i915#2842]) -> [PASS][115]
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-glk6/igt@gem_exec_fair@basic-none-share@rcs0.html
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-glk7/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-iclb:         [FAIL][116] ([i915#2842]) -> [PASS][117]
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb4/igt@gem_exec_fair@basic-throttle@rcs0.html
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb5/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@gem_exec_reloc@basic-wc-read-noreloc:
    - {shard-rkl}:        [SKIP][118] ([i915#3281]) -> [PASS][119] +5 similar issues
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-1/igt@gem_exec_reloc@basic-wc-read-noreloc.html
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-5/igt@gem_exec_reloc@basic-wc-read-noreloc.html

  * igt@gem_pwrite@basic-self:
    - {shard-rkl}:        [SKIP][120] ([i915#3282]) -> [PASS][121] +7 similar issues
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-6/igt@gem_pwrite@basic-self.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-5/igt@gem_pwrite@basic-self.html

  * igt@gen9_exec_parse@bb-start-out:
    - {shard-rkl}:        [SKIP][122] ([i915#2527]) -> [PASS][123] +1 similar issue
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-1/igt@gen9_exec_parse@bb-start-out.html
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-5/igt@gen9_exec_parse@bb-start-out.html

  * igt@i915_pm_dc@dc9-dpms:
    - {shard-rkl}:        [SKIP][124] ([i915#3361]) -> [PASS][125]
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-5/igt@i915_pm_dc@dc9-dpms.html
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-4/igt@i915_pm_dc@dc9-dpms.html
    - shard-apl:          [SKIP][126] ([fdo#109271]) -> [PASS][127]
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl2/igt@i915_pm_dc@dc9-dpms.html
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl3/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_rps@waitboost:
    - {shard-rkl}:        [FAIL][128] ([i915#4016]) -> [PASS][129]
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-1/igt@i915_pm_rps@waitboost.html
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-5/igt@i915_pm_rps@waitboost.html

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

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - {shard-rkl}:        [SKIP][132] ([i915#1849] / [i915#4098]) -> [PASS][133] +9 similar issues
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-tglb:         [SKIP][134] ([i915#433]) -> [PASS][135]
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-tglb3/igt@kms_hdmi_inject@inject-audio.html
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglb7/igt@kms_hdmi_inject@inject-audio.html
    - {shard-tglu}:       [SKIP][136] ([i915#433]) -> [PASS][137]
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-tglu-6/igt@kms_hdmi_inject@inject-audio.html
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-tglu-4/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-a-edp-1:
    - shard-iclb:         [SKIP][138] ([i915#5235]) -> [PASS][139] +2 similar issues
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb2/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-a-edp-1.html
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb4/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-a-edp-1.html

  * igt@kms_psr@primary_render:
    - {shard-rkl}:        [SKIP][140] ([i915#1072]) -> [PASS][141] +2 similar issues
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-5/igt@kms_psr@primary_render.html
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-6/igt@kms_psr@primary_render.html

  * igt@kms_psr@psr2_basic:
    - shard-iclb:         [SKIP][142] ([fdo#109441]) -> [PASS][143] +1 similar issue
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb4/igt@kms_psr@psr2_basic.html
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb2/igt@kms_psr@psr2_basic.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-iclb:         [SKIP][144] ([i915#5519]) -> [PASS][145]
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb1/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb2/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_vblank@pipe-b-ts-continuation-idle:
    - {shard-rkl}:        [SKIP][146] ([i915#1845] / [i915#4098]) -> [PASS][147] +11 similar issues
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-1/igt@kms_vblank@pipe-b-ts-continuation-idle.html
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-6/igt@kms_vblank@pipe-b-ts-continuation-idle.html

  * igt@perf@polling-parameterized:
    - {shard-rkl}:        [FAIL][148] ([i915#5639]) -> [PASS][149]
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-rkl-1/igt@perf@polling-parameterized.html
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-rkl-4/igt@perf@polling-parameterized.html

  * igt@perf_pmu@rc6-suspend:
    - shard-apl:          [DMESG-WARN][150] ([i915#180]) -> [PASS][151] +2 similar issues
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl8/igt@perf_pmu@rc6-suspend.html
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl1/igt@perf_pmu@rc6-suspend.html

  
#### Warnings ####

  * igt@kms_psr2_sf@overlay-plane-move-continuous-sf:
    - shard-iclb:         [SKIP][152] ([i915#2920]) -> [SKIP][153] ([i915#658])
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-iclb2/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-iclb7/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html

  * igt@runner@aborted:
    - shard-apl:          ([FAIL][154], [FAIL][155], [FAIL][156], [FAIL][157], [FAIL][158]) ([i915#180] / [i915#3002] / [i915#4312]) -> ([FAIL][159], [FAIL][160], [FAIL][161]) ([i915#3002] / [i915#4312])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl7/igt@runner@aborted.html
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl6/igt@runner@aborted.html
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl8/igt@runner@aborted.html
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl8/igt@runner@aborted.html
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6660/shard-apl8/igt@runner@aborted.html
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl1/igt@runner@aborted.html
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl2/igt@runner@aborted.html
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/shard-apl2/igt@runner@aborted.html

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

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [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#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300
  [fdo#109302]: https://bugs.freedesktop.org/show_bug.cgi?id=109302
  [fdo#109307]: https://bugs.freedesktop.org/show_bug.cgi?id=109307
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110254]: https://bugs.freedesktop.org/show_bug.cgi?id=110254
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1063]: https://gitlab.freedesktop.org/drm/intel/issues/1063
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1257]: https://gitlab.freedesktop.org/drm/intel/issues/1257
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1911]: https://gitlab.freedesktop.org/drm/intel/issues/1911
  [i915#2232]: https://gitlab.freedesktop.org/drm/intel/issues/2232
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2411]: https://gitlab.freedesktop.org/drm/intel/issues/2411
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2530]: https://gitlab.freedesktop.org/drm/intel/issues/2530
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [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#2867]: https://gitlab.freedesktop.org/drm/intel/issues/2867
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994
  [i915#3002]: https://gitlab.freedesktop.org/drm/intel/issues/3002
  [i915#3063]: https://gitlab.freedesktop.org/drm/intel/issues/3063
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361
  [i915#3467]: https://gitlab.freedesktop.org/drm/intel/issues/3467
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3639]: https://gitlab.freedesktop.org/drm/intel/issues/3639
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3826]: https://gitlab.freedesktop.org/drm/intel/issues/3826
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#3989]: https://gitlab.freedesktop.org/drm/intel/issues/3989
  [i915#4016]: https://gitlab.freedesktop.org/drm/intel/issues/4016
  [i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4171]: https://gitlab.freedesktop.org/drm/intel/issues/4171
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4778]: https://gitlab.freedesktop.org/drm/intel/issues/4778
  [i915#5161]: https://gitlab.freedesktop.org/drm/intel/issues/5161
  [i915#5174]: https://gitlab.freedesktop.org/drm/intel/issues/5174
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#5327]: https://gitlab.freedesktop.org/drm/intel/issues/5327
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5519]: https://gitlab.freedesktop.org/drm/intel/issues/5519
  [i915#5591]: https://gitlab.freedesktop.org/drm/intel/issues/5591
  [i915#5608]: https://gitlab.freedesktop.org/drm/intel/issues/5608
  [i915#5639]: https://gitlab.freedesktop.org/drm/intel/issues/5639
  [i915#5775]: https://gitlab.freedesktop.org/drm/intel/issues/5775
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6258]: https://gitlab.freedesktop.org/drm/intel/issues/6258
  [i915#6259]: https://gitlab.freedesktop.org/drm/intel/issues/6259
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
  [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#6537]: https://gitlab.freedesktop.org/drm/intel/issues/6537
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6590]: https://gitlab.freedesktop.org/drm/intel/issues/6590
  [i915#768]: https://gitlab.freedesktop.org/drm/intel/issues/768


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6660 -> IGTPW_7816

  CI-20190529: 20190529
  CI_DRM_12166: 3e89f6dc5d22dcc4f56bed3abade8107c95815b3 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7816: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7816/index.html
  IGT_6660: 129bea58b9424f0a0da995311a219fdf57732594 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* Re: [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Convert tests to dynamic
  2022-09-22 11:46   ` Hogander, Jouni
@ 2022-09-22 17:44     ` B, Jeevan
  2022-09-23  6:50       ` Hogander, Jouni
  0 siblings, 1 reply; 8+ messages in thread
From: B, Jeevan @ 2022-09-22 17:44 UTC (permalink / raw)
  To: Hogander, Jouni, igt-dev; +Cc: Latvala, Petri

> -----Original Message-----
> From: Hogander, Jouni <jouni.hogander@intel.com>
> Sent: Thursday, September 22, 2022 5:16 PM
> To: igt-dev@lists.freedesktop.org; B, Jeevan <jeevan.b@intel.com>
> Cc: Latvala, Petri <petri.latvala@intel.com>
> Subject: Re: [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Convert tests to
> dynamic
> 
> Hello Jeevan,
> 
> See my comments below.
> 
> On Thu, 2022-09-22 at 04:34 +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)
> >
> > Signed-off-by: Jeevan B <jeevan.b@intel.com>
> > ---
> >  tests/i915/kms_psr2_sf.c | 278 +++++++++++++++++++++++++------------
> > --
> >  1 file changed, 182 insertions(+), 96 deletions(-)
> >
> > diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c index
> > 6612587c..ad1afee1 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,206 @@ 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) {
>

Hi Jouni, 
 
> Did you noticed comment from Petri Latvala about
> for_each_pipe_with_single_output?
> 
> I'm not sure if that is what we want here, because check_psr2_support may
> fail with certain pipe + output combination while with some other it may
> pass?
Yes, using for_each_pipe_with_single_output will not work in case of multi display setup and other monitor
doesn't support PSR2. 
> 
> On the other hand if we store each pipe + output combination we may end
> up having one pipe two times in pipes array. i.e. one pipe is tested two
> times? I'm not sure if this is wanted?
> 
I think we should iterate though all output with all pipes for complete dynamic coverage.  

Thanks 
Jeevan B  
> > +                       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",
> > kmstest_pipe_name(pipes[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",
> > kmstest_pipe_name(pipes[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",
> > kmstest_pipe_name(pipes[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",
> > kmstest_pipe_name(pipes[i])) {
> > +                               igt_output_set_pipe(outputs[i],
> > pipes[i]);
> > +                               data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> 
> You are missing damge_area_count setting here.
> 
> > +                               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",
> > kmstest_pipe_name(pipes[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",
> > kmstest_pipe_name(pipes[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",
> > kmstest_pipe_name(pipes[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",
> > kmstest_pipe_name(pipes[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",
> > kmstest_pipe_name(pipes[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",
> > kmstest_pipe_name(pipes[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",
> > kmstest_pipe_name(pipes[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",
> > kmstest_pipe_name(pipes[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 +1104,17 @@ 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",
> > kmstest_pipe_name(pipes[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] 8+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Convert tests to dynamic
  2022-09-22 17:44     ` B, Jeevan
@ 2022-09-23  6:50       ` Hogander, Jouni
  0 siblings, 0 replies; 8+ messages in thread
From: Hogander, Jouni @ 2022-09-23  6:50 UTC (permalink / raw)
  To: igt-dev, B, Jeevan; +Cc: Latvala, Petri

On Thu, 2022-09-22 at 17:44 +0000, B, Jeevan wrote:
> > -----Original Message-----
> > From: Hogander, Jouni <jouni.hogander@intel.com>
> > Sent: Thursday, September 22, 2022 5:16 PM
> > To: igt-dev@lists.freedesktop.org; B, Jeevan <jeevan.b@intel.com>
> > Cc: Latvala, Petri <petri.latvala@intel.com>
> > Subject: Re: [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Convert
> > tests to
> > dynamic
> > 
> > Hello Jeevan,
> > 
> > See my comments below.
> > 
> > On Thu, 2022-09-22 at 04:34 +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)
> > > 
> > > Signed-off-by: Jeevan B <jeevan.b@intel.com>
> > > ---
> > >  tests/i915/kms_psr2_sf.c | 278 +++++++++++++++++++++++++--------
> > > ----
> > > --
> > >  1 file changed, 182 insertions(+), 96 deletions(-)
> > > 
> > > diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
> > > index
> > > 6612587c..ad1afee1 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,206 @@ 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.deb
> > > ugfs
> > > _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) {
> > 
> 
> Hi Jouni, 
>  
> > Did you noticed comment from Petri Latvala about
> > for_each_pipe_with_single_output?
> > 
> > I'm not sure if that is what we want here, because
> > check_psr2_support may
> > fail with certain pipe + output combination while with some other
> > it may
> > pass?
> Yes, using for_each_pipe_with_single_output will not work in case of
> multi display setup and other monitor
> doesn't support PSR2. 
> > 
> > On the other hand if we store each pipe + output combination we may
> > end
> > up having one pipe two times in pipes array. i.e. one pipe is
> > tested two
> > times? I'm not sure if this is wanted?
> > 
> I think we should iterate though all output with all pipes for
> complete dynamic coverage. 

Ok, then I think we should add output part into dynamic name:

lib/igt_kms.h:const char *igt_output_name(igt_output_t *output);

> 
> Thanks 
> Jeevan B  
> > > +                       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",
> > > kmstest_pipe_name(pipes[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",
> > > kmstest_pipe_name(pipes[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",
> > > kmstest_pipe_name(pipes[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",
> > > kmstest_pipe_name(pipes[i])) {
> > > +                               igt_output_set_pipe(outputs[i],
> > > pipes[i]);
> > > +                               data.test_plane_id =
> > > DRM_PLANE_TYPE_CURSOR;
> > 
> > You are missing damge_area_count setting here.
> > 
> > > +                               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",
> > > kmstest_pipe_name(pipes[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",
> > > kmstest_pipe_name(pipes[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",
> > > kmstest_pipe_name(pipes[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",
> > > kmstest_pipe_name(pipes[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",
> > > kmstest_pipe_name(pipes[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",
> > > kmstest_pipe_name(pipes[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",
> > > kmstest_pipe_name(pipes[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",
> > > kmstest_pipe_name(pipes[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 +1104,17 @@ 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",
> > > kmstest_pipe_name(pipes[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] 8+ messages in thread

end of thread, other threads:[~2022-09-23  6:50 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-21 23:04 [igt-dev] [PATCH i-g-t v2 0/2] Convert PSR2 sf & su test to dynamic Jeevan B
2022-09-21 23:04 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Convert tests " Jeevan B
2022-09-22 11:46   ` Hogander, Jouni
2022-09-22 17:44     ` B, Jeevan
2022-09-23  6:50       ` Hogander, Jouni
2022-09-21 23:04 ` [igt-dev] [PATCH i-g-t v2 2/2] tests/i915/kms_psr2_su: " Jeevan B
2022-09-22 13:25 ` [igt-dev] ✓ Fi.CI.BAT: success for Convert PSR2 sf & su test to dynamic (rev2) Patchwork
2022-09-22 14:54 ` [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.