All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 0/2] Psr2 dsc testcases
@ 2023-01-25  9:07 Jouni Högander
  2023-01-25  9:07 ` [igt-dev] [PATCH i-g-t 1/2] tests/i915/kms_psr2_sf: Some cleanups after Jouni Högander
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Jouni Högander @ 2023-01-25  9:07 UTC (permalink / raw)
  To: igt-dev

This patch set is doing some cleanup to kms_psr2_sf testcases and adding
mechanism to stress other features with PSR2. It is utilizing this new
mechanism for testing DSC with PSR2.

Cc: Jeevan B <jeevan.b@intel.com>
Cc: Swati Sharma <swati2.sharma@intel.com>

Jouni Högander (2):
  tests/i915/kms_psr2_sf: Some cleanups after
  kms_psr2_sf: Add dynamic subtests which use DSC feature

 tests/i915/kms_psr2_sf.c | 368 +++++++++++++++++++++++++--------------
 tests/meson.build        |   9 +-
 2 files changed, 246 insertions(+), 131 deletions(-)

-- 
2.34.1

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

* [igt-dev] [PATCH i-g-t 1/2] tests/i915/kms_psr2_sf: Some cleanups after
  2023-01-25  9:07 [igt-dev] [PATCH i-g-t 0/2] Psr2 dsc testcases Jouni Högander
@ 2023-01-25  9:07 ` Jouni Högander
  2023-01-30  9:12   ` B, Jeevan
  2023-01-25  9:07 ` [igt-dev] [PATCH i-g-t 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature Jouni Högander
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Jouni Högander @ 2023-01-25  9:07 UTC (permalink / raw)
  To: igt-dev

Handle setting output for pipe in prepare and remove separate setup_output.
Carry all test parameters in data structure

Cc: Jeevan B <jeevan.b@intel.com>
Cc: Swati Sharma <swati2.sharma@intel.com>
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 tests/i915/kms_psr2_sf.c | 145 ++++++++++++++++++---------------------
 1 file changed, 68 insertions(+), 77 deletions(-)

diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
index cfde6cfc..078884ac 100644
--- a/tests/i915/kms_psr2_sf.c
+++ b/tests/i915/kms_psr2_sf.c
@@ -85,6 +85,7 @@ typedef struct {
 	cairo_t *cr;
 	uint32_t screen_changes;
 	int cur_x, cur_y;
+	enum pipe pipe;
 } data_t;
 
 static const char *op_str(enum operations op)
@@ -103,30 +104,10 @@ static const char *op_str(enum operations op)
 	return name[op];
 }
 
-static void setup_output(data_t *data)
-{
-	igt_display_t *display = &data->display;
-	igt_output_t *output;
-	enum pipe pipe;
-
-	for_each_pipe_with_valid_output(display, pipe, output) {
-		drmModeConnectorPtr c = output->config.connector;
-
-		if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
-			continue;
-
-		igt_output_set_pipe(output, pipe);
-		data->output = output;
-		data->mode = igt_output_get_mode(output);
-
-		return;
-	}
-}
-
 static void display_init(data_t *data)
 {
 	igt_display_require(&data->display, data->drm_fd);
-	setup_output(data);
+	igt_display_reset(&data->display);
 }
 
 static void display_fini(data_t *data)
@@ -237,11 +218,15 @@ 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, igt_output_t *output)
+static void prepare(data_t *data)
 {
+	igt_output_t *output = data->output;
 	igt_plane_t *primary, *sprite = NULL, *cursor = NULL;
 	int fb_w, fb_h, x, y, view_w, view_h;
 
+	igt_output_set_pipe(output, data->pipe);
+	data->mode = igt_output_get_mode(output);
+
 	if (data->big_fb_test) {
 		fb_w = data->big_fb_width;
 		fb_h = data->big_fb_height;
@@ -808,8 +793,9 @@ static void run(data_t *data)
 	}
 }
 
-static void cleanup(data_t *data, igt_output_t *output)
+static void cleanup(data_t *data)
 {
+	igt_output_t *output = data->output;
 	igt_plane_t *primary;
 	igt_plane_t *sprite;
 
@@ -838,20 +824,13 @@ static void cleanup(data_t *data, igt_output_t *output)
 	igt_remove_fb(data->drm_fd, &data->fb_test);
 }
 
-static int check_psr2_support(data_t *data, enum pipe pipe)
+static int check_psr2_support(data_t *data)
 {
 	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);
+	prepare(data);
 	status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2);
-	cleanup(data, output);
+	cleanup(data);
 
 	return status;
 }
@@ -861,7 +840,6 @@ igt_main
 	data_t data = {};
 	igt_output_t *outputs[IGT_MAX_PIPES * IGT_MAX_PIPES];
 	int i, j;
-	enum pipe pipe;
 	int pipes[IGT_MAX_PIPES * IGT_MAX_PIPES];
 	int n_pipes = 0;
 
@@ -898,9 +876,9 @@ igt_main
 		igt_require_f(psr2_selective_fetch_check(data.debugfs_fd),
 			      "PSR2 selective fetch not enabled\n");
 
-		for_each_pipe_with_valid_output(&data.display, pipe, data.output) {
-			if (check_psr2_support(&data, pipe)) {
-				pipes[n_pipes] = pipe;
+		for_each_pipe_with_valid_output(&data.display, data.pipe, data.output) {
+			if (check_psr2_support(&data)) {
+				pipes[n_pipes] = data.pipe;
 				outputs[n_pipes] = data.output;
 				n_pipes++;
 			}
@@ -913,13 +891,14 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[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]);
+					prepare(&data);
 					run(&data);
-					cleanup(&data, outputs[i]);
+					cleanup(&data);
 				}
 			}
 		}
@@ -932,13 +911,14 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[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]);
+					prepare(&data);
 					run(&data);
-					cleanup(&data, outputs[i]);
+					cleanup(&data);
 				}
 			}
 		}
@@ -951,13 +931,14 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[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]);
+					prepare(&data);
 					run(&data);
-					cleanup(&data, outputs[i]);
+					cleanup(&data);
 				}
 			}
 		}
@@ -970,11 +951,12 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[i];
 				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-				prepare(&data, outputs[i]);
+				prepare(&data);
 				run(&data);
-				cleanup(&data, outputs[i]);
+				cleanup(&data);
 			}
 		}
 	}
@@ -985,11 +967,12 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[i];
 				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-				prepare(&data, outputs[i]);
+				prepare(&data);
 				run(&data);
-				cleanup(&data, outputs[i]);
+				cleanup(&data);
 			}
 		}
 	}
@@ -1000,11 +983,12 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[i];
 				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-				prepare(&data, outputs[i]);
+				prepare(&data);
 				run(&data);
-				cleanup(&data, outputs[i]);
+				cleanup(&data);
 			}
 		}
 	}
@@ -1015,11 +999,12 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[i];
 				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-				prepare(&data, outputs[i]);
+				prepare(&data);
 				run(&data);
-				cleanup(&data, outputs[i]);
+				cleanup(&data);
 			}
 		}
 	}
@@ -1032,13 +1017,14 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[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]);
+					prepare(&data);
 					run(&data);
-					cleanup(&data, outputs[i]);
+					cleanup(&data);
 				}
 			}
 		}
@@ -1050,11 +1036,12 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[i];
 				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-				prepare(&data, outputs[i]);
+				prepare(&data);
 				run(&data);
-				cleanup(&data, outputs[i]);
+				cleanup(&data);
 			}
 		}
 	}
@@ -1065,11 +1052,12 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[i];
 				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-				prepare(&data, outputs[i]);
+				prepare(&data);
 				run(&data);
-				cleanup(&data, outputs[i]);
+				cleanup(&data);
 			}
 		}
 	}
@@ -1080,11 +1068,12 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[i];
 				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-				prepare(&data, outputs[i]);
+				prepare(&data);
 				run(&data);
-				cleanup(&data, outputs[i]);
+				cleanup(&data);
 			}
 		}
 	}
@@ -1097,13 +1086,14 @@ igt_main
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
 					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				data.pipe = pipes[i];
+				data.output = outputs[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]);
+					prepare(&data);
 					run(&data);
-					cleanup(&data, outputs[i]);
+					cleanup(&data);
 				}
 			}
 		}
@@ -1119,13 +1109,14 @@ igt_main
 	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				igt_output_set_pipe(outputs[i], pipes[i]);
+				      igt_output_name(outputs[i])) {
+				data.pipe = pipes[i];
+				data.output = outputs[i];
 				data.damage_area_count = 1;
 				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-				prepare(&data, outputs[i]);
+				prepare(&data);
 				run(&data);
-				cleanup(&data, outputs[i]);
+				cleanup(&data);
 			}
 		}
 	}
-- 
2.34.1

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

