All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v2 0/2] Psr2 dsc testcases
@ 2023-02-03  7:58 Jouni Högander
  2023-02-03  7:58 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Some cleanups after Jouni Högander
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Jouni Högander @ 2023-02-03  7:58 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.

v2:
 - check dsc is enabled
 - remove unused variables

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 | 370 +++++++++++++++++++++++++--------------
 tests/meson.build        |   9 +-
 2 files changed, 248 insertions(+), 131 deletions(-)

-- 
2.34.1

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

* [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Some cleanups after
  2023-02-03  7:58 [igt-dev] [PATCH i-g-t v2 0/2] Psr2 dsc testcases Jouni Högander
@ 2023-02-03  7:58 ` Jouni Högander
  2023-02-03  7:58 ` [igt-dev] [PATCH i-g-t v2 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature Jouni Högander
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Jouni Högander @ 2023-02-03  7:58 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>
Reviewed-by: Jeevan B <jeevan.b@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] 7+ messages in thread

* [igt-dev] [PATCH i-g-t v2 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature
  2023-02-03  7:58 [igt-dev] [PATCH i-g-t v2 0/2] Psr2 dsc testcases Jouni Högander
  2023-02-03  7:58 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Some cleanups after Jouni Högander
@ 2023-02-03  7:58 ` Jouni Högander
  2023-02-06 18:14   ` Swati Sharma
  2023-02-03 13:09 ` [igt-dev] ✓ Fi.CI.BAT: success for Psr2 dsc testcases (rev2) Patchwork
  2023-02-04  1:24 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 1 reply; 7+ messages in thread
From: Jouni Högander @ 2023-02-03  7:58 UTC (permalink / raw)
  To: igt-dev

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

v2:
 - check dsc is enabled (Swati)
 - remove unused variables

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 | 333 ++++++++++++++++++++++++++-------------
 tests/meson.build        |   9 +-
 2 files changed, 234 insertions(+), 108 deletions(-)

diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
index 078884ac..2d761d31 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,11 @@ typedef struct {
 	uint32_t screen_changes;
 	int cur_x, cur_y;
 	enum pipe pipe;
+	enum {
+		FEATURE_NONE  = 0,
+		FEATURE_DSC   = 1,
+		FEATURE_COUNT = 2,
+	} coexist_feature;
 } data_t;
 
 static const char *op_str(enum operations op)
@@ -104,6 +110,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 +242,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;
@@ -357,6 +383,10 @@ static void prepare(data_t *data)
 	igt_plane_set_size(primary, view_w, view_h);
 	igt_plane_set_position(primary, 0, 0);
 	igt_display_commit2(&data->display, COMMIT_ATOMIC);
+
+	if (data->coexist_feature & FEATURE_DSC)
+		igt_require_f(igt_is_dsc_enabled(data->drm_fd, output->name),
+			      "DSC is not enabled\n");
 }
 
 static inline void manual(const char *expected)
@@ -816,6 +846,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 +874,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 +913,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 +930,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 +956,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 +982,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 +1008,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 +1030,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 +1052,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 +1074,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 +1098,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 +1123,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 +1145,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 +1167,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 +1191,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 +1221,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 d93a07c9..6fb1bb86 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -233,7 +233,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',
@@ -436,6 +435,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] 7+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for Psr2 dsc testcases (rev2)
  2023-02-03  7:58 [igt-dev] [PATCH i-g-t v2 0/2] Psr2 dsc testcases Jouni Högander
  2023-02-03  7:58 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Some cleanups after Jouni Högander
  2023-02-03  7:58 ` [igt-dev] [PATCH i-g-t v2 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature Jouni Högander
@ 2023-02-03 13:09 ` Patchwork
  2023-02-04  1:24 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2023-02-03 13:09 UTC (permalink / raw)
  To: Hogander, Jouni; +Cc: igt-dev

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

== Series Details ==

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

== Summary ==

CI Bug Log - changes from IGT_7146 -> IGTPW_8440
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (25 -> 25)
------------------------------

  Additional (1): fi-blb-e6850 
  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_pm_rpm@module-reload:
    - fi-blb-e6850:       NOTRUN -> [SKIP][1] ([fdo#109271]) +51 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/fi-blb-e6850/igt@i915_pm_rpm@module-reload.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@gt_heartbeat:
    - {bat-jsl-1}:        [DMESG-FAIL][2] ([i915#5334]) -> [PASS][3]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/bat-jsl-1/igt@i915_selftest@live@gt_heartbeat.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/bat-jsl-1/igt@i915_selftest@live@gt_heartbeat.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
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
  [i915#6311]: https://gitlab.freedesktop.org/drm/intel/issues/6311
  [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
  [i915#7359]: https://gitlab.freedesktop.org/drm/intel/issues/7359
  [i915#7996]: https://gitlab.freedesktop.org/drm/intel/issues/7996


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7146 -> IGTPW_8440

  CI-20190529: 20190529
  CI_DRM_12688: 9fcffc218abe16fc5fbfca231fda6a7218661eb6 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8440: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/index.html
  IGT_7146: cfb2b835a2d688f123c9ffe5ecc7148e19e30e39 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git


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

+igt@kms_plane_alpha_blend@alpha-7efc
+igt@kms_plane_alpha_blend@alpha-basic
+igt@kms_plane_alpha_blend@alpha-opaque-fb
+igt@kms_plane_alpha_blend@alpha-transparent-fb
+igt@kms_plane_alpha_blend@constant-alpha-max
+igt@kms_plane_alpha_blend@constant-alpha-mid
+igt@kms_plane_alpha_blend@constant-alpha-min
+igt@kms_plane_alpha_blend@coverage-7efc
+igt@kms_plane_alpha_blend@coverage-vs-premult-vs-constant

== Logs ==

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

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for Psr2 dsc testcases (rev2)
  2023-02-03  7:58 [igt-dev] [PATCH i-g-t v2 0/2] Psr2 dsc testcases Jouni Högander
                   ` (2 preceding siblings ...)
  2023-02-03 13:09 ` [igt-dev] ✓ Fi.CI.BAT: success for Psr2 dsc testcases (rev2) Patchwork
@ 2023-02-04  1:24 ` Patchwork
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2023-02-04  1:24 UTC (permalink / raw)
  To: Hogander, Jouni; +Cc: igt-dev

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

== Series Details ==

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

== Summary ==

CI Bug Log - changes from IGT_7146_full -> IGTPW_8440_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (11 -> 9)
------------------------------

  Missing    (2): shard-rkl0 shard-tglu-9 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_fair@basic-deadline:
    - shard-glk:          [PASS][1] -> [FAIL][2] ([i915#2846])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-glk4/igt@gem_exec_fair@basic-deadline.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-glk3/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-glk:          [PASS][3] -> [FAIL][4] ([i915#2842])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-glk1/igt@gem_exec_fair@basic-throttle@rcs0.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-glk4/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a1-hdmi-a2:
    - shard-glk:          [PASS][5] -> [FAIL][6] ([i915#79]) +1 similar issue
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-glk1/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a1-hdmi-a2.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-glk8/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a1-hdmi-a2.html

  
#### Possible fixes ####

  * igt@fbdev@unaligned-read:
    - {shard-rkl}:        [SKIP][7] ([i915#2582]) -> [PASS][8] +1 similar issue
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-1/igt@fbdev@unaligned-read.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@fbdev@unaligned-read.html

  * igt@feature_discovery@psr2:
    - {shard-rkl}:        [SKIP][9] ([i915#658]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-1/igt@feature_discovery@psr2.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@feature_discovery@psr2.html

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

  * igt@gem_madvise@dontneed-before-pwrite:
    - {shard-rkl}:        [SKIP][13] ([i915#3282]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-3/igt@gem_madvise@dontneed-before-pwrite.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-5/igt@gem_madvise@dontneed-before-pwrite.html

  * igt@gen9_exec_parse@bb-chained:
    - {shard-rkl}:        [SKIP][15] ([i915#2527]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-1/igt@gen9_exec_parse@bb-chained.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-5/igt@gen9_exec_parse@bb-chained.html

  * igt@i915_pm_rpm@drm-resources-equal:
    - {shard-rkl}:        [SKIP][17] ([fdo#109308]) -> [PASS][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-2/igt@i915_pm_rpm@drm-resources-equal.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@i915_pm_rpm@drm-resources-equal.html

  * igt@i915_pm_rpm@modeset-lpsp-stress-no-wait:
    - {shard-dg1}:        [SKIP][19] ([i915#1397]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-dg1-12/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-dg1-14/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_rc_ccs:
    - {shard-tglu}:       [SKIP][21] ([i915#1845] / [i915#7651]) -> [PASS][22] +2 similar issues
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-tglu-6/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_rc_ccs.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-tglu-7/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_rc_ccs.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - {shard-rkl}:        [SKIP][23] ([fdo#110189] / [i915#3955]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-1/igt@kms_fbcon_fbt@psr-suspend.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_fence_pin_leak:
    - {shard-tglu}:       [SKIP][25] ([fdo#109274] / [i915#1845]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-tglu-6/igt@kms_fence_pin_leak.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-tglu-7/igt@kms_fence_pin_leak.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu:
    - {shard-tglu}:       [SKIP][27] ([i915#1849]) -> [PASS][28] +2 similar issues
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite:
    - {shard-rkl}:        [SKIP][29] ([i915#1849] / [i915#4098]) -> [PASS][30] +11 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a-planes:
    - {shard-rkl}:        [SKIP][31] ([i915#1849]) -> [PASS][32] +1 similar issue
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-4/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a-planes.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a-planes.html

  * igt@kms_psr@suspend:
    - {shard-rkl}:        [SKIP][33] ([i915#1072]) -> [PASS][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-2/igt@kms_psr@suspend.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@kms_psr@suspend.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - {shard-rkl}:        [SKIP][35] ([i915#5461]) -> [PASS][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-5/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_rotation_crc@exhaust-fences:
    - {shard-rkl}:        [SKIP][37] ([i915#1845] / [i915#4098]) -> [PASS][38] +23 similar issues
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-4/igt@kms_rotation_crc@exhaust-fences.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@kms_rotation_crc@exhaust-fences.html

  * igt@kms_vblank@pipe-c-query-busy-hang:
    - {shard-tglu}:       [SKIP][39] ([i915#7651]) -> [PASS][40] +7 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-tglu-6/igt@kms_vblank@pipe-c-query-busy-hang.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-tglu-1/igt@kms_vblank@pipe-c-query-busy-hang.html

  * igt@perf@gen12-oa-tlb-invalidate:
    - {shard-rkl}:        [SKIP][41] ([fdo#109289]) -> [PASS][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-5/igt@perf@gen12-oa-tlb-invalidate.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@perf@gen12-oa-tlb-invalidate.html

  * igt@perf_pmu@idle@rcs0:
    - {shard-rkl}:        [FAIL][43] ([i915#4349]) -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-2/igt@perf_pmu@idle@rcs0.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-4/igt@perf_pmu@idle@rcs0.html

  * igt@prime_vgem@basic-read:
    - {shard-rkl}:        [SKIP][45] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-1/igt@prime_vgem@basic-read.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-5/igt@prime_vgem@basic-read.html

  * igt@testdisplay:
    - {shard-rkl}:        [SKIP][47] ([i915#4098]) -> [PASS][48]
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7146/shard-rkl-1/igt@testdisplay.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/shard-rkl-6/igt@testdisplay.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#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303
  [fdo#109307]: https://bugs.freedesktop.org/show_bug.cgi?id=109307
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312
  [fdo#109313]: https://bugs.freedesktop.org/show_bug.cgi?id=109313
  [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314
  [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#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [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#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [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#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [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#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3528]: https://gitlab.freedesktop.org/drm/intel/issues/3528
  [i915#3536]: https://gitlab.freedesktop.org/drm/intel/issues/3536
  [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#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#3825]: https://gitlab.freedesktop.org/drm/intel/issues/3825
  [i915#3826]: https://gitlab.freedesktop.org/drm/intel/issues/3826
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3952]: https://gitlab.freedesktop.org/drm/intel/issues/3952
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#3966]: https://gitlab.freedesktop.org/drm/intel/issues/3966
  [i915#3989]: https://gitlab.freedesktop.org/drm/intel/issues/3989
  [i915#4036]: https://gitlab.freedesktop.org/drm/intel/issues/4036
  [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#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [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#4854]: https://gitlab.freedesktop.org/drm/intel/issues/4854
  [i915#4859]: https://gitlab.freedesktop.org/drm/intel/issues/4859
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4877]: https://gitlab.freedesktop.org/drm/intel/issues/4877
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [i915#4881]: https://gitlab.freedesktop.org/drm/intel/issues/4881
  [i915#4885]: https://gitlab.freedesktop.org/drm/intel/issues/4885
  [i915#5115]: https://gitlab.freedesktop.org/drm/intel/issues/5115
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#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#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230
  [i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#6344]: https://gitlab.freedesktop.org/drm/intel/issues/6344
  [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#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [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#7052]: https://gitlab.freedesktop.org/drm/intel/issues/7052
  [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#7443]: https://gitlab.freedesktop.org/drm/intel/issues/7443
  [i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456
  [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
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7146 -> IGTPW_8440

  CI-20190529: 20190529
  CI_DRM_12688: 9fcffc218abe16fc5fbfca231fda6a7218661eb6 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8440: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8440/index.html
  IGT_7146: cfb2b835a2d688f123c9ffe5ecc7148e19e30e39 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* Re: [igt-dev] [PATCH i-g-t v2 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature
  2023-02-03  7:58 ` [igt-dev] [PATCH i-g-t v2 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature Jouni Högander
@ 2023-02-06 18:14   ` Swati Sharma
  2023-02-07  6:47     ` Hogander, Jouni
  0 siblings, 1 reply; 7+ messages in thread
From: Swati Sharma @ 2023-02-06 18:14 UTC (permalink / raw)
  To: Jouni Högander, igt-dev

Patch LGTM.
Reviewed-by: Swati Sharma <swati2.sharma@intel.com>

On 03-Feb-23 1:28 PM, Jouni Högander wrote:
> Add mechanism to add coexisting features with selective fetch
> and add dynamic subtests for DSC as coexisting feature.
> 
> v2:
>   - check dsc is enabled (Swati)
>   - remove unused variables
> 
> 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 | 333 ++++++++++++++++++++++++++-------------
>   tests/meson.build        |   9 +-
>   2 files changed, 234 insertions(+), 108 deletions(-)
> 
> diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
> index 078884ac..2d761d31 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,11 @@ typedef struct {
>   	uint32_t screen_changes;
>   	int cur_x, cur_y;
>   	enum pipe pipe;
> +	enum {
> +		FEATURE_NONE  = 0,
> +		FEATURE_DSC   = 1,
> +		FEATURE_COUNT = 2,
> +	} coexist_feature;
>   } data_t;
>   
>   static const char *op_str(enum operations op)
> @@ -104,6 +110,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 +242,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;
> @@ -357,6 +383,10 @@ static void prepare(data_t *data)
>   	igt_plane_set_size(primary, view_w, view_h);
>   	igt_plane_set_position(primary, 0, 0);
>   	igt_display_commit2(&data->display, COMMIT_ATOMIC);
> +
> +	if (data->coexist_feature & FEATURE_DSC)
> +		igt_require_f(igt_is_dsc_enabled(data->drm_fd, output->name),
> +			      "DSC is not enabled\n");
>   }
>   
>   static inline void manual(const char *expected)
> @@ -816,6 +846,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 +874,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 +913,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 +930,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 +956,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 +982,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 +1008,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 +1030,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 +1052,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 +1074,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 +1098,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 +1123,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 +1145,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 +1167,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 +1191,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 +1221,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 d93a07c9..6fb1bb86 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -233,7 +233,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',
> @@ -436,6 +435,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] 7+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v2 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature
  2023-02-06 18:14   ` Swati Sharma
@ 2023-02-07  6:47     ` Hogander, Jouni
  0 siblings, 0 replies; 7+ messages in thread
From: Hogander, Jouni @ 2023-02-07  6:47 UTC (permalink / raw)
  To: igt-dev, Sharma, Swati2

On Mon, 2023-02-06 at 23:44 +0530, Swati Sharma wrote:
> Patch LGTM.
> Reviewed-by: Swati Sharma <swati2.sharma@intel.com>

Thank you Swati. These two patches are now merged.

> 
> On 03-Feb-23 1:28 PM, Jouni Högander wrote:
> > Add mechanism to add coexisting features with selective fetch
> > and add dynamic subtests for DSC as coexisting feature.
> > 
> > v2:
> >   - check dsc is enabled (Swati)
> >   - remove unused variables
> > 
> > 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 | 333 ++++++++++++++++++++++++++--------
> > -----
> >   tests/meson.build        |   9 +-
> >   2 files changed, 234 insertions(+), 108 deletions(-)
> > 
> > diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
> > index 078884ac..2d761d31 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,11 @@ typedef struct {
> >         uint32_t screen_changes;
> >         int cur_x, cur_y;
> >         enum pipe pipe;
> > +       enum {
> > +               FEATURE_NONE  = 0,
> > +               FEATURE_DSC   = 1,
> > +               FEATURE_COUNT = 2,
> > +       } coexist_feature;
> >   } data_t;
> >   
> >   static const char *op_str(enum operations op)
> > @@ -104,6 +110,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 +242,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;
> > @@ -357,6 +383,10 @@ static void prepare(data_t *data)
> >         igt_plane_set_size(primary, view_w, view_h);
> >         igt_plane_set_position(primary, 0, 0);
> >         igt_display_commit2(&data->display, COMMIT_ATOMIC);
> > +
> > +       if (data->coexist_feature & FEATURE_DSC)
> > +               igt_require_f(igt_is_dsc_enabled(data->drm_fd,
> > output->name),
> > +                             "DSC is not enabled\n");
> >   }
> >   
> >   static inline void manual(const char *expected)
> > @@ -816,6 +846,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 +874,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 +913,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 +930,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 +956,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 +982,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 +1008,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 +1030,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 +1052,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 +1074,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 +1098,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 +1123,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 +1145,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 +1167,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 +1191,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 +1221,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 d93a07c9..6fb1bb86 100644
> > --- a/tests/meson.build
> > +++ b/tests/meson.build
> > @@ -233,7 +233,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',
> > @@ -436,6 +435,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] 7+ messages in thread

end of thread, other threads:[~2023-02-07  6:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-03  7:58 [igt-dev] [PATCH i-g-t v2 0/2] Psr2 dsc testcases Jouni Högander
2023-02-03  7:58 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/i915/kms_psr2_sf: Some cleanups after Jouni Högander
2023-02-03  7:58 ` [igt-dev] [PATCH i-g-t v2 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature Jouni Högander
2023-02-06 18:14   ` Swati Sharma
2023-02-07  6:47     ` Hogander, Jouni
2023-02-03 13:09 ` [igt-dev] ✓ Fi.CI.BAT: success for Psr2 dsc testcases (rev2) Patchwork
2023-02-04  1:24 ` [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.