* [igt-dev] [PATCH i-g-t 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature
  2023-01-25  9:07 [igt-dev] [PATCH i-g-t 0/2] Psr2 dsc testcases Jouni Högander
  2023-01-25  9:07 ` [igt-dev] [PATCH i-g-t 1/2] tests/i915/kms_psr2_sf: Some cleanups after Jouni Högander
@ 2023-01-25  9:07 ` Jouni Högander
  2023-02-01 10:27   ` Swati Sharma
  2023-01-25 14:25 ` [igt-dev] ✓ Fi.CI.BAT: success for Psr2 dsc testcases Patchwork
  2023-01-25 22:18 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 1 reply; 8+ messages in thread
From: Jouni Högander @ 2023-01-25  9:07 UTC (permalink / raw)
  To: igt-dev

Add mechanism to add coexisting features with selective fetch
and add dynamic subtests for DSC as coexisting feature.

Cc: Jeevan B <jeevan.b@intel.com>
Cc: Swati Sharma <swati2.sharma@intel.com>
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 tests/i915/kms_psr2_sf.c | 331 ++++++++++++++++++++++++++-------------
 tests/meson.build        |   9 +-
 2 files changed, 232 insertions(+), 108 deletions(-)

diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
index 078884ac..cb965989 100644
--- a/tests/i915/kms_psr2_sf.c
+++ b/tests/i915/kms_psr2_sf.c
@@ -25,6 +25,7 @@
 #include "igt.h"
 #include "igt_sysfs.h"
 #include "igt_psr.h"
+#include "kms_dsc_helper.h"
 #include <errno.h>
 #include <stdbool.h>
 #include <stdio.h>
@@ -86,6 +87,13 @@ typedef struct {
 	uint32_t screen_changes;
 	int cur_x, cur_y;
 	enum pipe pipe;
+	bool force_dsc_en_orig;
+	int force_dsc_restore_fd;
+	enum {
+		FEATURE_NONE  = 0,
+		FEATURE_DSC   = 1,
+		FEATURE_COUNT = 2,
+	} coexist_feature;
 } data_t;
 
 static const char *op_str(enum operations op)
@@ -104,6 +112,18 @@ static const char *op_str(enum operations op)
 	return name[op];
 }
 
+static const char *coexist_feature_str(int coexist_feature)
+{
+	switch (coexist_feature) {
+	case FEATURE_NONE:
+		return "";
+	case FEATURE_DSC:
+		return "-dsc";
+	default:
+		igt_assert(false);
+	}
+}
+
 static void display_init(data_t *data)
 {
 	igt_display_require(&data->display, data->drm_fd);
@@ -224,9 +244,17 @@ static void prepare(data_t *data)
 	igt_plane_t *primary, *sprite = NULL, *cursor = NULL;
 	int fb_w, fb_h, x, y, view_w, view_h;
 
-	igt_output_set_pipe(output, data->pipe);
 	data->mode = igt_output_get_mode(output);
 
+	if (data->coexist_feature & FEATURE_DSC) {
+		save_force_dsc_en(data->drm_fd, output);
+		force_dsc_enable(data->drm_fd, output);
+		igt_output_set_pipe(output, PIPE_NONE);
+		igt_display_commit2(&data->display, COMMIT_ATOMIC);
+	}
+
+	igt_output_set_pipe(output, data->pipe);
+
 	if (data->big_fb_test) {
 		fb_w = data->big_fb_width;
 		fb_h = data->big_fb_height;
@@ -816,6 +844,11 @@ static void cleanup(data_t *data)
 		igt_plane_set_fb(sprite, NULL);
 	}
 
+	if (data->coexist_feature & FEATURE_DSC) {
+		restore_force_dsc_en();
+		igt_output_set_pipe(output, PIPE_NONE);
+	}
+
 	igt_display_commit2(&data->display, COMMIT_ATOMIC);
 
 	igt_remove_fb(data->drm_fd, &data->fb_primary);
@@ -839,9 +872,10 @@ igt_main
 {
 	data_t data = {};
 	igt_output_t *outputs[IGT_MAX_PIPES * IGT_MAX_PIPES];
-	int i, j;
+	int i, j, k;
 	int pipes[IGT_MAX_PIPES * IGT_MAX_PIPES];
 	int n_pipes = 0;
+	int coexist_features[IGT_MAX_PIPES * IGT_MAX_PIPES];
 
 	igt_fixture {
 		drmModeResPtr res;
@@ -877,9 +911,14 @@ igt_main
 			      "PSR2 selective fetch not enabled\n");
 
 		for_each_pipe_with_valid_output(&data.display, data.pipe, data.output) {
+			coexist_features[n_pipes] = 0;
 			if (check_psr2_support(&data)) {
 				pipes[n_pipes] = data.pipe;
 				outputs[n_pipes] = data.output;
+
+				if (check_dsc_on_connector(data.drm_fd, data.output))
+					coexist_features[n_pipes] |= FEATURE_DSC;
+
 				n_pipes++;
 			}
 		}
@@ -889,16 +928,22 @@ igt_main
 	igt_describe("Test that selective fetch works on primary plane");
 	igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
-					data.damage_area_count = j;
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
 					data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
-					prepare(&data);
-					run(&data);
-					cleanup(&data);
+					data.coexist_feature = j;
+					for (k = 1; k <= MAX_DAMAGE_AREAS; k++) {
+						data.damage_area_count = k;
+						prepare(&data);
+						run(&data);
+						cleanup(&data);
+					}
 				}
 			}
 		}
@@ -909,16 +954,22 @@ igt_main
 	igt_describe("Test that selective fetch works on primary plane with big fb");
 	igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area-big-fb", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
-					data.damage_area_count = j;
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
 					data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
-					prepare(&data);
-					run(&data);
-					cleanup(&data);
+					data.coexist_feature = j;
+					for (k = 1; k <= MAX_DAMAGE_AREAS; k++) {
+						data.damage_area_count = k;
+						prepare(&data);
+						run(&data);
+						cleanup(&data);
+					}
 				}
 			}
 		}
@@ -929,16 +980,22 @@ igt_main
 	igt_describe("Test that selective fetch works on overlay plane");
 	igt_subtest_with_dynamic_f("overlay-%s-sf-dmg-area", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
-					data.damage_area_count = j;
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
 					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-					prepare(&data);
-					run(&data);
-					cleanup(&data);
+					data.coexist_feature = j;
+					for (k = 1; k <= MAX_DAMAGE_AREAS; k++) {
+						data.damage_area_count = k;
+						prepare(&data);
+						run(&data);
+						cleanup(&data);
+					}
 				}
 			}
 		}
@@ -949,14 +1006,20 @@ igt_main
 	igt_describe("Test that selective fetch works on cursor plane");
 	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-				prepare(&data);
-				run(&data);
-				cleanup(&data);
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
+					data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
+					data.coexist_feature = j;
+					prepare(&data);
+					run(&data);
+					cleanup(&data);
+				}
 			}
 		}
 	}
@@ -965,14 +1028,20 @@ igt_main
 	igt_describe("Test that selective fetch works on moving cursor plane (no update)");
 	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-				prepare(&data);
-				run(&data);
-				cleanup(&data);
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
+					data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
+					data.coexist_feature = j;
+					prepare(&data);
+					run(&data);
+					cleanup(&data);
+				}
 			}
 		}
 	}
@@ -981,14 +1050,20 @@ igt_main
 	igt_describe("Test that selective fetch works on moving cursor plane exceeding partially visible area (no update)");
 	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-				prepare(&data);
-				run(&data);
-				cleanup(&data);
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
+					data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
+					data.coexist_feature = j;
+					prepare(&data);
+					run(&data);
+					cleanup(&data);
+				}
 			}
 		}
 	}
@@ -997,14 +1072,20 @@ igt_main
 	igt_describe("Test that selective fetch works on moving cursor plane exceeding fully visible area (no update)");
 	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
-				prepare(&data);
-				run(&data);
-				cleanup(&data);
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
+					data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
+					data.coexist_feature = j;
+					prepare(&data);
+					run(&data);
+					cleanup(&data);
+				}
 			}
 		}
 	}
@@ -1015,16 +1096,22 @@ igt_main
 	igt_describe("Test that selective fetch works on moving overlay plane");
 	igt_subtest_with_dynamic_f("%s-sf-dmg-area", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				for (j = POS_TOP_LEFT; j <= POS_BOTTOM_RIGHT ; j++) {
-					data.pos = j;
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
 					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-					prepare(&data);
-					run(&data);
-					cleanup(&data);
+					data.coexist_feature = j;
+					for (k = POS_TOP_LEFT; k <= POS_BOTTOM_RIGHT ; k++) {
+						data.pos = k;
+						prepare(&data);
+						run(&data);
+						cleanup(&data);
+					}
 				}
 			}
 		}
@@ -1034,14 +1121,20 @@ igt_main
 	igt_describe("Test that selective fetch works on moving overlay plane (no update)");
 	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
 				data.pipe = pipes[i];
 				data.output = outputs[i];
 				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
+				data.coexist_feature = j;
 				prepare(&data);
 				run(&data);
 				cleanup(&data);
+				}
 			}
 		}
 	}
@@ -1050,14 +1143,20 @@ igt_main
 	igt_describe("Test that selective fetch works on moving overlay plane partially exceeding visible area (no update)");
 	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-				prepare(&data);
-				run(&data);
-				cleanup(&data);
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
+					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
+					data.coexist_feature = j;
+					prepare(&data);
+					run(&data);
+					cleanup(&data);
+				}
 			}
 		}
 	}
@@ -1066,14 +1165,20 @@ igt_main
 	igt_describe("Test that selective fetch works on moving overlay plane fully exceeding visible area (no update)");
 	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-				prepare(&data);
-				run(&data);
-				cleanup(&data);
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
+					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
+					data.coexist_feature = j;
+					prepare(&data);
+					run(&data);
+					cleanup(&data);
+				}
 			}
 		}
 	}
@@ -1084,16 +1189,22 @@ igt_main
 		     "with blended overlay plane");
 	igt_subtest_with_dynamic_f("%s-sf-dmg-area", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-					igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
-					data.damage_area_count = j;
-					data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
-					prepare(&data);
-					run(&data);
-					cleanup(&data);
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
+					for (k = 1; k <= MAX_DAMAGE_AREAS; k++) {
+						data.damage_area_count = k;
+						data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
+						data.coexist_feature = j;
+						prepare(&data);
+						run(&data);
+						cleanup(&data);
+					}
 				}
 			}
 		}
@@ -1108,15 +1219,21 @@ igt_main
 	igt_describe("Test that selective fetch works on overlay plane");
 	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
 		for (i = 0; i < n_pipes; i++) {
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
-				      igt_output_name(outputs[i])) {
-				data.pipe = pipes[i];
-				data.output = outputs[i];
-				data.damage_area_count = 1;
-				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
-				prepare(&data);
-				run(&data);
-				cleanup(&data);
+			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
+				if (j != FEATURE_NONE && !(coexist_features[i] & j))
+					continue;
+				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
+					      igt_output_name(outputs[i]),
+					      coexist_feature_str(j)) {
+					data.pipe = pipes[i];
+					data.output = outputs[i];
+					data.damage_area_count = 1;
+					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
+					data.coexist_feature = j;
+					prepare(&data);
+					run(&data);
+					cleanup(&data);
+				}
 			}
 		}
 	}
diff --git a/tests/meson.build b/tests/meson.build
index cce9d89e..da8a4204 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -232,7 +232,6 @@ i915_progs = [
 	'kms_pipe_b_c_ivb',
 	'kms_psr',
 	'kms_psr2_su',
-	'kms_psr2_sf',
 	'kms_psr_stress_test',
 	'kms_pwrite_crc',
 	'sysfs_defaults',
@@ -435,6 +434,14 @@ test_executables += executable('kms_dsc',
 	   install : true)
 test_list += 'kms_dsc'
 
+test_executables += executable('kms_psr2_sf',
+	   [ join_paths('i915', 'kms_psr2_sf.c'), join_paths ('i915', 'kms_dsc_helper.c')],
+	   dependencies : test_deps,
+	   install_dir : libexecdir,
+	   install_rpath : libexecdir_rpathdir,
+	   install : true)
+test_list += 'kms_psr2_sf'
+
 if chamelium.found()
        test_executables += executable('kms_chamelium_color',
                              [ 'chamelium/kms_chamelium_color.c', 'kms_color_helper.c' ],
-- 
2.34.1

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

* [igt-dev] ✓ Fi.CI.BAT: success for Psr2 dsc testcases
  2023-01-25  9:07 [igt-dev] [PATCH i-g-t 0/2] Psr2 dsc testcases Jouni Högander
  2023-01-25  9:07 ` [igt-dev] [PATCH i-g-t 1/2] tests/i915/kms_psr2_sf: Some cleanups after Jouni Högander
  2023-01-25  9:07 ` [igt-dev] [PATCH i-g-t 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature Jouni Högander
@ 2023-01-25 14:25 ` Patchwork
  2023-01-25 22:18 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2023-01-25 14:25 UTC (permalink / raw)
  To: Jouni Högander; +Cc: igt-dev

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

== Series Details ==

Series: Psr2 dsc testcases
URL   : https://patchwork.freedesktop.org/series/113308/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12635 -> IGTPW_8401
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (36 -> 36)
------------------------------

  Additional (1): bat-atsm-1 
  Missing    (1): fi-kbl-soraka 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size:
    - fi-bsw-n3050:       [PASS][1] -> [FAIL][2] ([i915#6298])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/fi-bsw-n3050/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/fi-bsw-n3050/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-2:
    - bat-dg1-6:          [PASS][3] -> [FAIL][4] ([fdo#103375]) +1 similar issue
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/bat-dg1-6/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-2.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/bat-dg1-6/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-2.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#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1836]: https://gitlab.freedesktop.org/drm/intel/issues/1836
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#6077]: https://gitlab.freedesktop.org/drm/intel/issues/6077
  [i915#6078]: https://gitlab.freedesktop.org/drm/intel/issues/6078
  [i915#6093]: https://gitlab.freedesktop.org/drm/intel/issues/6093
  [i915#6094]: https://gitlab.freedesktop.org/drm/intel/issues/6094
  [i915#6166]: https://gitlab.freedesktop.org/drm/intel/issues/6166
  [i915#6298]: https://gitlab.freedesktop.org/drm/intel/issues/6298
  [i915#6311]: https://gitlab.freedesktop.org/drm/intel/issues/6311
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645
  [i915#7357]: https://gitlab.freedesktop.org/drm/intel/issues/7357


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7136 -> IGTPW_8401

  CI-20190529: 20190529
  CI_DRM_12635: 479665dac7e36fbde1a1c7aab8fd0b1dfec208ab @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8401: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/index.html
  IGT_7136: 31b6af91747ad8c705399c9006cdb81cb1864146 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git


Testlist changes
----------------

-igt@perf_pmu@pmu-read

== Logs ==

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

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for Psr2 dsc testcases
  2023-01-25  9:07 [igt-dev] [PATCH i-g-t 0/2] Psr2 dsc testcases Jouni Högander
                   ` (2 preceding siblings ...)
  2023-01-25 14:25 ` [igt-dev] ✓ Fi.CI.BAT: success for Psr2 dsc testcases Patchwork
@ 2023-01-25 22:18 ` Patchwork
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2023-01-25 22:18 UTC (permalink / raw)
  To: Jouni Högander; +Cc: igt-dev

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

== Series Details ==

Series: Psr2 dsc testcases
URL   : https://patchwork.freedesktop.org/series/113308/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12635_full -> IGTPW_8401_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (12 -> 10)
------------------------------

  Missing    (2): pig-skl-6260u pig-kbl-iris 

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

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

### IGT changes ###

#### Suppressed ####

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

  * igt@gem_exec_suspend@basic-s4-devices@smem:
    - {shard-dg1}:        NOTRUN -> [INCOMPLETE][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-dg1-18/igt@gem_exec_suspend@basic-s4-devices@smem.html

  * igt@gem_lmem_evict@dontneed-evict-race:
    - {shard-dg1}:        NOTRUN -> [DMESG-WARN][2]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-dg1-15/igt@gem_lmem_evict@dontneed-evict-race.html

  * igt@kms_cursor_edge_walk@top-edge@pipe-d-hdmi-a-4-256x256:
    - {shard-dg1}:        NOTRUN -> [FAIL][3] +54 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-dg1-16/igt@kms_cursor_edge_walk@top-edge@pipe-d-hdmi-a-4-256x256.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@feature_discovery@display-4x:
    - shard-glk:          NOTRUN -> [SKIP][4] ([fdo#109271]) +40 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-glk4/igt@feature_discovery@display-4x.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][5] ([i915#2842])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-glk1/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [PASS][6] -> [FAIL][7] ([i915#2842])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-glk4/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-glk8/igt@gem_exec_fair@basic-pace-share@rcs0.html
    - shard-apl:          [PASS][8] -> [FAIL][9] ([i915#2842])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-apl2/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-apl6/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_lmem_swapping@heavy-verify-multi-ccs:
    - shard-glk:          NOTRUN -> [SKIP][10] ([fdo#109271] / [i915#4613])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-glk6/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html

  * igt@gem_lmem_swapping@parallel-random-verify:
    - shard-apl:          NOTRUN -> [SKIP][11] ([fdo#109271] / [i915#4613])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-apl7/igt@gem_lmem_swapping@parallel-random-verify.html

  * igt@gem_render_copy@x-tiled-to-vebox-yf-tiled:
    - shard-snb:          NOTRUN -> [SKIP][12] ([fdo#109271]) +14 similar issues
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-snb2/igt@gem_render_copy@x-tiled-to-vebox-yf-tiled.html

  * igt@i915_pm_dc@dc3co-vpb-simulation:
    - shard-glk:          NOTRUN -> [SKIP][13] ([fdo#109271] / [i915#658])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-glk7/igt@i915_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-glk:          [PASS][14] -> [DMESG-WARN][15] ([i915#2017])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-glk1/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-glk5/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_ccs@pipe-b-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc:
    - shard-apl:          NOTRUN -> [SKIP][16] ([fdo#109271] / [i915#3886])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-apl3/igt@kms_ccs@pipe-b-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc:
    - shard-glk:          NOTRUN -> [SKIP][17] ([fdo#109271] / [i915#3886]) +2 similar issues
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-glk3/igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-d-crc-primary-basic-4_tiled_dg2_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][18] ([fdo#109271]) +7 similar issues
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-apl1/igt@kms_ccs@pipe-d-crc-primary-basic-4_tiled_dg2_mc_ccs.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp1:
    - shard-apl:          [PASS][19] -> [FAIL][20] ([i915#79])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-apl7/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp1.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-apl6/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp1.html

  * igt@perf_pmu@module-unload:
    - shard-snb:          [PASS][21] -> [INCOMPLETE][22] ([i915#4528])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-snb7/igt@perf_pmu@module-unload.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-snb7/igt@perf_pmu@module-unload.html

  
#### Possible fixes ####

  * igt@drm_fdinfo@idle@rcs0:
    - {shard-rkl}:        [FAIL][23] ([i915#7742]) -> [PASS][24] +1 similar issue
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-2/igt@drm_fdinfo@idle@rcs0.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-4/igt@drm_fdinfo@idle@rcs0.html

  * igt@gem_exec_fair@basic-deadline:
    - {shard-rkl}:        [FAIL][25] ([i915#2846]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-2/igt@gem_exec_fair@basic-deadline.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-5/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - {shard-rkl}:        [FAIL][27] ([i915#2842]) -> [PASS][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-4/igt@gem_exec_fair@basic-none-share@rcs0.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-5/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - shard-glk:          [FAIL][29] ([i915#2842]) -> [PASS][30]
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-glk1/igt@gem_exec_fair@basic-none@vcs0.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-glk1/igt@gem_exec_fair@basic-none@vcs0.html

  * igt@gem_exec_reloc@basic-gtt-cpu:
    - {shard-rkl}:        [SKIP][31] ([i915#3281]) -> [PASS][32] +9 similar issues
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-2/igt@gem_exec_reloc@basic-gtt-cpu.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-5/igt@gem_exec_reloc@basic-gtt-cpu.html

  * igt@gem_partial_pwrite_pread@writes-after-reads-uncached:
    - {shard-rkl}:        [SKIP][33] ([i915#3282]) -> [PASS][34] +6 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-4/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-5/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-apl:          [DMESG-WARN][35] ([i915#5566] / [i915#716]) -> [PASS][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-apl3/igt@gen9_exec_parse@allowed-single.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-apl3/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@batch-zero-length:
    - {shard-rkl}:        [SKIP][37] ([i915#2527]) -> [PASS][38] +1 similar issue
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-1/igt@gen9_exec_parse@batch-zero-length.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-5/igt@gen9_exec_parse@batch-zero-length.html

  * igt@i915_pm_dc@dc6-dpms:
    - {shard-rkl}:        [SKIP][39] ([i915#3361]) -> [PASS][40] +1 similar issue
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-5/igt@i915_pm_dc@dc6-dpms.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-2/igt@i915_pm_dc@dc6-dpms.html

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

  * igt@i915_pm_sseu@full-enable:
    - {shard-rkl}:        [SKIP][43] ([i915#4387]) -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-1/igt@i915_pm_sseu@full-enable.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-5/igt@i915_pm_sseu@full-enable.html

  * igt@i915_selftest@mock@sanitycheck:
    - shard-snb:          [SKIP][45] ([fdo#109271]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-snb4/igt@i915_selftest@mock@sanitycheck.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-snb2/igt@i915_selftest@mock@sanitycheck.html

  * igt@kms_atomic@plane-immutable-zpos:
    - {shard-rkl}:        [SKIP][47] ([i915#1845] / [i915#4098]) -> [PASS][48] +4 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-5/igt@kms_atomic@plane-immutable-zpos.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-6/igt@kms_atomic@plane-immutable-zpos.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - {shard-dg1}:        [FAIL][49] -> [PASS][50]
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-dg1-17/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-dg1-14/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size:
    - shard-apl:          [FAIL][51] ([i915#2346]) -> [PASS][52]
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-apl2/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-apl6/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html
    - shard-glk:          [FAIL][53] ([i915#2346]) -> [PASS][54] +1 similar issue
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-glk9/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html

  * igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a2:
    - shard-glk:          [FAIL][55] ([i915#79]) -> [PASS][56]
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-glk6/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a2.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-glk6/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a2.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite:
    - {shard-rkl}:        [SKIP][57] ([i915#1849] / [i915#4098]) -> [PASS][58] +7 similar issues
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-4/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-pwrite.html

  * igt@kms_properties@crtc-properties-atomic:
    - {shard-rkl}:        [SKIP][59] ([i915#1849]) -> [PASS][60]
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-3/igt@kms_properties@crtc-properties-atomic.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-6/igt@kms_properties@crtc-properties-atomic.html

  * igt@kms_psr@sprite_mmap_gtt:
    - {shard-rkl}:        [SKIP][61] ([i915#1072]) -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-3/igt@kms_psr@sprite_mmap_gtt.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-6/igt@kms_psr@sprite_mmap_gtt.html

  * igt@perf@polling-small-buf:
    - {shard-rkl}:        [FAIL][63] ([i915#1722]) -> [PASS][64]
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-rkl-1/igt@perf@polling-small-buf.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-rkl-5/igt@perf@polling-small-buf.html

  * igt@perf_pmu@semaphore-busy@vcs1:
    - {shard-dg1}:        [FAIL][65] ([i915#4349]) -> [PASS][66] +1 similar issue
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12635/shard-dg1-12/igt@perf_pmu@semaphore-busy@vcs1.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/shard-dg1-18/igt@perf_pmu@semaphore-busy@vcs1.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109302]: https://bugs.freedesktop.org/show_bug.cgi?id=109302
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [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#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [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#1722]: https://gitlab.freedesktop.org/drm/intel/issues/1722
  [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
  [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#1902]: https://gitlab.freedesktop.org/drm/intel/issues/1902
  [i915#2017]: https://gitlab.freedesktop.org/drm/intel/issues/2017
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2532]: https://gitlab.freedesktop.org/drm/intel/issues/2532
  [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#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [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#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3528]: https://gitlab.freedesktop.org/drm/intel/issues/3528
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [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#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3804]: https://gitlab.freedesktop.org/drm/intel/issues/3804
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3952]: https://gitlab.freedesktop.org/drm/intel/issues/3952
  [i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#426]: https://gitlab.freedesktop.org/drm/intel/issues/426
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4859]: https://gitlab.freedesktop.org/drm/intel/issues/4859
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4873]: https://gitlab.freedesktop.org/drm/intel/issues/4873
  [i915#4877]: https://gitlab.freedesktop.org/drm/intel/issues/4877
  [i915#4884]: https://gitlab.freedesktop.org/drm/intel/issues/4884
  [i915#4885]: https://gitlab.freedesktop.org/drm/intel/issues/4885
  [i915#5138]: https://gitlab.freedesktop.org/drm/intel/issues/5138
  [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#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5723]: https://gitlab.freedesktop.org/drm/intel/issues/5723
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6227]: https://gitlab.freedesktop.org/drm/intel/issues/6227
  [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230
  [i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245
  [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6355]: https://gitlab.freedesktop.org/drm/intel/issues/6355
  [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#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
  [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
  [i915#6946]: https://gitlab.freedesktop.org/drm/intel/issues/6946
  [i915#6953]: https://gitlab.freedesktop.org/drm/intel/issues/6953
  [i915#7076]: https://gitlab.freedesktop.org/drm/intel/issues/7076
  [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#7443]: https://gitlab.freedesktop.org/drm/intel/issues/7443
  [i915#7479]: https://gitlab.freedesktop.org/drm/intel/issues/7479
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7582]: https://gitlab.freedesktop.org/drm/intel/issues/7582
  [i915#7651]: https://gitlab.freedesktop.org/drm/intel/issues/7651
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
  [i915#7707]: https://gitlab.freedesktop.org/drm/intel/issues/7707
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#7949]: https://gitlab.freedesktop.org/drm/intel/issues/7949


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7136 -> IGTPW_8401
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_12635: 479665dac7e36fbde1a1c7aab8fd0b1dfec208ab @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8401: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8401/index.html
  IGT_7136: 31b6af91747ad8c705399c9006cdb81cb1864146 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

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

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

* Re: [igt-dev] [PATCH i-g-t 1/2] tests/i915/kms_psr2_sf: Some cleanups after
  2023-01-25  9:07 ` [igt-dev] [PATCH i-g-t 1/2] tests/i915/kms_psr2_sf: Some cleanups after Jouni Högander
@ 2023-01-30  9:12   ` B, Jeevan
  0 siblings, 0 replies; 8+ messages in thread
From: B, Jeevan @ 2023-01-30  9:12 UTC (permalink / raw)
  To: Hogander, Jouni, igt-dev

LGTM.

Reviewed-by: Jeevan B <jeevan.b@intel.com>

> -----Original Message-----
> From: Hogander, Jouni <jouni.hogander@intel.com>
> Sent: Wednesday, January 25, 2023 2:38 PM
> To: igt-dev@lists.freedesktop.org
> Cc: Hogander, Jouni <jouni.hogander@intel.com>; B, Jeevan
> <jeevan.b@intel.com>; Sharma, Swati2 <swati2.sharma@intel.com>
> Subject: [PATCH i-g-t 1/2] tests/i915/kms_psr2_sf: Some cleanups after
> 
> Handle setting output for pipe in prepare and remove separate setup_output.
> Carry all test parameters in data structure
> 
> Cc: Jeevan B <jeevan.b@intel.com>
> Cc: Swati Sharma <swati2.sharma@intel.com>
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  tests/i915/kms_psr2_sf.c | 145 ++++++++++++++++++---------------------
>  1 file changed, 68 insertions(+), 77 deletions(-)
> 
> diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c index
> cfde6cfc..078884ac 100644
> --- a/tests/i915/kms_psr2_sf.c
> +++ b/tests/i915/kms_psr2_sf.c
> @@ -85,6 +85,7 @@ typedef struct {
>  	cairo_t *cr;
>  	uint32_t screen_changes;
>  	int cur_x, cur_y;
> +	enum pipe pipe;
>  } data_t;
> 
>  static const char *op_str(enum operations op) @@ -103,30 +104,10 @@ static
> const char *op_str(enum operations op)
>  	return name[op];
>  }
> 
> -static void setup_output(data_t *data)
> -{
> -	igt_display_t *display = &data->display;
> -	igt_output_t *output;
> -	enum pipe pipe;
> -
> -	for_each_pipe_with_valid_output(display, pipe, output) {
> -		drmModeConnectorPtr c = output->config.connector;
> -
> -		if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
> -			continue;
> -
> -		igt_output_set_pipe(output, pipe);
> -		data->output = output;
> -		data->mode = igt_output_get_mode(output);
> -
> -		return;
> -	}
> -}
> -
>  static void display_init(data_t *data)
>  {
>  	igt_display_require(&data->display, data->drm_fd);
> -	setup_output(data);
> +	igt_display_reset(&data->display);
>  }
> 
>  static void display_fini(data_t *data)
> @@ -237,11 +218,15 @@ 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, igt_output_t *output)
> +static void prepare(data_t *data)
>  {
> +	igt_output_t *output = data->output;
>  	igt_plane_t *primary, *sprite = NULL, *cursor = NULL;
>  	int fb_w, fb_h, x, y, view_w, view_h;
> 
> +	igt_output_set_pipe(output, data->pipe);
> +	data->mode = igt_output_get_mode(output);
> +
>  	if (data->big_fb_test) {
>  		fb_w = data->big_fb_width;
>  		fb_h = data->big_fb_height;
> @@ -808,8 +793,9 @@ static void run(data_t *data)
>  	}
>  }
> 
> -static void cleanup(data_t *data, igt_output_t *output)
> +static void cleanup(data_t *data)
>  {
> +	igt_output_t *output = data->output;
>  	igt_plane_t *primary;
>  	igt_plane_t *sprite;
> 
> @@ -838,20 +824,13 @@ static void cleanup(data_t *data, igt_output_t
> *output)
>  	igt_remove_fb(data->drm_fd, &data->fb_test);  }
> 
> -static int check_psr2_support(data_t *data, enum pipe pipe)
> +static int check_psr2_support(data_t *data)
>  {
>  	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);
> +	prepare(data);
>  	status = psr_wait_entry(data->debugfs_fd, PSR_MODE_2);
> -	cleanup(data, output);
> +	cleanup(data);
> 
>  	return status;
>  }
> @@ -861,7 +840,6 @@ igt_main
>  	data_t data = {};
>  	igt_output_t *outputs[IGT_MAX_PIPES * IGT_MAX_PIPES];
>  	int i, j;
> -	enum pipe pipe;
>  	int pipes[IGT_MAX_PIPES * IGT_MAX_PIPES];
>  	int n_pipes = 0;
> 
> @@ -898,9 +876,9 @@ igt_main
>  		igt_require_f(psr2_selective_fetch_check(data.debugfs_fd),
>  			      "PSR2 selective fetch not enabled\n");
> 
> -		for_each_pipe_with_valid_output(&data.display, pipe,
> data.output) {
> -			if (check_psr2_support(&data, pipe)) {
> -				pipes[n_pipes] = pipe;
> +		for_each_pipe_with_valid_output(&data.display, data.pipe,
> data.output) {
> +			if (check_psr2_support(&data)) {
> +				pipes[n_pipes] = data.pipe;
>  				outputs[n_pipes] = data.output;
>  				n_pipes++;
>  			}
> @@ -913,13 +891,14 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[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]);
> +					prepare(&data);
>  					run(&data);
> -					cleanup(&data, outputs[i]);
> +					cleanup(&data);
>  				}
>  			}
>  		}
> @@ -932,13 +911,14 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[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]);
> +					prepare(&data);
>  					run(&data);
> -					cleanup(&data, outputs[i]);
> +					cleanup(&data);
>  				}
>  			}
>  		}
> @@ -951,13 +931,14 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[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]);
> +					prepare(&data);
>  					run(&data);
> -					cleanup(&data, outputs[i]);
> +					cleanup(&data);
>  				}
>  			}
>  		}
> @@ -970,11 +951,12 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[i];
>  				data.test_plane_id =
> DRM_PLANE_TYPE_CURSOR;
> -				prepare(&data, outputs[i]);
> +				prepare(&data);
>  				run(&data);
> -				cleanup(&data, outputs[i]);
> +				cleanup(&data);
>  			}
>  		}
>  	}
> @@ -985,11 +967,12 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[i];
>  				data.test_plane_id =
> DRM_PLANE_TYPE_CURSOR;
> -				prepare(&data, outputs[i]);
> +				prepare(&data);
>  				run(&data);
> -				cleanup(&data, outputs[i]);
> +				cleanup(&data);
>  			}
>  		}
>  	}
> @@ -1000,11 +983,12 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[i];
>  				data.test_plane_id =
> DRM_PLANE_TYPE_CURSOR;
> -				prepare(&data, outputs[i]);
> +				prepare(&data);
>  				run(&data);
> -				cleanup(&data, outputs[i]);
> +				cleanup(&data);
>  			}
>  		}
>  	}
> @@ -1015,11 +999,12 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[i];
>  				data.test_plane_id =
> DRM_PLANE_TYPE_CURSOR;
> -				prepare(&data, outputs[i]);
> +				prepare(&data);
>  				run(&data);
> -				cleanup(&data, outputs[i]);
> +				cleanup(&data);
>  			}
>  		}
>  	}
> @@ -1032,13 +1017,14 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[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]);
> +					prepare(&data);
>  					run(&data);
> -					cleanup(&data, outputs[i]);
> +					cleanup(&data);
>  				}
>  			}
>  		}
> @@ -1050,11 +1036,12 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[i];
>  				data.test_plane_id =
> DRM_PLANE_TYPE_OVERLAY;
> -				prepare(&data, outputs[i]);
> +				prepare(&data);
>  				run(&data);
> -				cleanup(&data, outputs[i]);
> +				cleanup(&data);
>  			}
>  		}
>  	}
> @@ -1065,11 +1052,12 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[i];
>  				data.test_plane_id =
> DRM_PLANE_TYPE_OVERLAY;
> -				prepare(&data, outputs[i]);
> +				prepare(&data);
>  				run(&data);
> -				cleanup(&data, outputs[i]);
> +				cleanup(&data);
>  			}
>  		}
>  	}
> @@ -1080,11 +1068,12 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[i];
>  				data.test_plane_id =
> DRM_PLANE_TYPE_OVERLAY;
> -				prepare(&data, outputs[i]);
> +				prepare(&data);
>  				run(&data);
> -				cleanup(&data, outputs[i]);
> +				cleanup(&data);
>  			}
>  		}
>  	}
> @@ -1097,13 +1086,14 @@ igt_main
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
>  					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				data.pipe = pipes[i];
> +				data.output = outputs[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]);
> +					prepare(&data);
>  					run(&data);
> -					cleanup(&data, outputs[i]);
> +					cleanup(&data);
>  				}
>  			}
>  		}
> @@ -1119,13 +1109,14 @@ igt_main
>  	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
>  		for (i = 0; i < n_pipes; i++) {
>  			igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				igt_output_set_pipe(outputs[i], pipes[i]);
> +				      igt_output_name(outputs[i])) {
> +				data.pipe = pipes[i];
> +				data.output = outputs[i];
>  				data.damage_area_count = 1;
>  				data.test_plane_id =
> DRM_PLANE_TYPE_OVERLAY;
> -				prepare(&data, outputs[i]);
> +				prepare(&data);
>  				run(&data);
> -				cleanup(&data, outputs[i]);
> +				cleanup(&data);
>  			}
>  		}
>  	}
> --
> 2.34.1


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

* Re: [igt-dev] [PATCH i-g-t 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature
  2023-01-25  9:07 ` [igt-dev] [PATCH i-g-t 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature Jouni Högander
@ 2023-02-01 10:27   ` Swati Sharma
  2023-02-01 12:12     ` Hogander, Jouni
  0 siblings, 1 reply; 8+ messages in thread
From: Swati Sharma @ 2023-02-01 10:27 UTC (permalink / raw)
  To: Jouni Högander, igt-dev

Hi Jouni,

Changes look good. Few things to mention here:
1. DSC is supported from gen11+ platforms (though h/w supports from 
gen10 but our driver has support from gen11+)
Should we add that restriction?
2. Are we doing manual inspection to check if pattern has no corruption?
3. We aren't using igt_is_dsc_enabled() to verify if DSC got enabled or not.

On 25-Jan-23 2:37 PM, Jouni Högander wrote:
> Add mechanism to add coexisting features with selective fetch
> and add dynamic subtests for DSC as coexisting feature.
> 
> Cc: Jeevan B <jeevan.b@intel.com>
> Cc: Swati Sharma <swati2.sharma@intel.com>
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>   tests/i915/kms_psr2_sf.c | 331 ++++++++++++++++++++++++++-------------
>   tests/meson.build        |   9 +-
>   2 files changed, 232 insertions(+), 108 deletions(-)
> 
> diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
> index 078884ac..cb965989 100644
> --- a/tests/i915/kms_psr2_sf.c
> +++ b/tests/i915/kms_psr2_sf.c
> @@ -25,6 +25,7 @@
>   #include "igt.h"
>   #include "igt_sysfs.h"
>   #include "igt_psr.h"
> +#include "kms_dsc_helper.h"
>   #include <errno.h>
>   #include <stdbool.h>
>   #include <stdio.h>
> @@ -86,6 +87,13 @@ typedef struct {
>   	uint32_t screen_changes;
>   	int cur_x, cur_y;
>   	enum pipe pipe;
> +	bool force_dsc_en_orig;
> +	int force_dsc_restore_fd;
> +	enum {
> +		FEATURE_NONE  = 0,
> +		FEATURE_DSC   = 1,
> +		FEATURE_COUNT = 2,
> +	} coexist_feature;
>   } data_t;
>   
>   static const char *op_str(enum operations op)
> @@ -104,6 +112,18 @@ static const char *op_str(enum operations op)
>   	return name[op];
>   }
>   
> +static const char *coexist_feature_str(int coexist_feature)
> +{
> +	switch (coexist_feature) {
> +	case FEATURE_NONE:
> +		return "";
> +	case FEATURE_DSC:
> +		return "-dsc";
> +	default:
> +		igt_assert(false);
> +	}
> +}
> +
>   static void display_init(data_t *data)
>   {
>   	igt_display_require(&data->display, data->drm_fd);
> @@ -224,9 +244,17 @@ static void prepare(data_t *data)
>   	igt_plane_t *primary, *sprite = NULL, *cursor = NULL;
>   	int fb_w, fb_h, x, y, view_w, view_h;
>   
> -	igt_output_set_pipe(output, data->pipe);
>   	data->mode = igt_output_get_mode(output);
>   
> +	if (data->coexist_feature & FEATURE_DSC) {
> +		save_force_dsc_en(data->drm_fd, output);
> +		force_dsc_enable(data->drm_fd, output);
> +		igt_output_set_pipe(output, PIPE_NONE);
> +		igt_display_commit2(&data->display, COMMIT_ATOMIC);
> +	}
> +
> +	igt_output_set_pipe(output, data->pipe);
> +
>   	if (data->big_fb_test) {
>   		fb_w = data->big_fb_width;
>   		fb_h = data->big_fb_height;
> @@ -816,6 +844,11 @@ static void cleanup(data_t *data)
>   		igt_plane_set_fb(sprite, NULL);
>   	}
>   
> +	if (data->coexist_feature & FEATURE_DSC) {
> +		restore_force_dsc_en();
> +		igt_output_set_pipe(output, PIPE_NONE);
> +	}
> +
>   	igt_display_commit2(&data->display, COMMIT_ATOMIC);
>   
>   	igt_remove_fb(data->drm_fd, &data->fb_primary);
> @@ -839,9 +872,10 @@ igt_main
>   {
>   	data_t data = {};
>   	igt_output_t *outputs[IGT_MAX_PIPES * IGT_MAX_PIPES];
> -	int i, j;
> +	int i, j, k;
>   	int pipes[IGT_MAX_PIPES * IGT_MAX_PIPES];
>   	int n_pipes = 0;
> +	int coexist_features[IGT_MAX_PIPES * IGT_MAX_PIPES];
>   
>   	igt_fixture {
>   		drmModeResPtr res;
> @@ -877,9 +911,14 @@ igt_main
>   			      "PSR2 selective fetch not enabled\n");
>   
>   		for_each_pipe_with_valid_output(&data.display, data.pipe, data.output) {
> +			coexist_features[n_pipes] = 0;
>   			if (check_psr2_support(&data)) {
>   				pipes[n_pipes] = data.pipe;
>   				outputs[n_pipes] = data.output;
> +
> +				if (check_dsc_on_connector(data.drm_fd, data.output))
> +					coexist_features[n_pipes] |= FEATURE_DSC;
> +
>   				n_pipes++;
>   			}
>   		}
> @@ -889,16 +928,22 @@ igt_main
>   	igt_describe("Test that selective fetch works on primary plane");
>   	igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
> -					data.damage_area_count = j;
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
>   					data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
> -					prepare(&data);
> -					run(&data);
> -					cleanup(&data);
> +					data.coexist_feature = j;
> +					for (k = 1; k <= MAX_DAMAGE_AREAS; k++) {
> +						data.damage_area_count = k;
> +						prepare(&data);
> +						run(&data);
> +						cleanup(&data);
> +					}
>   				}
>   			}
>   		}
> @@ -909,16 +954,22 @@ igt_main
>   	igt_describe("Test that selective fetch works on primary plane with big fb");
>   	igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area-big-fb", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
> -					data.damage_area_count = j;
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
>   					data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
> -					prepare(&data);
> -					run(&data);
> -					cleanup(&data);
> +					data.coexist_feature = j;
> +					for (k = 1; k <= MAX_DAMAGE_AREAS; k++) {
> +						data.damage_area_count = k;
> +						prepare(&data);
> +						run(&data);
> +						cleanup(&data);
> +					}
>   				}
>   			}
>   		}
> @@ -929,16 +980,22 @@ igt_main
>   	igt_describe("Test that selective fetch works on overlay plane");
>   	igt_subtest_with_dynamic_f("overlay-%s-sf-dmg-area", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
> -					data.damage_area_count = j;
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
>   					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -					prepare(&data);
> -					run(&data);
> -					cleanup(&data);
> +					data.coexist_feature = j;
> +					for (k = 1; k <= MAX_DAMAGE_AREAS; k++) {
> +						data.damage_area_count = k;
> +						prepare(&data);
> +						run(&data);
> +						cleanup(&data);
> +					}
>   				}
>   			}
>   		}
> @@ -949,14 +1006,20 @@ igt_main
>   	igt_describe("Test that selective fetch works on cursor plane");
>   	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> -				prepare(&data);
> -				run(&data);
> -				cleanup(&data);
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
> +					data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> +					data.coexist_feature = j;
> +					prepare(&data);
> +					run(&data);
> +					cleanup(&data);
> +				}
>   			}
>   		}
>   	}
> @@ -965,14 +1028,20 @@ igt_main
>   	igt_describe("Test that selective fetch works on moving cursor plane (no update)");
>   	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> -				prepare(&data);
> -				run(&data);
> -				cleanup(&data);
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
> +					data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> +					data.coexist_feature = j;
> +					prepare(&data);
> +					run(&data);
> +					cleanup(&data);
> +				}
>   			}
>   		}
>   	}
> @@ -981,14 +1050,20 @@ igt_main
>   	igt_describe("Test that selective fetch works on moving cursor plane exceeding partially visible area (no update)");
>   	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> -				prepare(&data);
> -				run(&data);
> -				cleanup(&data);
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
> +					data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> +					data.coexist_feature = j;
> +					prepare(&data);
> +					run(&data);
> +					cleanup(&data);
> +				}
>   			}
>   		}
>   	}
> @@ -997,14 +1072,20 @@ igt_main
>   	igt_describe("Test that selective fetch works on moving cursor plane exceeding fully visible area (no update)");
>   	igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> -				prepare(&data);
> -				run(&data);
> -				cleanup(&data);
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
> +					data.test_plane_id = DRM_PLANE_TYPE_CURSOR;
> +					data.coexist_feature = j;
> +					prepare(&data);
> +					run(&data);
> +					cleanup(&data);
> +				}
>   			}
>   		}
>   	}
> @@ -1015,16 +1096,22 @@ igt_main
>   	igt_describe("Test that selective fetch works on moving overlay plane");
>   	igt_subtest_with_dynamic_f("%s-sf-dmg-area", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				for (j = POS_TOP_LEFT; j <= POS_BOTTOM_RIGHT ; j++) {
> -					data.pos = j;
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
>   					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -					prepare(&data);
> -					run(&data);
> -					cleanup(&data);
> +					data.coexist_feature = j;
> +					for (k = POS_TOP_LEFT; k <= POS_BOTTOM_RIGHT ; k++) {
> +						data.pos = k;
> +						prepare(&data);
> +						run(&data);
> +						cleanup(&data);
> +					}
>   				}
>   			}
>   		}
> @@ -1034,14 +1121,20 @@ igt_main
>   	igt_describe("Test that selective fetch works on moving overlay plane (no update)");
>   	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
>   				data.pipe = pipes[i];
>   				data.output = outputs[i];
>   				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> +				data.coexist_feature = j;
>   				prepare(&data);
>   				run(&data);
>   				cleanup(&data);
> +				}
>   			}
>   		}
>   	}
> @@ -1050,14 +1143,20 @@ igt_main
>   	igt_describe("Test that selective fetch works on moving overlay plane partially exceeding visible area (no update)");
>   	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -				prepare(&data);
> -				run(&data);
> -				cleanup(&data);
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
> +					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> +					data.coexist_feature = j;
> +					prepare(&data);
> +					run(&data);
> +					cleanup(&data);
> +				}
>   			}
>   		}
>   	}
> @@ -1066,14 +1165,20 @@ igt_main
>   	igt_describe("Test that selective fetch works on moving overlay plane fully exceeding visible area (no update)");
>   	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -				prepare(&data);
> -				run(&data);
> -				cleanup(&data);
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
> +					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> +					data.coexist_feature = j;
> +					prepare(&data);
> +					run(&data);
> +					cleanup(&data);
> +				}
>   			}
>   		}
>   	}
> @@ -1084,16 +1189,22 @@ igt_main
>   		     "with blended overlay plane");
>   	igt_subtest_with_dynamic_f("%s-sf-dmg-area", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -					igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				for (j = 1; j <= MAX_DAMAGE_AREAS; j++) {
> -					data.damage_area_count = j;
> -					data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
> -					prepare(&data);
> -					run(&data);
> -					cleanup(&data);
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
> +					for (k = 1; k <= MAX_DAMAGE_AREAS; k++) {
> +						data.damage_area_count = k;
> +						data.test_plane_id = DRM_PLANE_TYPE_PRIMARY;
> +						data.coexist_feature = j;
> +						prepare(&data);
> +						run(&data);
> +						cleanup(&data);
> +					}
>   				}
>   			}
>   		}
> @@ -1108,15 +1219,21 @@ igt_main
>   	igt_describe("Test that selective fetch works on overlay plane");
>   	igt_subtest_with_dynamic_f("overlay-%s-sf", op_str(data.op)) {
>   		for (i = 0; i < n_pipes; i++) {
> -			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipes[i]),
> -				      igt_output_name(outputs[i])) {
> -				data.pipe = pipes[i];
> -				data.output = outputs[i];
> -				data.damage_area_count = 1;
> -				data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> -				prepare(&data);
> -				run(&data);
> -				cleanup(&data);
> +			for (j = FEATURE_NONE; j < FEATURE_COUNT; j++) {
> +				if (j != FEATURE_NONE && !(coexist_features[i] & j))
> +					continue;
> +				igt_dynamic_f("pipe-%s-%s%s", kmstest_pipe_name(pipes[i]),
> +					      igt_output_name(outputs[i]),
> +					      coexist_feature_str(j)) {
> +					data.pipe = pipes[i];
> +					data.output = outputs[i];
> +					data.damage_area_count = 1;
> +					data.test_plane_id = DRM_PLANE_TYPE_OVERLAY;
> +					data.coexist_feature = j;
> +					prepare(&data);
> +					run(&data);
> +					cleanup(&data);
> +				}
>   			}
>   		}
>   	}
> diff --git a/tests/meson.build b/tests/meson.build
> index cce9d89e..da8a4204 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -232,7 +232,6 @@ i915_progs = [
>   	'kms_pipe_b_c_ivb',
>   	'kms_psr',
>   	'kms_psr2_su',
> -	'kms_psr2_sf',
>   	'kms_psr_stress_test',
>   	'kms_pwrite_crc',
>   	'sysfs_defaults',
> @@ -435,6 +434,14 @@ test_executables += executable('kms_dsc',
>   	   install : true)
>   test_list += 'kms_dsc'
>   
> +test_executables += executable('kms_psr2_sf',
> +	   [ join_paths('i915', 'kms_psr2_sf.c'), join_paths ('i915', 'kms_dsc_helper.c')],
> +	   dependencies : test_deps,
> +	   install_dir : libexecdir,
> +	   install_rpath : libexecdir_rpathdir,
> +	   install : true)
> +test_list += 'kms_psr2_sf'
> +
>   if chamelium.found()
>          test_executables += executable('kms_chamelium_color',
>                                [ 'chamelium/kms_chamelium_color.c', 'kms_color_helper.c' ],

-- 
~Swati Sharma

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

* Re: [igt-dev] [PATCH i-g-t 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature
  2023-02-01 10:27   ` Swati Sharma
@ 2023-02-01 12:12     ` Hogander, Jouni
  0 siblings, 0 replies; 8+ messages in thread
From: Hogander, Jouni @ 2023-02-01 12:12 UTC (permalink / raw)
  To: igt-dev, Sharma, Swati2

Thank you Swati for checking my patch. See my responses inline below.

On Wed, 2023-02-01 at 15:57 +0530, Swati Sharma wrote:
> Hi Jouni,
> 
> Changes look good. Few things to mention here:
> 1. DSC is supported from gen11+ platforms (though h/w supports from 
> gen10 but our driver has support from gen11+)
> Should we add that restriction?

Dsc debugfs are not created so our check_dsc_on_connector will inform
"not supported" and these dynamic subtests are not run.

> 2. Are we doing manual inspection to check if pattern has no
> corruption?

In case of psr2 we have CRC calculation for selective update. The panel
is checking these and interrupting/informing about CRC checksum
mismatch and this will trigger psr2 disable and eventually test
failure.

Generally DSC CRC check is not implemented for kms_dsc either. So I
think it should be implemented there first if wanted.

> 3. We aren't using igt_is_dsc_enabled() to verify if DSC got enabled
> or not.

This actually make sense. I will add it.

> 
> On 25-Jan-23 2:37 PM, Jouni Högander wrote:
> > Add mechanism to add coexisting features with selective fetch
> > and add dynamic subtests for DSC as coexisting feature.
> > 
> > Cc: Jeevan B <jeevan.b@intel.com>
> > Cc: Swati Sharma <swati2.sharma@intel.com>
> > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > ---
> >   tests/i915/kms_psr2_sf.c | 331 ++++++++++++++++++++++++++--------
> > -----
> >   tests/meson.build        |   9 +-
> >   2 files changed, 232 insertions(+), 108 deletions(-)
> > 
> > diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
> > index 078884ac..cb965989 100644
> > --- a/tests/i915/kms_psr2_sf.c
> > +++ b/tests/i915/kms_psr2_sf.c
> > @@ -25,6 +25,7 @@
> >   #include "igt.h"
> >   #include "igt_sysfs.h"
> >   #include "igt_psr.h"
> > +#include "kms_dsc_helper.h"
> >   #include <errno.h>
> >   #include <stdbool.h>
> >   #include <stdio.h>
> > @@ -86,6 +87,13 @@ typedef struct {
> >         uint32_t screen_changes;
> >         int cur_x, cur_y;
> >         enum pipe pipe;
> > +       bool force_dsc_en_orig;
> > +       int force_dsc_restore_fd;
> > +       enum {
> > +               FEATURE_NONE  = 0,
> > +               FEATURE_DSC   = 1,
> > +               FEATURE_COUNT = 2,
> > +       } coexist_feature;
> >   } data_t;
> >   
> >   static const char *op_str(enum operations op)
> > @@ -104,6 +112,18 @@ static const char *op_str(enum operations op)
> >         return name[op];
> >   }
> >   
> > +static const char *coexist_feature_str(int coexist_feature)
> > +{
> > +       switch (coexist_feature) {
> > +       case FEATURE_NONE:
> > +               return "";
> > +       case FEATURE_DSC:
> > +               return "-dsc";
> > +       default:
> > +               igt_assert(false);
> > +       }
> > +}
> > +
> >   static void display_init(data_t *data)
> >   {
> >         igt_display_require(&data->display, data->drm_fd);
> > @@ -224,9 +244,17 @@ static void prepare(data_t *data)
> >         igt_plane_t *primary, *sprite = NULL, *cursor = NULL;
> >         int fb_w, fb_h, x, y, view_w, view_h;
> >   
> > -       igt_output_set_pipe(output, data->pipe);
> >         data->mode = igt_output_get_mode(output);
> >   
> > +       if (data->coexist_feature & FEATURE_DSC) {
> > +               save_force_dsc_en(data->drm_fd, output);
> > +               force_dsc_enable(data->drm_fd, output);
> > +               igt_output_set_pipe(output, PIPE_NONE);
> > +               igt_display_commit2(&data->display, COMMIT_ATOMIC);
> > +       }
> > +
> > +       igt_output_set_pipe(output, data->pipe);
> > +
> >         if (data->big_fb_test) {
> >                 fb_w = data->big_fb_width;
> >                 fb_h = data->big_fb_height;
> > @@ -816,6 +844,11 @@ static void cleanup(data_t *data)
> >                 igt_plane_set_fb(sprite, NULL);
> >         }
> >   
> > +       if (data->coexist_feature & FEATURE_DSC) {
> > +               restore_force_dsc_en();
> > +               igt_output_set_pipe(output, PIPE_NONE);
> > +       }
> > +
> >         igt_display_commit2(&data->display, COMMIT_ATOMIC);
> >   
> >         igt_remove_fb(data->drm_fd, &data->fb_primary);
> > @@ -839,9 +872,10 @@ igt_main
> >   {
> >         data_t data = {};
> >         igt_output_t *outputs[IGT_MAX_PIPES * IGT_MAX_PIPES];
> > -       int i, j;
> > +       int i, j, k;
> >         int pipes[IGT_MAX_PIPES * IGT_MAX_PIPES];
> >         int n_pipes = 0;
> > +       int coexist_features[IGT_MAX_PIPES * IGT_MAX_PIPES];
> >   
> >         igt_fixture {
> >                 drmModeResPtr res;
> > @@ -877,9 +911,14 @@ igt_main
> >                               "PSR2 selective fetch not
> > enabled\n");
> >   
> >                 for_each_pipe_with_valid_output(&data.display,
> > data.pipe, data.output) {
> > +                       coexist_features[n_pipes] = 0;
> >                         if (check_psr2_support(&data)) {
> >                                 pipes[n_pipes] = data.pipe;
> >                                 outputs[n_pipes] = data.output;
> > +
> > +                               if
> > (check_dsc_on_connector(data.drm_fd, data.output))
> > +                                       coexist_features[n_pipes]
> > |= FEATURE_DSC;
> > +
> >                                 n_pipes++;
> >                         }
> >                 }
> > @@ -889,16 +928,22 @@ igt_main
> >         igt_describe("Test that selective fetch works on primary
> > plane");
> >         igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> > j++) {
> > -                                       data.damage_area_count = j;
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> >                                         data.test_plane_id =
> > DRM_PLANE_TYPE_PRIMARY;
> > -                                       prepare(&data);
> > -                                       run(&data);
> > -                                       cleanup(&data);
> > +                                       data.coexist_feature = j;
> > +                                       for (k = 1; k <=
> > MAX_DAMAGE_AREAS; k++) {
> > +                                               data.damage_area_co
> > unt = k;
> > +                                               prepare(&data);
> > +                                               run(&data);
> > +                                               cleanup(&data);
> > +                                       }
> >                                 }
> >                         }
> >                 }
> > @@ -909,16 +954,22 @@ igt_main
> >         igt_describe("Test that selective fetch works on primary
> > plane with big fb");
> >         igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area-big-fb",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> > j++) {
> > -                                       data.damage_area_count = j;
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> >                                         data.test_plane_id =
> > DRM_PLANE_TYPE_PRIMARY;
> > -                                       prepare(&data);
> > -                                       run(&data);
> > -                                       cleanup(&data);
> > +                                       data.coexist_feature = j;
> > +                                       for (k = 1; k <=
> > MAX_DAMAGE_AREAS; k++) {
> > +                                               data.damage_area_co
> > unt = k;
> > +                                               prepare(&data);
> > +                                               run(&data);
> > +                                               cleanup(&data);
> > +                                       }
> >                                 }
> >                         }
> >                 }
> > @@ -929,16 +980,22 @@ igt_main
> >         igt_describe("Test that selective fetch works on overlay
> > plane");
> >         igt_subtest_with_dynamic_f("overlay-%s-sf-dmg-area",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> > j++) {
> > -                                       data.damage_area_count = j;
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> >                                         data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > -                                       prepare(&data);
> > -                                       run(&data);
> > -                                       cleanup(&data);
> > +                                       data.coexist_feature = j;
> > +                                       for (k = 1; k <=
> > MAX_DAMAGE_AREAS; k++) {
> > +                                               data.damage_area_co
> > unt = k;
> > +                                               prepare(&data);
> > +                                               run(&data);
> > +                                               cleanup(&data);
> > +                                       }
> >                                 }
> >                         }
> >                 }
> > @@ -949,14 +1006,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on cursor
> > plane");
> >         igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op))
> > {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -965,14 +1028,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > cursor plane (no update)");
> >         igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op))
> > {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -981,14 +1050,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > cursor plane exceeding partially visible area (no update)");
> >         igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op))
> > {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -997,14 +1072,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > cursor plane exceeding fully visible area (no update)");
> >         igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op))
> > {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -1015,16 +1096,22 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > overlay plane");
> >         igt_subtest_with_dynamic_f("%s-sf-dmg-area",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               for (j = POS_TOP_LEFT; j <=
> > POS_BOTTOM_RIGHT ; j++) {
> > -                                       data.pos = j;
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> >                                         data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > -                                       prepare(&data);
> > -                                       run(&data);
> > -                                       cleanup(&data);
> > +                                       data.coexist_feature = j;
> > +                                       for (k = POS_TOP_LEFT; k <=
> > POS_BOTTOM_RIGHT ; k++) {
> > +                                               data.pos = k;
> > +                                               prepare(&data);
> > +                                               run(&data);
> > +                                               cleanup(&data);
> > +                                       }
> >                                 }
> >                         }
> >                 }
> > @@ -1034,14 +1121,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > overlay plane (no update)");
> >         igt_subtest_with_dynamic_f("overlay-%s-sf",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> >                                 data.pipe = pipes[i];
> >                                 data.output = outputs[i];
> >                                 data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > +                               data.coexist_feature = j;
> >                                 prepare(&data);
> >                                 run(&data);
> >                                 cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -1050,14 +1143,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > overlay plane partially exceeding visible area (no update)");
> >         igt_subtest_with_dynamic_f("overlay-%s-sf",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -1066,14 +1165,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > overlay plane fully exceeding visible area (no update)");
> >         igt_subtest_with_dynamic_f("overlay-%s-sf",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -1084,16 +1189,22 @@ igt_main
> >                      "with blended overlay plane");
> >         igt_subtest_with_dynamic_f("%s-sf-dmg-area",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> > j++) {
> > -                                       data.damage_area_count = j;
> > -                                       data.test_plane_id =
> > DRM_PLANE_TYPE_PRIMARY;
> > -                                       prepare(&data);
> > -                                       run(&data);
> > -                                       cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       for (k = 1; k <=
> > MAX_DAMAGE_AREAS; k++) {
> > +                                               data.damage_area_co
> > unt = k;
> > +                                               data.test_plane_id
> > = DRM_PLANE_TYPE_PRIMARY;
> > +                                               data.coexist_featur
> > e = j;
> > +                                               prepare(&data);
> > +                                               run(&data);
> > +                                               cleanup(&data);
> > +                                       }
> >                                 }
> >                         }
> >                 }
> > @@ -1108,15 +1219,21 @@ igt_main
> >         igt_describe("Test that selective fetch works on overlay
> > plane");
> >         igt_subtest_with_dynamic_f("overlay-%s-sf",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -                                     igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.damage_area_count = 1;
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.damage_area_count = 1;
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > diff --git a/tests/meson.build b/tests/meson.build
> > index cce9d89e..da8a4204 100644
> > --- a/tests/meson.build
> > +++ b/tests/meson.build
> > @@ -232,7 +232,6 @@ i915_progs = [
> >         'kms_pipe_b_c_ivb',
> >         'kms_psr',
> >         'kms_psr2_su',
> > -       'kms_psr2_sf',
> >         'kms_psr_stress_test',
> >         'kms_pwrite_crc',
> >         'sysfs_defaults',
> > @@ -435,6 +434,14 @@ test_executables += executable('kms_dsc',
> >            install : true)
> >   test_list += 'kms_dsc'
> >   
> > +test_executables += executable('kms_psr2_sf',
> > +          [ join_paths('i915', 'kms_psr2_sf.c'), join_paths
> > ('i915', 'kms_dsc_helper.c')],
> > +          dependencies : test_deps,
> > +          install_dir : libexecdir,
> > +          install_rpath : libexecdir_rpathdir,
> > +          install : true)
> > +test_list += 'kms_psr2_sf'
> > +
> >   if chamelium.found()
> >          test_executables += executable('kms_chamelium_color',
> >                                [ 'chamelium/kms_chamelium_color.c',
> > 'kms_color_helper.c' ],
> 


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

end of thread, other threads:[~2023-02-01 12:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-25  9:07 [igt-dev] [PATCH i-g-t 0/2] Psr2 dsc testcases Jouni Högander
2023-01-25  9:07 ` [igt-dev] [PATCH i-g-t 1/2] tests/i915/kms_psr2_sf: Some cleanups after Jouni Högander
2023-01-30  9:12   ` B, Jeevan
2023-01-25  9:07 ` [igt-dev] [PATCH i-g-t 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature Jouni Högander
2023-02-01 10:27   ` Swati Sharma
2023-02-01 12:12     ` Hogander, Jouni
2023-01-25 14:25 ` [igt-dev] ✓ Fi.CI.BAT: success for Psr2 dsc testcases Patchwork
2023-01-25 22:18 ` [igt-dev] ✓ Fi.CI.IGT: " 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.