Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset
@ 2023-12-11 11:36 Bhanuprakash Modem
  2023-12-11 11:36 ` [i-g-t V7 1/8] tests/kms_vrr: Use lib helper to print connector modes Bhanuprakash Modem
                   ` (9 more replies)
  0 siblings, 10 replies; 14+ messages in thread
From: Bhanuprakash Modem @ 2023-12-11 11:36 UTC (permalink / raw)
  To: igt-dev, mitulkumar.ajitkumar.golani

Add new subtests to
- Toggle the VRR enabled
- Switch between low refresh rate to high refresh rate and vice versa

seamlessly without modeset.

V2: Minor cleanups
V3: Fix few condition checks
V4: Fix Negative subtest
V5: Different tests for VRR & DRRS
V6: Include VRR-fastset as part of this series.
V7: Squash few patches

Bhanuprakash Modem (8):
  tests/kms_vrr: Use lib helper to print connector modes
  tests/kms_vrr: Clear VRR before exit
  tests/kms_vrr: Move all config constaints to new function
  tests/kms_vrr: Fix pipe/output combo validity constraint
  tests/kms_vrr: Add new subtest to switch RR without modeset
  tests/kms_vrr: Add new subtest for DRRS without modeset
  tests/kms_vrr: New subtest for toggle VRR during fastsets
  HAX: DO_NOT_MERGE: test only vrr tests

 tests/intel-ci/fast-feedback.testlist    | 180 +--------------
 tests/intel-ci/xe-fast-feedback.testlist | 267 +----------------------
 tests/kms_vrr.c                          | 243 +++++++++++++++++----
 3 files changed, 213 insertions(+), 477 deletions(-)

--
2.40.0

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

* [i-g-t V7 1/8] tests/kms_vrr: Use lib helper to print connector modes
  2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
@ 2023-12-11 11:36 ` Bhanuprakash Modem
  2023-12-11 11:36 ` [i-g-t V7 2/8] tests/kms_vrr: Clear VRR before exit Bhanuprakash Modem
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Bhanuprakash Modem @ 2023-12-11 11:36 UTC (permalink / raw)
  To: igt-dev, mitulkumar.ajitkumar.golani

Instead of writing a new logic at test level, use library helper
to print connector modes.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
 tests/kms_vrr.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index 5c190cd8c..bbdb54682 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -65,13 +65,6 @@
  */
 #define TEST_DURATION_NS (5000000000ull)
 
-#define DRM_MODE_FMT    "\"%s\": %d %d %d %d %d %d %d %d %d %d 0x%x 0x%x"
-#define DRM_MODE_ARG(m) \
-	(m)->name, (m)->vrefresh, (m)->clock, \
-	(m)->hdisplay, (m)->hsync_start, (m)->hsync_end, (m)->htotal, \
-	(m)->vdisplay, (m)->vsync_start, (m)->vsync_end, (m)->vtotal, \
-	(m)->type, (m)->flags
-
 enum {
 	TEST_BASIC = 1 << 0,
 	TEST_DPMS = 1 << 1,
@@ -162,14 +155,16 @@ output_mode_with_maxrate(igt_output_t *output, unsigned int vrr_max)
 	drmModeConnectorPtr connector = output->config.connector;
 	drmModeModeInfo mode = *igt_output_get_mode(output);
 
-	igt_debug("Default Mode " DRM_MODE_FMT "\n", DRM_MODE_ARG(&mode));
+	igt_info("Default Mode: ");
+	kmstest_dump_mode(&mode);
 
 	for (i = 0; i < connector->count_modes; i++)
 		if (connector->modes[i].vrefresh > mode.vrefresh &&
 		    connector->modes[i].vrefresh <= vrr_max)
 			mode = connector->modes[i];
 
-	igt_debug("Override Mode " DRM_MODE_FMT "\n", DRM_MODE_ARG(&mode));
+	igt_info("Override Mode: ");
+	kmstest_dump_mode(&mode);
 
 	return mode;
 }
-- 
2.40.0

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

* [i-g-t V7 2/8] tests/kms_vrr: Clear VRR before exit
  2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
  2023-12-11 11:36 ` [i-g-t V7 1/8] tests/kms_vrr: Use lib helper to print connector modes Bhanuprakash Modem
@ 2023-12-11 11:36 ` Bhanuprakash Modem
  2023-12-11 11:36 ` [i-g-t V7 3/8] tests/kms_vrr: Move all config constaints to new function Bhanuprakash Modem
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Bhanuprakash Modem @ 2023-12-11 11:36 UTC (permalink / raw)
  To: igt-dev, mitulkumar.ajitkumar.golani

Before exiting the subtest, make sure to clear the VRR.

V2: - New function for cleanup

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
 tests/kms_vrr.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index bbdb54682..13e7f3ca6 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -469,8 +469,11 @@ test_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint32_t flags)
 	igt_assert_f(result < 10,
 		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR %s threshold exceeded, result was %u%%\n",
 		     ((range.max + range.min) / 2), rate, (flags & TEST_NEGATIVE)? "on" : "off", result);
+}
 
-	/* Clean-up */
+static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
+{
+	igt_pipe_set_prop_value(&data->display, pipe, IGT_CRTC_VRR_ENABLED, false);
 	igt_plane_set_fb(data->primary, NULL);
 	igt_output_set_pipe(output, PIPE_NONE);
 	igt_output_override_mode(output, NULL);
@@ -510,6 +513,9 @@ run_vrr_test(data_t *data, test_t test, uint32_t flags)
 				igt_dynamic_f("pipe-%s-%s",
 					      kmstest_pipe_name(pipe), output->name)
 					test(data, pipe, output, flags);
+
+				test_cleanup(data, pipe, output);
+
 				break;
 			}
 		}
-- 
2.40.0

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

* [i-g-t V7 3/8] tests/kms_vrr: Move all config constaints to new function
  2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
  2023-12-11 11:36 ` [i-g-t V7 1/8] tests/kms_vrr: Use lib helper to print connector modes Bhanuprakash Modem
  2023-12-11 11:36 ` [i-g-t V7 2/8] tests/kms_vrr: Clear VRR before exit Bhanuprakash Modem
@ 2023-12-11 11:36 ` Bhanuprakash Modem
  2023-12-11 11:36 ` [i-g-t V7 4/8] tests/kms_vrr: Fix pipe/output combo validity constraint Bhanuprakash Modem
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Bhanuprakash Modem @ 2023-12-11 11:36 UTC (permalink / raw)
  To: igt-dev, mitulkumar.ajitkumar.golani

No functional change, cleanup only. Move all config checks
to new function.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
 tests/kms_vrr.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index 13e7f3ca6..df241aa6c 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -483,6 +483,21 @@ static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
 	igt_remove_fb(data->drm_fd, &data->fb0);
 }
 
+static bool config_constraint(igt_output_t *output, uint32_t flags)
+{
+	if (!has_vrr(output))
+		return false;
+
+	/* For Negative tests, panel should be non-vrr. */
+	if ((flags & TEST_NEGATIVE) && vrr_capable(output))
+		return false;
+
+	if ((flags & ~TEST_NEGATIVE) && !vrr_capable(output))
+		return false;
+
+	return true;
+}
+
 /* Runs tests on outputs that are VRR capable. */
 static void
 run_vrr_test(data_t *data, test_t test, uint32_t flags)
@@ -492,14 +507,7 @@ run_vrr_test(data_t *data, test_t test, uint32_t flags)
 	for_each_connected_output(&data->display, output) {
 		enum pipe pipe;
 
-		if (!has_vrr(output))
-			continue;
-
-		/* For Negative tests, panel should be non-vrr. */
-		if ((flags & TEST_NEGATIVE) && vrr_capable(output))
-			continue;
-
-		if ((flags & ~TEST_NEGATIVE) && !vrr_capable(output))
+		if (!config_constraint(output, flags))
 			continue;
 
 		for_each_pipe(&data->display, pipe) {
-- 
2.40.0

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

* [i-g-t V7 4/8] tests/kms_vrr: Fix pipe/output combo validity constraint
  2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
                   ` (2 preceding siblings ...)
  2023-12-11 11:36 ` [i-g-t V7 3/8] tests/kms_vrr: Move all config constaints to new function Bhanuprakash Modem
@ 2023-12-11 11:36 ` Bhanuprakash Modem
  2023-12-13  3:16   ` Golani, Mitulkumar Ajitkumar
  2023-12-11 11:36 ` [i-g-t V7 5/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 14+ messages in thread
From: Bhanuprakash Modem @ 2023-12-11 11:36 UTC (permalink / raw)
  To: igt-dev, mitulkumar.ajitkumar.golani

Before starting the subtest, we are checking the selected pipe/output
combo validity with default mode, but inside the subtest we are using
the mode with highest resolution.

Few panels exposes 4K as a default mode even though it supports 8K,
in this scenario test may misbehave.

So, check the pipe/output combo validity with the mode that we are
actually going to use in the subtest.

V2: Reword the commit message

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_vrr.c | 62 +++++++++++++++++++++++++++++++------------------
 1 file changed, 39 insertions(+), 23 deletions(-)

diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index df241aa6c..4540d8b4b 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -163,9 +163,6 @@ output_mode_with_maxrate(igt_output_t *output, unsigned int vrr_max)
 		    connector->modes[i].vrefresh <= vrr_max)
 			mode = connector->modes[i];
 
-	igt_info("Override Mode: ");
-	kmstest_dump_mode(&mode);
-
 	return mode;
 }
 
@@ -233,21 +230,7 @@ static void prepare_test(data_t *data, igt_output_t *output, enum pipe pipe)
 	drmModeModeInfo mode;
 	cairo_t *cr;
 
-	/* Reset output */
-	igt_display_reset(&data->display);
-	igt_output_set_pipe(output, pipe);
-
-	/* Capture VRR range */
-	data->range = get_vrr_range(data, output);
-
-	/* Override mode with max vrefresh.
-	 *   - vrr_min range should be less than the override mode vrefresh.
-	 *   - Limit the vrr_max range with the override mode vrefresh.
-	 */
-	mode = output_mode_with_maxrate(output, data->range.max);
-	igt_require(mode.vrefresh > data->range.min);
-	data->range.max = mode.vrefresh;
-	igt_output_override_mode(output, &mode);
+	mode = *igt_output_get_mode(output);
 
 	/* Prepare resources */
 	igt_create_color_fb(data->drm_fd, mode.hdisplay, mode.vdisplay,
@@ -483,7 +466,36 @@ static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
 	igt_remove_fb(data->drm_fd, &data->fb0);
 }
 
-static bool config_constraint(igt_output_t *output, uint32_t flags)
+static bool output_constraint(data_t *data, igt_output_t *output)
+{
+	drmModeModeInfo mode;
+
+	/* Reset output */
+	igt_display_reset(&data->display);
+
+	/* Capture VRR range */
+	data->range = get_vrr_range(data, output);
+
+	/*
+	 * Override mode with max vrefresh.
+	 *   - vrr_min range should be less than the override mode vrefresh.
+	 *   - Limit the vrr_max range with the override mode vrefresh.
+	 */
+	mode = output_mode_with_maxrate(output, data->range.max);
+	if (mode.vrefresh < data->range.min)
+		return false;
+
+	data->range.max = mode.vrefresh;
+
+	igt_info("Override Mode: ");
+	kmstest_dump_mode(&mode);
+
+	igt_output_override_mode(output, &mode);
+
+	return true;
+}
+
+static bool config_constraint(data_t *data, igt_output_t *output, uint32_t flags)
 {
 	if (!has_vrr(output))
 		return false;
@@ -495,6 +507,9 @@ static bool config_constraint(igt_output_t *output, uint32_t flags)
 	if ((flags & ~TEST_NEGATIVE) && !vrr_capable(output))
 		return false;
 
+	if (!output_constraint(data, output))
+		return false;
+
 	return true;
 }
 
@@ -507,16 +522,17 @@ run_vrr_test(data_t *data, test_t test, uint32_t flags)
 	for_each_connected_output(&data->display, output) {
 		enum pipe pipe;
 
-		if (!config_constraint(output, flags))
+		if (!config_constraint(data, output, flags))
 			continue;
 
 		for_each_pipe(&data->display, pipe) {
 			if (igt_pipe_connector_valid(pipe, output)) {
-				igt_display_reset(&data->display);
-
 				igt_output_set_pipe(output, pipe);
-				if (!intel_pipe_output_combo_valid(&data->display))
+
+				if (!intel_pipe_output_combo_valid(&data->display)) {
+					igt_output_set_pipe(output, PIPE_NONE);
 					continue;
+				}
 
 				igt_dynamic_f("pipe-%s-%s",
 					      kmstest_pipe_name(pipe), output->name)
-- 
2.40.0

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

* [i-g-t V7 5/8] tests/kms_vrr: Add new subtest to switch RR without modeset
  2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
                   ` (3 preceding siblings ...)
  2023-12-11 11:36 ` [i-g-t V7 4/8] tests/kms_vrr: Fix pipe/output combo validity constraint Bhanuprakash Modem
@ 2023-12-11 11:36 ` Bhanuprakash Modem
  2023-12-13  3:03   ` Golani, Mitulkumar Ajitkumar
  2023-12-11 11:36 ` [i-g-t V7 6/8] tests/kms_vrr: Add new subtest for DRRS " Bhanuprakash Modem
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 14+ messages in thread
From: Bhanuprakash Modem @ 2023-12-11 11:36 UTC (permalink / raw)
  To: igt-dev, mitulkumar.ajitkumar.golani

Add new subtest to switch between low refresh rate to high
refresh rate and vice versa seamlessly without modeset.

Below are the sequence of operations to perform:

1. Use High RR mode + VRR On  -> Measure vblank timings
2. Switch to Low RR mode -> Measure vblank timings
3. Switch back to High RR mode -> Measure vblank timings

V2: Squash other required patches

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Tested-by: Vidya Srinivas <vidya.srinivas@intel.com>
---
 tests/kms_vrr.c | 115 +++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 104 insertions(+), 11 deletions(-)

diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index 4540d8b4b..6cb5a9b10 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -53,6 +53,10 @@
  * SUBTEST: flipline
  * Description: Make sure that flips happen at flipline decision boundary.
  *
+ * SUBTEST: seamless-rr-switch-vrr
+ * Description: Test to switch RR seamlessly without modeset.
+ * Functionality: adaptive_sync, lrr
+ *
  * SUBTEST: negative-basic
  * Description: Make sure that VRR should not be enabled on the Non-VRR panel.
  */
@@ -70,7 +74,14 @@ enum {
 	TEST_DPMS = 1 << 1,
 	TEST_SUSPEND = 1 << 2,
 	TEST_FLIPLINE = 1 << 3,
-	TEST_NEGATIVE = 1 << 4,
+	TEST_SEAMLESS_VRR = 1 << 4,
+	TEST_NEGATIVE = 1 << 5,
+};
+
+enum {
+	HIGH_RR_MODE,
+	LOW_RR_MODE,
+	RR_MODES_COUNT,
 };
 
 typedef struct range {
@@ -85,6 +96,7 @@ typedef struct data {
 	igt_fb_t fb0;
 	igt_fb_t fb1;
 	range_t range;
+	drmModeModeInfo switch_modes[RR_MODES_COUNT];
 } data_t;
 
 typedef struct vtest_ns {
@@ -166,6 +178,24 @@ output_mode_with_maxrate(igt_output_t *output, unsigned int vrr_max)
 	return mode;
 }
 
+static drmModeModeInfo
+low_rr_mode_with_same_res(igt_output_t *output, unsigned int vrr_min)
+{
+	int i;
+	drmModeConnectorPtr connector = output->config.connector;
+	drmModeModeInfo mode = *igt_output_get_mode(output);
+
+	for (i = 0; i < connector->count_modes; i++)
+		if (connector->modes[i].hdisplay == mode.hdisplay &&
+		    connector->modes[i].vdisplay == mode.vdisplay &&
+		    connector->modes[i].clock < mode.clock &&
+		    connector->modes[i].vrefresh < mode.vrefresh &&
+		    connector->modes[i].vrefresh >= vrr_min)
+			mode = connector->modes[i];
+
+	return mode;
+}
+
 /* Read min and max vrr range from the connector debugfs. */
 static range_t
 get_vrr_range(data_t *data, igt_output_t *output)
@@ -329,7 +359,7 @@ flip_and_measure(data_t *data, igt_output_t *output, enum pipe pipe,
 		 * difference between 144Hz and 143Hz which should give this
 		 * enough accuracy for most use cases.
 		 */
-		if ((rate_ns < vtest_ns.min) && (rate_ns >= vtest_ns.max))
+		if ((rate_ns <= vtest_ns.min) && (rate_ns >= vtest_ns.max))
 			diff_ns = rate_ns;
 		else
 			diff_ns = vtest_ns.max;
@@ -379,6 +409,8 @@ test_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint32_t flags)
 
 	igt_info("VRR Test execution on %s, PIPE_%s with VRR range: (%u-%u) Hz\n",
 		 output->name, kmstest_pipe_name(pipe), range.min, range.max);
+	igt_info("Override Mode: ");
+	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
 
 	set_vrr_on_pipe(data, pipe, true);
 
@@ -454,6 +486,53 @@ test_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint32_t flags)
 		     ((range.max + range.min) / 2), rate, (flags & TEST_NEGATIVE)? "on" : "off", result);
 }
 
+static void
+test_seamless_rr_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint32_t flags)
+{
+	uint32_t result;
+	vtest_ns_t vtest_ns;
+	uint64_t rate;
+
+	igt_info("Use HIGH_RR Mode as default: ");
+	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
+
+	prepare_test(data, output, pipe);
+	vtest_ns = get_test_rate_ns(data->range);
+
+	igt_pipe_set_prop_value(&data->display, pipe, IGT_CRTC_VRR_ENABLED, true);
+	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
+
+	rate = vtest_ns.max;
+	result = flip_and_measure(data, output, pipe, rate, TEST_DURATION_NS);
+	igt_assert_f(result > 75,
+		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on threshold not reached, result was %u%%\n",
+		     data->range.max, rate, result);
+
+	/* Switch to low rr mode without modeset. */
+	igt_info("Switch to LOW_RR Mode: ");
+	kmstest_dump_mode(&data->switch_modes[LOW_RR_MODE]);
+	igt_output_override_mode(output, &data->switch_modes[LOW_RR_MODE]);
+	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
+
+	rate = vtest_ns.min;
+	result = flip_and_measure(data, output, pipe, rate, TEST_DURATION_NS);
+	igt_assert_f(result > 75,
+		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on threshold not reached, result was %u%%\n",
+		     data->range.min, rate, result);
+
+	/* Switch back to high rr mode without modeset. */
+	igt_info("Switch back to HIGH_RR Mode: ");
+	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
+	igt_output_override_mode(output, &data->switch_modes[HIGH_RR_MODE]);
+	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
+
+	rate = vtest_ns.mid;
+	result = flip_and_measure(data, output, pipe, rate, TEST_DURATION_NS);
+	igt_assert_f(result > 75,
+		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on threshold not reached, result was %u%%\n",
+		     ((data->range.max + data->range.min) / 2), rate, result);
+}
+
 static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
 {
 	igt_pipe_set_prop_value(&data->display, pipe, IGT_CRTC_VRR_ENABLED, false);
@@ -466,9 +545,11 @@ static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
 	igt_remove_fb(data->drm_fd, &data->fb0);
 }
 
-static bool output_constraint(data_t *data, igt_output_t *output)
+static bool output_constraint(data_t *data, igt_output_t *output, uint32_t flags)
 {
-	drmModeModeInfo mode;
+	if ((flags & TEST_SEAMLESS_VRR) &&
+	    output->config.connector->connector_type != DRM_MODE_CONNECTOR_eDP)
+		return false;
 
 	/* Reset output */
 	igt_display_reset(&data->display);
@@ -481,16 +562,22 @@ static bool output_constraint(data_t *data, igt_output_t *output)
 	 *   - vrr_min range should be less than the override mode vrefresh.
 	 *   - Limit the vrr_max range with the override mode vrefresh.
 	 */
-	mode = output_mode_with_maxrate(output, data->range.max);
-	if (mode.vrefresh < data->range.min)
+	data->switch_modes[HIGH_RR_MODE] = output_mode_with_maxrate(output, data->range.max);
+	if (data->switch_modes[HIGH_RR_MODE].vrefresh < data->range.min)
 		return false;
 
-	data->range.max = mode.vrefresh;
+	data->range.max = data->switch_modes[HIGH_RR_MODE].vrefresh;
+	igt_output_override_mode(output, &data->switch_modes[HIGH_RR_MODE]);
 
-	igt_info("Override Mode: ");
-	kmstest_dump_mode(&mode);
+	/* Search for a low refresh rate mode. */
+	if (!(flags & TEST_SEAMLESS_VRR))
+		return true;
+
+	data->switch_modes[LOW_RR_MODE] = low_rr_mode_with_same_res(output, data->range.min);
+	if (data->switch_modes[LOW_RR_MODE].vrefresh == data->switch_modes[HIGH_RR_MODE].vrefresh)
+		return false;
 
-	igt_output_override_mode(output, &mode);
+	data->range.min = data->switch_modes[LOW_RR_MODE].vrefresh;
 
 	return true;
 }
@@ -507,7 +594,7 @@ static bool config_constraint(data_t *data, igt_output_t *output, uint32_t flags
 	if ((flags & ~TEST_NEGATIVE) && !vrr_capable(output))
 		return false;
 
-	if (!output_constraint(data, output))
+	if (!output_constraint(data, output, flags))
 		return false;
 
 	return true;
@@ -583,6 +670,12 @@ igt_main
 	igt_subtest_with_dynamic("negative-basic")
 		run_vrr_test(&data, test_basic, TEST_NEGATIVE);
 
+	igt_describe("Test to switch RR seamlessly without modeset.");
+	igt_subtest_with_dynamic("seamless-rr-switch-vrr"){
+		igt_require_intel(data.drm_fd);
+		run_vrr_test(&data, test_seamless_rr_basic, TEST_SEAMLESS_VRR);
+	}
+
 	igt_fixture {
 		igt_display_fini(&data.display);
 		drm_close_driver(data.drm_fd);
-- 
2.40.0

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

* [i-g-t V7 6/8] tests/kms_vrr: Add new subtest for DRRS without modeset
  2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
                   ` (4 preceding siblings ...)
  2023-12-11 11:36 ` [i-g-t V7 5/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
@ 2023-12-11 11:36 ` Bhanuprakash Modem
  2023-12-12  6:45   ` Golani, Mitulkumar Ajitkumar
  2023-12-11 11:36 ` [i-g-t V7 7/8] tests/kms_vrr: New subtest for toggle VRR during fastsets Bhanuprakash Modem
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 14+ messages in thread
From: Bhanuprakash Modem @ 2023-12-11 11:36 UTC (permalink / raw)
  To: igt-dev, mitulkumar.ajitkumar.golani

This test is same as 'kms_vrr@seamless-rr-switch-vrr' but
performs on DRRS panel without enabling the VRR.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Tested-by: Vidya Srinivas <vidya.srinivas@intel.com>
---
 tests/kms_vrr.c | 69 +++++++++++++++++++++++++++++++++++--------------
 1 file changed, 49 insertions(+), 20 deletions(-)

diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index 6cb5a9b10..de2ee13c7 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -31,6 +31,7 @@
  */
 
 #include "igt.h"
+#include "i915/intel_drrs.h"
 #include "sw_sync.h"
 #include <fcntl.h>
 #include <signal.h>
@@ -57,6 +58,10 @@
  * Description: Test to switch RR seamlessly without modeset.
  * Functionality: adaptive_sync, lrr
  *
+ * SUBTEST: seamless-rr-switch-drrs
+ * Description: Test to switch RR seamlessly without modeset.
+ * Functionality: adaptive_sync, drrs
+ *
  * SUBTEST: negative-basic
  * Description: Make sure that VRR should not be enabled on the Non-VRR panel.
  */
@@ -75,7 +80,8 @@ enum {
 	TEST_SUSPEND = 1 << 2,
 	TEST_FLIPLINE = 1 << 3,
 	TEST_SEAMLESS_VRR = 1 << 4,
-	TEST_NEGATIVE = 1 << 5,
+	TEST_SEAMLESS_DRRS = 1 << 5,
+	TEST_NEGATIVE = 1 << 6,
 };
 
 enum {
@@ -492,24 +498,27 @@ test_seamless_rr_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint3
 	uint32_t result;
 	vtest_ns_t vtest_ns;
 	uint64_t rate;
+	bool vrr = !!(flags & TEST_SEAMLESS_VRR);
 
-	igt_info("Use HIGH_RR Mode as default: ");
+	igt_info("Use HIGH_RR Mode as default (VRR: %s): ", vrr ? "ON" : "OFF");
 	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
 
 	prepare_test(data, output, pipe);
 	vtest_ns = get_test_rate_ns(data->range);
 
-	igt_pipe_set_prop_value(&data->display, pipe, IGT_CRTC_VRR_ENABLED, true);
-	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
+	if (vrr) {
+		igt_pipe_set_prop_value(&data->display, pipe, IGT_CRTC_VRR_ENABLED, true);
+		igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
+	}
 
 	rate = vtest_ns.max;
 	result = flip_and_measure(data, output, pipe, rate, TEST_DURATION_NS);
 	igt_assert_f(result > 75,
-		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on threshold not reached, result was %u%%\n",
-		     data->range.max, rate, result);
+		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR %s threshold not reached, result was %u%%\n",
+		     data->range.max, rate, vrr ? "on" : "off", result);
 
 	/* Switch to low rr mode without modeset. */
-	igt_info("Switch to LOW_RR Mode: ");
+	igt_info("Switch to LOW_RR Mode (VRR: %s): ", vrr ? "ON" : "OFF");
 	kmstest_dump_mode(&data->switch_modes[LOW_RR_MODE]);
 	igt_output_override_mode(output, &data->switch_modes[LOW_RR_MODE]);
 	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
@@ -517,25 +526,28 @@ test_seamless_rr_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint3
 	rate = vtest_ns.min;
 	result = flip_and_measure(data, output, pipe, rate, TEST_DURATION_NS);
 	igt_assert_f(result > 75,
-		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on threshold not reached, result was %u%%\n",
-		     data->range.min, rate, result);
+		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR %s threshold not reached, result was %u%%\n",
+		     data->range.min, rate, vrr ? "on" : "off", result);
 
 	/* Switch back to high rr mode without modeset. */
-	igt_info("Switch back to HIGH_RR Mode: ");
+	igt_info("Switch back to HIGH_RR Mode (VRR: %s): ", vrr ? "ON" : "OFF");
 	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
 	igt_output_override_mode(output, &data->switch_modes[HIGH_RR_MODE]);
 	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
 
 	rate = vtest_ns.mid;
 	result = flip_and_measure(data, output, pipe, rate, TEST_DURATION_NS);
-	igt_assert_f(result > 75,
-		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on threshold not reached, result was %u%%\n",
-		     ((data->range.max + data->range.min) / 2), rate, result);
+	igt_assert_f(vrr ? (result > 75) : (result < 10),
+		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR %s threshold %s, result was %u%%\n",
+		     ((data->range.max + data->range.min) / 2), rate,
+		     vrr ? "on" : "off", vrr ? "not reached" : "exceeded", result);
 }
 
 static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
 {
-	igt_pipe_set_prop_value(&data->display, pipe, IGT_CRTC_VRR_ENABLED, false);
+	if (vrr_capable(output))
+		igt_pipe_set_prop_value(&data->display, pipe, IGT_CRTC_VRR_ENABLED, false);
+
 	igt_plane_set_fb(data->primary, NULL);
 	igt_output_set_pipe(output, PIPE_NONE);
 	igt_output_override_mode(output, NULL);
@@ -547,10 +559,16 @@ static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
 
 static bool output_constraint(data_t *data, igt_output_t *output, uint32_t flags)
 {
-	if ((flags & TEST_SEAMLESS_VRR) &&
+	if ((flags & (TEST_SEAMLESS_VRR | TEST_SEAMLESS_DRRS)) &&
 	    output->config.connector->connector_type != DRM_MODE_CONNECTOR_eDP)
 		return false;
 
+	if ((flags & TEST_SEAMLESS_DRRS) &&
+	    !intel_output_has_drrs(data->drm_fd, output)) {
+		igt_info("Selected panel won't support DRRS.\n");
+		return false;
+	}
+
 	/* Reset output */
 	igt_display_reset(&data->display);
 
@@ -570,7 +588,7 @@ static bool output_constraint(data_t *data, igt_output_t *output, uint32_t flags
 	igt_output_override_mode(output, &data->switch_modes[HIGH_RR_MODE]);
 
 	/* Search for a low refresh rate mode. */
-	if (!(flags & TEST_SEAMLESS_VRR))
+	if (!(flags & (TEST_SEAMLESS_VRR | TEST_SEAMLESS_DRRS)))
 		return true;
 
 	data->switch_modes[LOW_RR_MODE] = low_rr_mode_with_same_res(output, data->range.min);
@@ -587,6 +605,9 @@ static bool config_constraint(data_t *data, igt_output_t *output, uint32_t flags
 	if (!has_vrr(output))
 		return false;
 
+	if (flags & TEST_SEAMLESS_DRRS)
+		goto out;
+
 	/* For Negative tests, panel should be non-vrr. */
 	if ((flags & TEST_NEGATIVE) && vrr_capable(output))
 		return false;
@@ -594,6 +615,7 @@ static bool config_constraint(data_t *data, igt_output_t *output, uint32_t flags
 	if ((flags & ~TEST_NEGATIVE) && !vrr_capable(output))
 		return false;
 
+out:
 	if (!output_constraint(data, output, flags))
 		return false;
 
@@ -670,10 +692,17 @@ igt_main
 	igt_subtest_with_dynamic("negative-basic")
 		run_vrr_test(&data, test_basic, TEST_NEGATIVE);
 
-	igt_describe("Test to switch RR seamlessly without modeset.");
-	igt_subtest_with_dynamic("seamless-rr-switch-vrr"){
-		igt_require_intel(data.drm_fd);
-		run_vrr_test(&data, test_seamless_rr_basic, TEST_SEAMLESS_VRR);
+	igt_subtest_group {
+		igt_fixture
+			igt_require_intel(data.drm_fd);
+
+		igt_describe("Test to switch RR seamlessly without modeset.");
+		igt_subtest_with_dynamic("seamless-rr-switch-vrr")
+			run_vrr_test(&data, test_seamless_rr_basic, TEST_SEAMLESS_VRR);
+
+		igt_describe("Test to switch RR seamlessly without modeset.");
+		igt_subtest_with_dynamic("seamless-rr-switch-drrs")
+			run_vrr_test(&data, test_seamless_rr_basic, TEST_SEAMLESS_DRRS);
 	}
 
 	igt_fixture {
-- 
2.40.0

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

* [i-g-t V7 7/8] tests/kms_vrr: New subtest for toggle VRR during fastsets
  2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
                   ` (5 preceding siblings ...)
  2023-12-11 11:36 ` [i-g-t V7 6/8] tests/kms_vrr: Add new subtest for DRRS " Bhanuprakash Modem
@ 2023-12-11 11:36 ` Bhanuprakash Modem
  2023-12-11 11:36 ` [i-g-t V7 8/8] HAX: DO_NOT_MERGE: test only vrr tests Bhanuprakash Modem
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Bhanuprakash Modem @ 2023-12-11 11:36 UTC (permalink / raw)
  To: igt-dev, mitulkumar.ajitkumar.golani; +Cc: Nidhi Gupta

Allow VRR to be toggled during fastsets, without full modeset.
This patch enables 'kms_vrr@flip-basic' subtest to verify fastset
too.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Signed-off-by: Nidhi Gupta <nidhi1.gupta@intel.com>
Tested-by: Vidya Srinivas <vidya.srinivas@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
 tests/kms_vrr.c | 30 +++++++++++++++++++++---------
 1 file changed, 21 insertions(+), 9 deletions(-)

diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index de2ee13c7..1ace970a5 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -41,6 +41,10 @@
  * Description: Tests that VRR is enabled and that the difference between flip
  *              timestamps converges to the requested rate
  *
+ * SUBTEST: flip-basic-fastset
+ * Description: Tests that VRR is enabled without modeset and that the difference
+ *              between flip timestamps converges to the requested rate
+ *
  * SUBTEST: flip-dpms
  * Description: Tests with DPMS that VRR is enabled and that the difference
  *              between flip timestamps converges to the requested rate.
@@ -81,7 +85,8 @@ enum {
 	TEST_FLIPLINE = 1 << 3,
 	TEST_SEAMLESS_VRR = 1 << 4,
 	TEST_SEAMLESS_DRRS = 1 << 5,
-	TEST_NEGATIVE = 1 << 6,
+	TEST_FASTSET = 1 << 6,
+	TEST_NEGATIVE = 1 << 7,
 };
 
 enum {
@@ -253,11 +258,15 @@ static bool vrr_capable(igt_output_t *output)
 }
 
 /* Toggles variable refresh rate on the pipe. */
-static void set_vrr_on_pipe(data_t *data, enum pipe pipe, bool enabled)
+static void set_vrr_on_pipe(data_t *data, enum pipe pipe,
+			    bool need_modeset, bool enabled)
 {
 	igt_pipe_set_prop_value(&data->display, pipe, IGT_CRTC_VRR_ENABLED,
 				enabled);
-	igt_display_commit2(&data->display, COMMIT_ATOMIC);
+
+	igt_assert(igt_display_try_commit_atomic(&data->display,
+						 need_modeset ? DRM_MODE_ATOMIC_ALLOW_MODESET : 0,
+						 NULL) == 0);
 }
 
 /* Prepare the display for testing on the given pipe. */
@@ -418,7 +427,7 @@ test_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint32_t flags)
 	igt_info("Override Mode: ");
 	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
 
-	set_vrr_on_pipe(data, pipe, true);
+	set_vrr_on_pipe(data, pipe, !(flags & TEST_FASTSET), true);
 
 	/*
 	 * Do a short run with VRR, but don't check the result.
@@ -484,7 +493,7 @@ test_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint32_t flags)
 	 * modeset. And the expected behavior is the same as disabling VRR on
 	 * a VRR capable panel.
 	 */
-	set_vrr_on_pipe(data, pipe, (flags & TEST_NEGATIVE)? true : false);
+	set_vrr_on_pipe(data, pipe, !(flags & TEST_FASTSET), (flags & TEST_NEGATIVE) ? true : false);
 	rate = vtest_ns.mid;
 	result = flip_and_measure(data, output, pipe, rate, TEST_DURATION_NS);
 	igt_assert_f(result < 10,
@@ -506,10 +515,8 @@ test_seamless_rr_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint3
 	prepare_test(data, output, pipe);
 	vtest_ns = get_test_rate_ns(data->range);
 
-	if (vrr) {
-		igt_pipe_set_prop_value(&data->display, pipe, IGT_CRTC_VRR_ENABLED, true);
-		igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
-	}
+	if (vrr)
+		set_vrr_on_pipe(data, pipe, false, true);
 
 	rate = vtest_ns.max;
 	result = flip_and_measure(data, output, pipe, rate, TEST_DURATION_NS);
@@ -703,6 +710,11 @@ igt_main
 		igt_describe("Test to switch RR seamlessly without modeset.");
 		igt_subtest_with_dynamic("seamless-rr-switch-drrs")
 			run_vrr_test(&data, test_seamless_rr_basic, TEST_SEAMLESS_DRRS);
+
+		igt_describe("Tests that VRR is enabled without modeset and that the difference "
+			     "between flip timestamps converges to the requested rate");
+		igt_subtest_with_dynamic("flip-basic-fastset")
+			run_vrr_test(&data, test_basic, TEST_FASTSET);
 	}
 
 	igt_fixture {
-- 
2.40.0

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

* [i-g-t V7 8/8] HAX: DO_NOT_MERGE: test only vrr tests
  2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
                   ` (6 preceding siblings ...)
  2023-12-11 11:36 ` [i-g-t V7 7/8] tests/kms_vrr: New subtest for toggle VRR during fastsets Bhanuprakash Modem
@ 2023-12-11 11:36 ` Bhanuprakash Modem
  2023-12-11 19:37 ` ✗ Fi.CI.BAT: failure for tests/kms_vrr: Add new subtest to switch RR without modeset (rev8) Patchwork
  2023-12-11 20:15 ` ✓ CI.xeBAT: success " Patchwork
  9 siblings, 0 replies; 14+ messages in thread
From: Bhanuprakash Modem @ 2023-12-11 11:36 UTC (permalink / raw)
  To: igt-dev, mitulkumar.ajitkumar.golani

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/intel-ci/fast-feedback.testlist    | 180 +--------------
 tests/intel-ci/xe-fast-feedback.testlist | 267 +----------------------
 2 files changed, 12 insertions(+), 435 deletions(-)

diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index 60ce1efa4..5bed5310e 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -1,177 +1,9 @@
 # Try to load the driver if it's not available yet.
 igt@i915_module_load@load
 
-# Keep alphabetically sorted by default
-igt@core_auth@basic-auth
-igt@debugfs_test@read_all_entries
-igt@debugfs_test@basic-hwmon
-igt@fbdev@eof
-igt@fbdev@info
-igt@fbdev@nullptr
-igt@fbdev@read
-igt@fbdev@write
-igt@gem_basic@bad-close
-igt@gem_basic@create-close
-igt@gem_basic@create-fd-close
-igt@gem_busy@busy@all-engines
-igt@gem_close_race@basic-process
-igt@gem_close_race@basic-threads
-igt@gem_ctx_create@basic
-igt@gem_ctx_create@basic-files
-igt@gem_ctx_exec@basic
-igt@gem_exec_basic@basic
-igt@gem_exec_create@basic
-igt@gem_exec_fence@basic-busy
-igt@gem_exec_fence@basic-wait
-igt@gem_exec_fence@basic-await
-igt@gem_exec_fence@nb-await
-igt@gem_exec_gttfill@basic
-igt@gem_exec_parallel@engines
-igt@gem_exec_store@basic
-igt@gem_flink_basic@bad-flink
-igt@gem_flink_basic@bad-open
-igt@gem_flink_basic@basic
-igt@gem_flink_basic@double-flink
-igt@gem_flink_basic@flink-lifetime
-igt@gem_huc_copy@huc-copy
-igt@gem_linear_blits@basic
-igt@gem_mmap@basic
-igt@gem_mmap_gtt@basic
-igt@gem_render_linear_blits@basic
-igt@gem_render_tiled_blits@basic
-igt@gem_ringfill@basic-all
-igt@gem_softpin@allocator-basic
-igt@gem_softpin@allocator-basic-reserve
-igt@gem_softpin@safe-alignment
-igt@gem_sync@basic-all
-igt@gem_sync@basic-each
-igt@gem_tiled_blits@basic
-igt@gem_tiled_fence_blits@basic
-igt@gem_tiled_pread_basic
-igt@gem_wait@busy@all-engines
-igt@gem_wait@wait@all-engines
-igt@i915_getparams_basic@basic-eu-total
-igt@i915_getparams_basic@basic-subslice-total
-igt@i915_hangman@error-state-basic
-igt@i915_pciid
-igt@kms_addfb_basic@addfb25-4-tiled
-igt@kms_addfb_basic@addfb25-bad-modifier
-igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling
-igt@kms_addfb_basic@addfb25-modifier-no-flag
-igt@kms_addfb_basic@addfb25-x-tiled-legacy
-igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy
-igt@kms_addfb_basic@addfb25-yf-tiled-legacy
-igt@kms_addfb_basic@addfb25-y-tiled-legacy
-igt@kms_addfb_basic@addfb25-y-tiled-small-legacy
-igt@kms_addfb_basic@bad-pitch-0
-igt@kms_addfb_basic@bad-pitch-1024
-igt@kms_addfb_basic@bad-pitch-128
-igt@kms_addfb_basic@bad-pitch-256
-igt@kms_addfb_basic@bad-pitch-32
-igt@kms_addfb_basic@bad-pitch-63
-igt@kms_addfb_basic@bad-pitch-65536
-igt@kms_addfb_basic@bad-pitch-999
-igt@kms_addfb_basic@basic
-igt@kms_addfb_basic@basic-x-tiled-legacy
-igt@kms_addfb_basic@basic-y-tiled-legacy
-igt@kms_addfb_basic@bo-too-small
-igt@kms_addfb_basic@bo-too-small-due-to-tiling
-igt@kms_addfb_basic@clobberred-modifier
-igt@kms_addfb_basic@framebuffer-vs-set-tiling
-igt@kms_addfb_basic@invalid-get-prop
-igt@kms_addfb_basic@invalid-get-prop-any
-igt@kms_addfb_basic@invalid-set-prop
-igt@kms_addfb_basic@invalid-set-prop-any
-igt@kms_addfb_basic@no-handle
-igt@kms_addfb_basic@size-max
-igt@kms_addfb_basic@small-bo
-igt@kms_addfb_basic@tile-pitch-mismatch
-igt@kms_addfb_basic@too-high
-igt@kms_addfb_basic@too-wide
-igt@kms_addfb_basic@unused-handle
-igt@kms_addfb_basic@unused-modifier
-igt@kms_addfb_basic@unused-offsets
-igt@kms_addfb_basic@unused-pitches
-igt@kms_busy@basic
-igt@kms_prop_blob@basic
-igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic
-igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy
-igt@kms_cursor_legacy@basic-flip-after-cursor-atomic
-igt@kms_cursor_legacy@basic-flip-after-cursor-legacy
-igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size
-igt@kms_cursor_legacy@basic-flip-before-cursor-atomic
-igt@kms_cursor_legacy@basic-flip-before-cursor-legacy
-igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size
-igt@kms_dsc@dsc-basic
-igt@kms_flip@basic-flip-vs-dpms
-igt@kms_flip@basic-flip-vs-modeset
-igt@kms_flip@basic-flip-vs-wf_vblank
-igt@kms_flip@basic-plain-flip
-igt@kms_force_connector_basic@force-connector-state
-igt@kms_force_connector_basic@force-edid
-igt@kms_force_connector_basic@force-load-detect
-igt@kms_force_connector_basic@prune-stale-modes
-igt@kms_frontbuffer_tracking@basic
-igt@kms_hdmi_inject@inject-audio
-igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24
-igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12
-igt@kms_pipe_crc_basic@hang-read-crc
-igt@kms_pipe_crc_basic@nonblocking-crc
-igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence
-igt@kms_pipe_crc_basic@read-crc
-igt@kms_pipe_crc_basic@read-crc-frame-sequence
-igt@kms_pm_backlight@basic-brightness
-igt@kms_pm_rpm@basic-pci-d3-state
-igt@kms_pm_rpm@basic-rte
-igt@kms_psr@psr-primary-page-flip
-igt@kms_psr@psr-cursor-plane-move
-igt@kms_psr@psr-sprite-plane-onoff
-igt@kms_psr@psr-primary-mmap-gtt
-igt@kms_setmode@basic-clone-single-crtc
-igt@i915_pm_rps@basic-api
-igt@prime_self_import@basic-llseek-bad
-igt@prime_self_import@basic-llseek-size
-igt@prime_self_import@basic-with_fd_dup
-igt@prime_self_import@basic-with_one_bo
-igt@prime_self_import@basic-with_one_bo_two_files
-igt@prime_self_import@basic-with_two_bos
-igt@prime_vgem@basic-fence-flip
-igt@prime_vgem@basic-fence-mmap
-igt@prime_vgem@basic-fence-read
-igt@prime_vgem@basic-gtt
-igt@prime_vgem@basic-read
-igt@prime_vgem@basic-write
-igt@vgem_basic@setversion
-igt@vgem_basic@create
-igt@vgem_basic@debugfs
-igt@vgem_basic@dmabuf-export
-igt@vgem_basic@dmabuf-fence
-igt@vgem_basic@dmabuf-fence-before
-igt@vgem_basic@dmabuf-mmap
-igt@vgem_basic@mmap
-igt@vgem_basic@second-client
-igt@vgem_basic@sysfs
-
-# All tests that do module unloading and reloading are executed last.
-# They will sometimes reveal issues of earlier tests leaving the
-# driver in a broken state that is not otherwise noticed in that test.
-
-igt@core_hotunplug@unbind-rebind
-igt@vgem_basic@unload
-igt@i915_module_load@reload
-igt@gem_lmem_swapping@basic
-igt@gem_lmem_swapping@parallel-random-engines
-igt@gem_lmem_swapping@random-engines
-igt@gem_lmem_swapping@verify-random
-igt@i915_pm_rpm@module-reload
-
-# Kernel selftests
-igt@i915_selftest@live
-igt@dmabuf@all-tests
-
-# System wide suspend tests
-igt@i915_suspend@basic-s2idle-without-i915
-igt@i915_suspend@basic-s3-without-i915
-igt@gem_exec_suspend@basic-s0
-igt@gem_exec_suspend@basic-s3
-igt@kms_pipe_crc_basic@suspend-read-crc
+igt@kms_vrr@flip-basic
+igt@kms_vrr@flip-basic-fastset
+igt@kms_vrr@seamless-rr-switch-drrs
+igt@kms_vrr@seamless-rr-switch-vrr
+igt@kms_vrr@flipline
+igt@kms_vrr@negative-basic
diff --git a/tests/intel-ci/xe-fast-feedback.testlist b/tests/intel-ci/xe-fast-feedback.testlist
index d7caa25c4..47cb97781 100644
--- a/tests/intel-ci/xe-fast-feedback.testlist
+++ b/tests/intel-ci/xe-fast-feedback.testlist
@@ -1,264 +1,9 @@
 # Should be the first test
 igt@xe_module_load@load
 
-igt@xe_compute@compute-square
-igt@xe_create@create-execqueues-noleak
-igt@xe_create@create-execqueues-leak
-igt@xe_create@create-massive-size
-igt@xe_debugfs@base
-igt@xe_debugfs@gt
-igt@xe_debugfs@forcewake
-igt@xe_dma_buf_sync@export-dma-buf-once
-igt@xe_dma_buf_sync@export-dma-buf-once-read-sync
-igt@xe_evict@evict-beng-mixed-threads-small-multi-vm
-igt@xe_evict@evict-beng-small
-igt@xe_evict@evict-beng-small-cm
-igt@xe_evict@evict-beng-small-external
-igt@xe_evict@evict-beng-small-external-cm
-igt@xe_evict@evict-beng-small-multi-vm
-igt@xe_evict@evict-cm-threads-small
-igt@xe_evict@evict-mixed-threads-small
-igt@xe_evict@evict-mixed-threads-small-multi-vm
-igt@xe_evict@evict-small
-igt@xe_evict@evict-small-cm
-igt@xe_evict@evict-small-external
-igt@xe_evict@evict-small-external-cm
-igt@xe_evict@evict-small-multi-vm
-igt@xe_evict@evict-small-multi-vm-cm
-igt@xe_evict@evict-threads-small
-igt@xe_evict_ccs@evict-overcommit-simple
-igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd
-igt@xe_exec_balancer@twice-virtual-basic
-igt@xe_exec_balancer@no-exec-virtual-basic
-igt@xe_exec_balancer@twice-cm-virtual-basic
-igt@xe_exec_balancer@no-exec-cm-virtual-basic
-igt@xe_exec_balancer@twice-virtual-userptr
-igt@xe_exec_balancer@twice-cm-virtual-userptr
-igt@xe_exec_balancer@twice-virtual-rebind
-igt@xe_exec_balancer@twice-cm-virtual-rebind
-igt@xe_exec_balancer@twice-virtual-userptr-rebind
-igt@xe_exec_balancer@twice-cm-virtual-userptr-rebind
-igt@xe_exec_balancer@twice-virtual-userptr-invalidate
-igt@xe_exec_balancer@twice-cm-virtual-userptr-invalidate
-igt@xe_exec_balancer@twice-parallel-basic
-igt@xe_exec_balancer@no-exec-parallel-basic
-igt@xe_exec_balancer@twice-parallel-userptr
-igt@xe_exec_balancer@twice-parallel-rebind
-igt@xe_exec_balancer@twice-parallel-userptr-rebind
-igt@xe_exec_balancer@twice-parallel-userptr-invalidate
-igt@xe_exec_basic@twice-basic
-igt@xe_exec_basic@no-exec-basic
-igt@xe_exec_basic@twice-basic-defer-mmap
-igt@xe_exec_basic@twice-basic-defer-bind
-igt@xe_exec_basic@twice-userptr
-igt@xe_exec_basic@twice-rebind
-igt@xe_exec_basic@twice-userptr-rebind
-igt@xe_exec_basic@twice-userptr-invalidate
-igt@xe_exec_basic@no-exec-userptr-invalidate
-igt@xe_exec_basic@twice-bindexecqueue
-igt@xe_exec_basic@no-exec-bindexecqueue
-igt@xe_exec_basic@twice-bindexecqueue-userptr
-igt@xe_exec_basic@twice-bindexecqueue-rebind
-igt@xe_exec_basic@twice-bindexecqueue-userptr-rebind
-igt@xe_exec_basic@twice-bindexecqueue-userptr-invalidate
-igt@xe_exec_compute_mode@twice-basic
-igt@xe_exec_compute_mode@twice-preempt-fence-early
-igt@xe_exec_compute_mode@twice-userptr
-igt@xe_exec_compute_mode@twice-rebind
-igt@xe_exec_compute_mode@twice-userptr-rebind
-igt@xe_exec_compute_mode@twice-userptr-invalidate
-igt@xe_exec_compute_mode@twice-bindexecqueue
-igt@xe_exec_compute_mode@twice-bindexecqueue-userptr
-igt@xe_exec_compute_mode@twice-bindexecqueue-rebind
-igt@xe_exec_compute_mode@twice-bindexecqueue-userptr-rebind
-igt@xe_exec_compute_mode@twice-bindexecqueue-userptr-invalidate
-igt@xe_exec_reset@close-fd-no-exec
-igt@xe_exec_reset@cm-close-fd-no-exec
-igt@xe_exec_reset@virtual-close-fd-no-exec
-igt@xe_exec_store@basic-store
-igt@xe_exec_threads@threads-basic
-igt@xe_exec_threads@threads-mixed-basic
-igt@xe_exec_threads@threads-mixed-shared-vm-basic
-igt@xe_exec_threads@threads-mixed-fd-basic
-igt@xe_exec_threads@threads-mixed-userptr-invalidate
-igt@xe_exec_threads@threads-mixed-shared-vm-userptr-invalidate-race
-igt@xe_gpgpu_fill@basic
-igt@xe_gt_freq@freq_basic_api
-igt@xe_gt_freq@freq_fixed_idle
-igt@xe_gt_freq@freq_range_idle
-igt@xe_huc_copy@huc_copy
-igt@xe_intel_bb@add-remove-objects
-igt@xe_intel_bb@bb-with-allocator
-igt@xe_intel_bb@blit-reloc
-igt@xe_intel_bb@blit-simple
-igt@xe_intel_bb@create-in-region
-igt@xe_intel_bb@delta-check
-igt@xe_intel_bb@destroy-bb
-igt@xe_intel_bb@intel-bb-blit-none
-igt@xe_intel_bb@intel-bb-blit-x
-igt@xe_intel_bb@intel-bb-blit-y
-igt@xe_intel_bb@lot-of-buffers
-igt@xe_intel_bb@offset-control
-igt@xe_intel_bb@purge-bb
-igt@xe_intel_bb@render
-igt@xe_intel_bb@reset-bb
-igt@xe_intel_bb@simple-bb
-igt@xe_intel_bb@simple-bb-ctx
-igt@xe_mmap@bad-extensions
-igt@xe_mmap@bad-flags
-igt@xe_mmap@bad-object
-igt@xe_mmap@cpu-caching
-igt@xe_mmap@system
-igt@xe_mmap@vram
-igt@xe_mmap@vram-system
-igt@xe_pm_residency@gt-c6-on-idle
-igt@xe_prime_self_import@basic-with_one_bo
-igt@xe_prime_self_import@basic-with_fd_dup
-#igt@xe_prime_self_import@basic-llseek-size
-igt@xe_query@query-engines
-igt@xe_query@query-mem-usage
-igt@xe_query@query-gt-list
-igt@xe_query@query-config
-igt@xe_query@query-hwconfig
-igt@xe_query@query-topology
-igt@xe_query@query-invalid-extension
-igt@xe_query@query-invalid-query
-igt@xe_query@query-invalid-size
-igt@xe_spin_batch@spin-basic
-igt@xe_spin_batch@spin-batch
-igt@xe_sysfs_defaults@engine-defaults
-igt@xe_sysfs_scheduler@preempt_timeout_us-invalid
-igt@xe_sysfs_scheduler@preempt_timeout_us-min-max
-igt@xe_sysfs_scheduler@timeslice_duration_us-invalid
-igt@xe_sysfs_scheduler@timeslice_duration_us-min-max
-igt@xe_sysfs_scheduler@job_timeout_ms-invalid
-igt@xe_sysfs_scheduler@job_timeout_ms-min-max
-#igt@xe_vm@bind-once
-#igt@xe_vm@scratch
-igt@xe_vm@shared-pte-page
-igt@xe_vm@shared-pde-page
-igt@xe_vm@shared-pde2-page
-igt@xe_vm@shared-pde3-page
-igt@xe_vm@bind-execqueues-independent
-igt@xe_vm@munmap-style-unbind-one-partial
-igt@xe_vm@munmap-style-unbind-end
-igt@xe_vm@munmap-style-unbind-front
-igt@xe_vm@munmap-style-unbind-userptr-one-partial
-igt@xe_vm@munmap-style-unbind-userptr-end
-igt@xe_vm@munmap-style-unbind-userptr-front
-igt@xe_vm@munmap-style-unbind-userptr-inval-end
-igt@xe_vm@munmap-style-unbind-userptr-inval-front
-igt@xe_pat@userptr-coh-none
-igt@xe_pat@prime-self-import-coh
-igt@xe_pat@prime-external-import-coh
-igt@xe_pat@pat-index-all
-igt@xe_pat@pat-index-xelp
-igt@xe_pat@pat-index-xehpc
-igt@xe_pat@pat-index-xelpg
-igt@xe_pat@pat-index-xe2
-igt@xe_waitfence@abstime
-igt@xe_waitfence@engine
-igt@xe_waitfence@reltime
-igt@kms_addfb_basic@addfb25-4-tiled
-igt@kms_addfb_basic@addfb25-bad-modifier
-igt@kms_addfb_basic@addfb25-modifier-no-flag
-igt@kms_addfb_basic@addfb25-x-tiled-legacy
-igt@kms_addfb_basic@addfb25-yf-tiled-legacy
-igt@kms_addfb_basic@addfb25-y-tiled-legacy
-igt@kms_addfb_basic@addfb25-y-tiled-small-legacy
-igt@kms_addfb_basic@bad-pitch-0
-igt@kms_addfb_basic@bad-pitch-1024
-igt@kms_addfb_basic@bad-pitch-128
-igt@kms_addfb_basic@bad-pitch-256
-igt@kms_addfb_basic@bad-pitch-32
-igt@kms_addfb_basic@bad-pitch-63
-igt@kms_addfb_basic@bad-pitch-65536
-igt@kms_addfb_basic@bad-pitch-999
-igt@kms_addfb_basic@basic
-igt@kms_addfb_basic@basic-x-tiled-legacy
-igt@kms_addfb_basic@bo-too-small
-igt@kms_addfb_basic@invalid-get-prop
-igt@kms_addfb_basic@invalid-get-prop-any
-igt@kms_addfb_basic@invalid-set-prop
-igt@kms_addfb_basic@invalid-set-prop-any
-igt@kms_addfb_basic@no-handle
-igt@kms_addfb_basic@size-max
-igt@kms_addfb_basic@small-bo
-igt@kms_addfb_basic@too-high
-igt@kms_addfb_basic@too-wide
-igt@kms_addfb_basic@unused-handle
-igt@kms_addfb_basic@unused-modifier
-igt@kms_addfb_basic@unused-offsets
-igt@kms_addfb_basic@unused-pitches
-igt@kms_cursor_legacy@basic-flip-after-cursor-atomic
-igt@kms_cursor_legacy@basic-flip-after-cursor-legacy
-igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size
-igt@kms_cursor_legacy@basic-flip-before-cursor-atomic
-igt@kms_cursor_legacy@basic-flip-before-cursor-legacy
-igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size
-igt@kms_dsc@dsc-basic
-igt@kms_flip@basic-flip-vs-dpms
-igt@kms_flip@basic-flip-vs-modeset
-igt@kms_flip@basic-flip-vs-wf_vblank
-igt@kms_flip@basic-plain-flip
-igt@kms_force_connector_basic@force-connector-state
-igt@kms_force_connector_basic@force-edid
-igt@kms_force_connector_basic@prune-stale-modes
-igt@kms_frontbuffer_tracking@basic
-igt@kms_hdmi_inject@inject-audio
-igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24
-igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12
-igt@kms_pipe_crc_basic@hang-read-crc
-igt@kms_pipe_crc_basic@nonblocking-crc
-igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence
-igt@kms_pipe_crc_basic@read-crc
-igt@kms_pipe_crc_basic@read-crc-frame-sequence
-igt@kms_prop_blob@basic
-igt@kms_psr@psr-primary-page-flip
-igt@kms_psr@psr-cursor-plane-move
-igt@kms_psr@psr-sprite-plane-onoff
-
-# All tests that do module unloading and reloading are executed last.
-# They will sometimes reveal issues of earlier tests leaving the
-# driver in a broken state that is not otherwise noticed in that test.
-igt@core_hotunplug@unbind-rebind
-
-# Run KUnit tests at the end
-igt@xe_live_ktest@bo
-igt@xe_live_ktest@dmabuf
-igt@xe_live_ktest@migrate
-
-# Move fault_mode tests at the end to unblock execution
-igt@xe_exec_fault_mode@twice-basic
-igt@xe_exec_fault_mode@many-basic
-igt@xe_exec_fault_mode@twice-userptr
-igt@xe_exec_fault_mode@twice-rebind
-igt@xe_exec_fault_mode@twice-userptr-rebind
-igt@xe_exec_fault_mode@twice-userptr-invalidate
-igt@xe_exec_fault_mode@twice-bindexecqueue
-igt@xe_exec_fault_mode@twice-bindexecqueue-userptr
-igt@xe_exec_fault_mode@twice-bindexecqueue-rebind
-igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind
-igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate
-igt@xe_exec_fault_mode@twice-basic-imm
-igt@xe_exec_fault_mode@twice-userptr-imm
-igt@xe_exec_fault_mode@twice-rebind-imm
-igt@xe_exec_fault_mode@twice-userptr-rebind-imm
-igt@xe_exec_fault_mode@twice-userptr-invalidate-imm
-igt@xe_exec_fault_mode@twice-bindexecqueue-imm
-igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-imm
-igt@xe_exec_fault_mode@twice-bindexecqueue-rebind-imm
-igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-imm
-igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate-imm
-igt@xe_exec_fault_mode@twice-basic-prefetch
-igt@xe_exec_fault_mode@twice-userptr-prefetch
-igt@xe_exec_fault_mode@twice-rebind-prefetch
-igt@xe_exec_fault_mode@twice-userptr-rebind-prefetch
-igt@xe_exec_fault_mode@twice-userptr-invalidate-prefetch
-igt@xe_exec_fault_mode@twice-bindexecqueue-prefetch
-igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch
-igt@xe_exec_fault_mode@twice-bindexecqueue-rebind-prefetch
-igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch
-igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate-prefetch
-igt@xe_exec_fault_mode@twice-invalid-fault
-igt@xe_exec_fault_mode@twice-invalid-userptr-fault
+igt@kms_vrr@flip-basic
+igt@kms_vrr@flip-basic-fastset
+igt@kms_vrr@seamless-rr-switch-drrs
+igt@kms_vrr@seamless-rr-switch-vrr
+igt@kms_vrr@flipline
+igt@kms_vrr@negative-basic
-- 
2.40.0

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

* ✗ Fi.CI.BAT: failure for tests/kms_vrr: Add new subtest to switch RR without modeset (rev8)
  2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
                   ` (7 preceding siblings ...)
  2023-12-11 11:36 ` [i-g-t V7 8/8] HAX: DO_NOT_MERGE: test only vrr tests Bhanuprakash Modem
@ 2023-12-11 19:37 ` Patchwork
  2023-12-11 20:15 ` ✓ CI.xeBAT: success " Patchwork
  9 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2023-12-11 19:37 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

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

== Series Details ==

Series: tests/kms_vrr: Add new subtest to switch RR without modeset (rev8)
URL   : https://patchwork.freedesktop.org/series/127047/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14007 -> IGTPW_10390
====================================================

Summary
-------

  **FAILURE**

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

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

Participating hosts (32 -> 32)
------------------------------

  Additional (2): bat-dg2-8 fi-pnv-d510 
  Missing    (2): bat-adlp-11 fi-snb-2520m 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_vrr@flip-basic-fastset (NEW):
    - bat-jsl-3:          NOTRUN -> [SKIP][1] +2 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-jsl-3/igt@kms_vrr@flip-basic-fastset.html
    - bat-dg2-11:         NOTRUN -> [SKIP][2] +2 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-dg2-11/igt@kms_vrr@flip-basic-fastset.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][3] +2 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-mtlp-8/igt@kms_vrr@flip-basic-fastset.html

  * {igt@kms_vrr@seamless-rr-switch-drrs} (NEW):
    - bat-dg2-8:          NOTRUN -> [SKIP][4] +2 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-dg2-8/igt@kms_vrr@seamless-rr-switch-drrs.html
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][5] +2 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-tgl-1115g4/igt@kms_vrr@seamless-rr-switch-drrs.html
    - fi-rkl-11600:       NOTRUN -> [SKIP][6] +2 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-rkl-11600/igt@kms_vrr@seamless-rr-switch-drrs.html
    - bat-dg1-7:          NOTRUN -> [SKIP][7] +2 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-dg1-7/igt@kms_vrr@seamless-rr-switch-drrs.html

  * {igt@kms_vrr@seamless-rr-switch-vrr} (NEW):
    - bat-adlp-9:         NOTRUN -> [SKIP][8] +1 other test skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-adlp-9/igt@kms_vrr@seamless-rr-switch-vrr.html
    - bat-adln-1:         NOTRUN -> [SKIP][9] +1 other test skip
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-adln-1/igt@kms_vrr@seamless-rr-switch-vrr.html
    - {bat-dg2-14}:       NOTRUN -> [SKIP][10] +2 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-dg2-14/igt@kms_vrr@seamless-rr-switch-vrr.html
    - bat-jsl-1:          NOTRUN -> [SKIP][11] +2 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-jsl-1/igt@kms_vrr@seamless-rr-switch-vrr.html
    - bat-rplp-1:         NOTRUN -> [SKIP][12] +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-rplp-1/igt@kms_vrr@seamless-rr-switch-vrr.html
    - bat-adlp-6:         NOTRUN -> [SKIP][13]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-adlp-6/igt@kms_vrr@seamless-rr-switch-vrr.html

  
New tests
---------

  New tests have been introduced between CI_DRM_14007 and IGTPW_10390:

### New IGT tests (6) ###

  * igt@kms_vrr@flip-basic-fastset:
    - Statuses : 29 skip(s)
    - Exec time: [0.0] s

  * igt@kms_vrr@flip-basic-fastset@pipe-a-dp-1:
    - Statuses : 1 pass(s)
    - Exec time: [10.41] s

  * igt@kms_vrr@flip-basic-fastset@pipe-a-dp-3:
    - Statuses : 1 pass(s)
    - Exec time: [10.88] s

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - Statuses : 28 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_vrr@seamless-rr-switch-drrs@pipe-a-edp-1:
    - Statuses : 3 pass(s)
    - Exec time: [15.18, 16.36] s

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - Statuses : 31 skip(s)
    - Exec time: [0.0] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_vrr@flip-basic:
    - fi-rkl-11600:       NOTRUN -> [SKIP][14] ([i915#3555]) +2 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-rkl-11600/igt@kms_vrr@flip-basic.html
    - fi-blb-e6850:       NOTRUN -> [SKIP][15] ([fdo#109271]) +5 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-blb-e6850/igt@kms_vrr@flip-basic.html
    - bat-mtlp-6:         NOTRUN -> [SKIP][16] ([i915#9792]) +5 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-mtlp-6/igt@kms_vrr@flip-basic.html
    - bat-atsm-1:         NOTRUN -> [SKIP][17] ([i915#6078]) +5 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-atsm-1/igt@kms_vrr@flip-basic.html
    - bat-jsl-3:          NOTRUN -> [SKIP][18] ([i915#3555]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-jsl-3/igt@kms_vrr@flip-basic.html
    - bat-adln-1:         NOTRUN -> [SKIP][19] ([i915#3555]) +1 other test skip
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-adln-1/igt@kms_vrr@flip-basic.html

  * igt@kms_vrr@flip-basic-fastset (NEW):
    - fi-pnv-d510:        NOTRUN -> [SKIP][20] ([fdo#109271]) +5 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-pnv-d510/igt@kms_vrr@flip-basic-fastset.html
    - fi-kbl-x1275:       NOTRUN -> [SKIP][21] ([fdo#109271]) +5 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-kbl-x1275/igt@kms_vrr@flip-basic-fastset.html
    - fi-glk-j4005:       NOTRUN -> [SKIP][22] ([fdo#109271]) +5 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-glk-j4005/igt@kms_vrr@flip-basic-fastset.html

  * igt@kms_vrr@flipline:
    - fi-skl-guc:         NOTRUN -> [SKIP][23] ([fdo#109271]) +5 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-skl-guc/igt@kms_vrr@flipline.html
    - fi-ivb-3770:        NOTRUN -> [SKIP][24] ([fdo#109271]) +5 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-ivb-3770/igt@kms_vrr@flipline.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][25] ([i915#3555] / [i915#8808]) +1 other test skip
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-mtlp-8/igt@kms_vrr@flipline.html
    - bat-dg2-8:          NOTRUN -> [SKIP][26] ([i915#3555]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-dg2-8/igt@kms_vrr@flipline.html
    - bat-jsl-1:          NOTRUN -> [SKIP][27] ([i915#3555]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-jsl-1/igt@kms_vrr@flipline.html
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][28] ([i915#3555]) +2 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-tgl-1115g4/igt@kms_vrr@flipline.html
    - bat-rplp-1:         NOTRUN -> [SKIP][29] ([i915#3555]) +1 other test skip
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-rplp-1/igt@kms_vrr@flipline.html

  * igt@kms_vrr@negative-basic:
    - fi-skl-6600u:       NOTRUN -> [SKIP][30] ([fdo#109271]) +5 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-skl-6600u/igt@kms_vrr@negative-basic.html
    - fi-apl-guc:         NOTRUN -> [SKIP][31] ([fdo#109271]) +5 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-apl-guc/igt@kms_vrr@negative-basic.html
    - fi-cfl-guc:         NOTRUN -> [SKIP][32] ([fdo#109271]) +5 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-cfl-guc/igt@kms_vrr@negative-basic.html
    - bat-dg1-7:          NOTRUN -> [SKIP][33] ([i915#3555]) +2 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-dg1-7/igt@kms_vrr@negative-basic.html
    - bat-dg2-11:         NOTRUN -> [SKIP][34] ([i915#3555]) +2 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-dg2-11/igt@kms_vrr@negative-basic.html
    - bat-adlp-9:         NOTRUN -> [SKIP][35] ([i915#3555])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/bat-adlp-9/igt@kms_vrr@negative-basic.html

  * {igt@kms_vrr@seamless-rr-switch-drrs} (NEW):
    - fi-elk-e7500:       NOTRUN -> [SKIP][36] ([fdo#109271]) +5 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-elk-e7500/igt@kms_vrr@seamless-rr-switch-drrs.html
    - fi-kbl-guc:         NOTRUN -> [SKIP][37] ([fdo#109271]) +5 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-kbl-guc/igt@kms_vrr@seamless-rr-switch-drrs.html
    - fi-cfl-8700k:       NOTRUN -> [SKIP][38] ([fdo#109271]) +5 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-cfl-8700k/igt@kms_vrr@seamless-rr-switch-drrs.html
    - fi-ilk-650:         NOTRUN -> [SKIP][39] ([fdo#109271]) +5 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-ilk-650/igt@kms_vrr@seamless-rr-switch-drrs.html

  * {igt@kms_vrr@seamless-rr-switch-vrr} (NEW):
    - fi-cfl-8109u:       NOTRUN -> [SKIP][40] ([fdo#109271]) +5 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-cfl-8109u/igt@kms_vrr@seamless-rr-switch-vrr.html
    - fi-kbl-7567u:       NOTRUN -> [SKIP][41] ([fdo#109271]) +5 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-kbl-7567u/igt@kms_vrr@seamless-rr-switch-vrr.html
    - fi-bsw-nick:        NOTRUN -> [SKIP][42] ([fdo#109271]) +5 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/fi-bsw-nick/igt@kms_vrr@seamless-rr-switch-vrr.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#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#6078]: https://gitlab.freedesktop.org/drm/intel/issues/6078
  [i915#8808]: https://gitlab.freedesktop.org/drm/intel/issues/8808
  [i915#9792]: https://gitlab.freedesktop.org/drm/intel/issues/9792


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7635 -> IGTPW_10390

  CI-20190529: 20190529
  CI_DRM_14007: e888b3a5196ef64c917c30f387276bdcedc9d23b @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_10390: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/index.html
  IGT_7635: 0b796be8ce05cb2070ce5136d248f438c962d11e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git


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

+igt@kms_vrr@flip-basic-fastset
+igt@kms_vrr@seamless-rr-switch-drrs
+igt@kms_vrr@seamless-rr-switch-vrr

== Logs ==

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

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

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

* ✓ CI.xeBAT: success for tests/kms_vrr: Add new subtest to switch RR without modeset (rev8)
  2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
                   ` (8 preceding siblings ...)
  2023-12-11 19:37 ` ✗ Fi.CI.BAT: failure for tests/kms_vrr: Add new subtest to switch RR without modeset (rev8) Patchwork
@ 2023-12-11 20:15 ` Patchwork
  9 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2023-12-11 20:15 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

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

== Series Details ==

Series: tests/kms_vrr: Add new subtest to switch RR without modeset (rev8)
URL   : https://patchwork.freedesktop.org/series/127047/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_7635_BAT -> XEIGTPW_10390_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts

New tests
---------

  New tests have been introduced between XEIGT_7635_BAT and XEIGTPW_10390_BAT:

### New IGT tests (4) ###

  * igt@kms_vrr@flip-basic-fastset:
    - Statuses : 1 pass(s) 3 skip(s)
    - Exec time: [0.0, 10.63] s

  * igt@kms_vrr@flip-basic-fastset@pipe-a-dp-3:
    - Statuses : 1 pass(s)
    - Exec time: [10.54] s

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - Statuses : 4 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_vrr@flip-basic-fastset (NEW):
    - bat-pvc-2:          NOTRUN -> [SKIP][1] ([Intel XE#1024]) +5 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10390/bat-pvc-2/igt@kms_vrr@flip-basic-fastset.html

  * igt@kms_vrr@negative-basic:
    - bat-atsm-2:         NOTRUN -> [SKIP][2] ([Intel XE#1024]) +5 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10390/bat-atsm-2/igt@kms_vrr@negative-basic.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][3] ([Intel XE#455]) +2 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10390/bat-dg2-oem2/igt@kms_vrr@negative-basic.html

  * {igt@kms_vrr@seamless-rr-switch-vrr} (NEW):
    - bat-adlp-7:         NOTRUN -> [SKIP][4] ([Intel XE#455]) +4 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10390/bat-adlp-7/igt@kms_vrr@seamless-rr-switch-vrr.html

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

  [Intel XE#1024]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1024
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455


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

  * IGT: IGT_7635 -> IGTPW_10390
  * Linux: xe-566-00175313322325f73095e61b6cbe550f47184408 -> xe-567-40d280365ff402063171ef96571c19b60db87971

  IGTPW_10390: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10390/index.html
  IGT_7635: 0b796be8ce05cb2070ce5136d248f438c962d11e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-566-00175313322325f73095e61b6cbe550f47184408: 00175313322325f73095e61b6cbe550f47184408
  xe-567-40d280365ff402063171ef96571c19b60db87971: 40d280365ff402063171ef96571c19b60db87971

== Logs ==

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

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

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

* RE: [i-g-t V7 6/8] tests/kms_vrr: Add new subtest for DRRS without modeset
  2023-12-11 11:36 ` [i-g-t V7 6/8] tests/kms_vrr: Add new subtest for DRRS " Bhanuprakash Modem
@ 2023-12-12  6:45   ` Golani, Mitulkumar Ajitkumar
  0 siblings, 0 replies; 14+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2023-12-12  6:45 UTC (permalink / raw)
  To: Modem, Bhanuprakash, igt-dev@lists.freedesktop.org



> -----Original Message-----
> From: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>
> Sent: Monday, December 11, 2023 5:07 PM
> To: igt-dev@lists.freedesktop.org; Golani, Mitulkumar Ajitkumar
> <mitulkumar.ajitkumar.golani@intel.com>
> Cc: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>; Srinivas,
> Vidya <vidya.srinivas@intel.com>
> Subject: [i-g-t V7 6/8] tests/kms_vrr: Add new subtest for DRRS without
> modeset
> 
> This test is same as 'kms_vrr@seamless-rr-switch-vrr' but performs on DRRS
> panel without enabling the VRR.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> Tested-by: Vidya Srinivas <vidya.srinivas@intel.com>
> ---
>  tests/kms_vrr.c | 69 +++++++++++++++++++++++++++++++++++--------------
>  1 file changed, 49 insertions(+), 20 deletions(-)
> 
> diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c index 6cb5a9b10..de2ee13c7
> 100644
> --- a/tests/kms_vrr.c
> +++ b/tests/kms_vrr.c
> @@ -31,6 +31,7 @@
>   */
> 
>  #include "igt.h"
> +#include "i915/intel_drrs.h"
>  #include "sw_sync.h"
>  #include <fcntl.h>
>  #include <signal.h>
> @@ -57,6 +58,10 @@
>   * Description: Test to switch RR seamlessly without modeset.
>   * Functionality: adaptive_sync, lrr
>   *
> + * SUBTEST: seamless-rr-switch-drrs
> + * Description: Test to switch RR seamlessly without modeset.
> + * Functionality: adaptive_sync, drrs
> + *
>   * SUBTEST: negative-basic
>   * Description: Make sure that VRR should not be enabled on the Non-VRR
> panel.
>   */
> @@ -75,7 +80,8 @@ enum {
>  	TEST_SUSPEND = 1 << 2,
>  	TEST_FLIPLINE = 1 << 3,
>  	TEST_SEAMLESS_VRR = 1 << 4,
> -	TEST_NEGATIVE = 1 << 5,
> +	TEST_SEAMLESS_DRRS = 1 << 5,
> +	TEST_NEGATIVE = 1 << 6,
>  };
> 
>  enum {
> @@ -492,24 +498,27 @@ test_seamless_rr_basic(data_t *data, enum pipe
> pipe, igt_output_t *output, uint3
>  	uint32_t result;
>  	vtest_ns_t vtest_ns;
>  	uint64_t rate;
> +	bool vrr = !!(flags & TEST_SEAMLESS_VRR);

Could have make it,
bool vrr = flags & TEST_SEAMLESS_VRR;

which can give same results, but for now ok, please update this when you get to add mode subtest under this node.

> 
> -	igt_info("Use HIGH_RR Mode as default: ");
> +	igt_info("Use HIGH_RR Mode as default (VRR: %s): ", vrr ? "ON" :
> +"OFF");
>  	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
> 
>  	prepare_test(data, output, pipe);
>  	vtest_ns = get_test_rate_ns(data->range);
> 
> -	igt_pipe_set_prop_value(&data->display, pipe,
> IGT_CRTC_VRR_ENABLED, true);
> -	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL)
> == 0);
> +	if (vrr) {
> +		igt_pipe_set_prop_value(&data->display, pipe,
> IGT_CRTC_VRR_ENABLED, true);
> +		igt_assert(igt_display_try_commit_atomic(&data->display, 0,
> NULL) == 0);
> +	}
> 
>  	rate = vtest_ns.max;
>  	result = flip_and_measure(data, output, pipe, rate,
> TEST_DURATION_NS);
>  	igt_assert_f(result > 75,
> -		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on
> threshold not reached, result was %u%%\n",
> -		     data->range.max, rate, result);
> +		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR %s
> threshold not reached, result was %u%%\n",
> +		     data->range.max, rate, vrr ? "on" : "off", result);
> 
>  	/* Switch to low rr mode without modeset. */
> -	igt_info("Switch to LOW_RR Mode: ");
> +	igt_info("Switch to LOW_RR Mode (VRR: %s): ", vrr ? "ON" : "OFF");
>  	kmstest_dump_mode(&data->switch_modes[LOW_RR_MODE]);
>  	igt_output_override_mode(output, &data-
> >switch_modes[LOW_RR_MODE]);
>  	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL)
> == 0); @@ -517,25 +526,28 @@ test_seamless_rr_basic(data_t *data, enum
> pipe pipe, igt_output_t *output, uint3
>  	rate = vtest_ns.min;
>  	result = flip_and_measure(data, output, pipe, rate,
> TEST_DURATION_NS);
>  	igt_assert_f(result > 75,
> -		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on
> threshold not reached, result was %u%%\n",
> -		     data->range.min, rate, result);
> +		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR %s
> threshold not reached, result was %u%%\n",
> +		     data->range.min, rate, vrr ? "on" : "off", result);
> 
>  	/* Switch back to high rr mode without modeset. */
> -	igt_info("Switch back to HIGH_RR Mode: ");
> +	igt_info("Switch back to HIGH_RR Mode (VRR: %s): ", vrr ? "ON" :
> +"OFF");
>  	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
>  	igt_output_override_mode(output, &data-
> >switch_modes[HIGH_RR_MODE]);
>  	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL)
> == 0);
> 
>  	rate = vtest_ns.mid;
>  	result = flip_and_measure(data, output, pipe, rate,
> TEST_DURATION_NS);
> -	igt_assert_f(result > 75,
> -		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on
> threshold not reached, result was %u%%\n",
> -		     ((data->range.max + data->range.min) / 2), rate, result);
> +	igt_assert_f(vrr ? (result > 75) : (result < 10),
> +		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR %s
> threshold %s, result was %u%%\n",
> +		     ((data->range.max + data->range.min) / 2), rate,
> +		     vrr ? "on" : "off", vrr ? "not reached" : "exceeded", result);
>  }
> 
>  static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
> {
> -	igt_pipe_set_prop_value(&data->display, pipe,
> IGT_CRTC_VRR_ENABLED, false);
> +	if (vrr_capable(output))
> +		igt_pipe_set_prop_value(&data->display, pipe,
> IGT_CRTC_VRR_ENABLED,
> +false);
> +
>  	igt_plane_set_fb(data->primary, NULL);
>  	igt_output_set_pipe(output, PIPE_NONE);
>  	igt_output_override_mode(output, NULL); @@ -547,10 +559,16 @@
> static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
> 
>  static bool output_constraint(data_t *data, igt_output_t *output, uint32_t
> flags)  {
> -	if ((flags & TEST_SEAMLESS_VRR) &&
> +	if ((flags & (TEST_SEAMLESS_VRR | TEST_SEAMLESS_DRRS)) &&
>  	    output->config.connector->connector_type !=
> DRM_MODE_CONNECTOR_eDP)
>  		return false;
> 
> +	if ((flags & TEST_SEAMLESS_DRRS) &&
> +	    !intel_output_has_drrs(data->drm_fd, output)) {
> +		igt_info("Selected panel won't support DRRS.\n");
> +		return false;
> +	}
> +
>  	/* Reset output */
>  	igt_display_reset(&data->display);
> 
> @@ -570,7 +588,7 @@ static bool output_constraint(data_t *data,
> igt_output_t *output, uint32_t flags
>  	igt_output_override_mode(output, &data-
> >switch_modes[HIGH_RR_MODE]);
> 
>  	/* Search for a low refresh rate mode. */
> -	if (!(flags & TEST_SEAMLESS_VRR))
> +	if (!(flags & (TEST_SEAMLESS_VRR | TEST_SEAMLESS_DRRS)))
>  		return true;
> 
>  	data->switch_modes[LOW_RR_MODE] =
> low_rr_mode_with_same_res(output, data->range.min); @@ -587,6 +605,9
> @@ static bool config_constraint(data_t *data, igt_output_t *output,
> uint32_t flags
>  	if (!has_vrr(output))
>  		return false;
> 
> +	if (flags & TEST_SEAMLESS_DRRS)
> +		goto out;
> +
>  	/* For Negative tests, panel should be non-vrr. */
>  	if ((flags & TEST_NEGATIVE) && vrr_capable(output))
>  		return false;
> @@ -594,6 +615,7 @@ static bool config_constraint(data_t *data,
> igt_output_t *output, uint32_t flags
>  	if ((flags & ~TEST_NEGATIVE) && !vrr_capable(output))
>  		return false;
> 
> +out:
>  	if (!output_constraint(data, output, flags))
>  		return false;
> 
> @@ -670,10 +692,17 @@ igt_main
>  	igt_subtest_with_dynamic("negative-basic")
>  		run_vrr_test(&data, test_basic, TEST_NEGATIVE);
> 
> -	igt_describe("Test to switch RR seamlessly without modeset.");
> -	igt_subtest_with_dynamic("seamless-rr-switch-vrr"){
> -		igt_require_intel(data.drm_fd);
> -		run_vrr_test(&data, test_seamless_rr_basic,
> TEST_SEAMLESS_VRR);
> +	igt_subtest_group {
> +		igt_fixture
> +			igt_require_intel(data.drm_fd);
> +
> +		igt_describe("Test to switch RR seamlessly without
> modeset.");
> +		igt_subtest_with_dynamic("seamless-rr-switch-vrr")
> +			run_vrr_test(&data, test_seamless_rr_basic,
> TEST_SEAMLESS_VRR);
> +
> +		igt_describe("Test to switch RR seamlessly without
> modeset.");
> +		igt_subtest_with_dynamic("seamless-rr-switch-drrs")
> +			run_vrr_test(&data, test_seamless_rr_basic,

Change LGTM
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>

> TEST_SEAMLESS_DRRS);
>  	}
> 
>  	igt_fixture {
> --
> 2.40.0

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

* RE: [i-g-t V7 5/8] tests/kms_vrr: Add new subtest to switch RR without modeset
  2023-12-11 11:36 ` [i-g-t V7 5/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
@ 2023-12-13  3:03   ` Golani, Mitulkumar Ajitkumar
  0 siblings, 0 replies; 14+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2023-12-13  3:03 UTC (permalink / raw)
  To: Modem, Bhanuprakash, igt-dev@lists.freedesktop.org



> -----Original Message-----
> From: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>
> Sent: Monday, December 11, 2023 5:07 PM
> To: igt-dev@lists.freedesktop.org; Golani, Mitulkumar Ajitkumar
> <mitulkumar.ajitkumar.golani@intel.com>
> Cc: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>; Srinivas,
> Vidya <vidya.srinivas@intel.com>
> Subject: [i-g-t V7 5/8] tests/kms_vrr: Add new subtest to switch RR without
> modeset
> 
> Add new subtest to switch between low refresh rate to high refresh rate and
> vice versa seamlessly without modeset.
> 
> Below are the sequence of operations to perform:
> 
> 1. Use High RR mode + VRR On  -> Measure vblank timings 2. Switch to Low
> RR mode -> Measure vblank timings 3. Switch back to High RR mode ->
> Measure vblank timings
> 
> V2: Squash other required patches
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> Tested-by: Vidya Srinivas <vidya.srinivas@intel.com>
> ---
>  tests/kms_vrr.c | 115 +++++++++++++++++++++++++++++++++++++++++++----
> -
>  1 file changed, 104 insertions(+), 11 deletions(-)
> 
> diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c index 4540d8b4b..6cb5a9b10
> 100644
> --- a/tests/kms_vrr.c
> +++ b/tests/kms_vrr.c
> @@ -53,6 +53,10 @@
>   * SUBTEST: flipline
>   * Description: Make sure that flips happen at flipline decision boundary.
>   *
> + * SUBTEST: seamless-rr-switch-vrr
> + * Description: Test to switch RR seamlessly without modeset.
> + * Functionality: adaptive_sync, lrr
> + *
>   * SUBTEST: negative-basic
>   * Description: Make sure that VRR should not be enabled on the Non-VRR
> panel.
>   */
> @@ -70,7 +74,14 @@ enum {
>  	TEST_DPMS = 1 << 1,
>  	TEST_SUSPEND = 1 << 2,
>  	TEST_FLIPLINE = 1 << 3,
> -	TEST_NEGATIVE = 1 << 4,
> +	TEST_SEAMLESS_VRR = 1 << 4,
> +	TEST_NEGATIVE = 1 << 5,
> +};
> +
> +enum {
> +	HIGH_RR_MODE,
> +	LOW_RR_MODE,
> +	RR_MODES_COUNT,
>  };
> 
>  typedef struct range {
> @@ -85,6 +96,7 @@ typedef struct data {
>  	igt_fb_t fb0;
>  	igt_fb_t fb1;
>  	range_t range;
> +	drmModeModeInfo switch_modes[RR_MODES_COUNT];
>  } data_t;
> 
>  typedef struct vtest_ns {
> @@ -166,6 +178,24 @@ output_mode_with_maxrate(igt_output_t *output,
> unsigned int vrr_max)
>  	return mode;
>  }
> 
> +static drmModeModeInfo
> +low_rr_mode_with_same_res(igt_output_t *output, unsigned int vrr_min) {
> +	int i;
> +	drmModeConnectorPtr connector = output->config.connector;
> +	drmModeModeInfo mode = *igt_output_get_mode(output);
> +
> +	for (i = 0; i < connector->count_modes; i++)
> +		if (connector->modes[i].hdisplay == mode.hdisplay &&
> +		    connector->modes[i].vdisplay == mode.vdisplay &&
> +		    connector->modes[i].clock < mode.clock &&
> +		    connector->modes[i].vrefresh < mode.vrefresh &&
> +		    connector->modes[i].vrefresh >= vrr_min)
> +			mode = connector->modes[i];
> +
> +	return mode;
> +}
> +
>  /* Read min and max vrr range from the connector debugfs. */  static
> range_t  get_vrr_range(data_t *data, igt_output_t *output) @@ -329,7
> +359,7 @@ flip_and_measure(data_t *data, igt_output_t *output, enum
> pipe pipe,
>  		 * difference between 144Hz and 143Hz which should give
> this
>  		 * enough accuracy for most use cases.
>  		 */
> -		if ((rate_ns < vtest_ns.min) && (rate_ns >= vtest_ns.max))
> +		if ((rate_ns <= vtest_ns.min) && (rate_ns >= vtest_ns.max))
>  			diff_ns = rate_ns;
>  		else
>  			diff_ns = vtest_ns.max;
> @@ -379,6 +409,8 @@ test_basic(data_t *data, enum pipe pipe,
> igt_output_t *output, uint32_t flags)
> 
>  	igt_info("VRR Test execution on %s, PIPE_%s with VRR range: (%u-
> %u) Hz\n",
>  		 output->name, kmstest_pipe_name(pipe), range.min,
> range.max);
> +	igt_info("Override Mode: ");
> +	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
> 
>  	set_vrr_on_pipe(data, pipe, true);
> 
> @@ -454,6 +486,53 @@ test_basic(data_t *data, enum pipe pipe,
> igt_output_t *output, uint32_t flags)
>  		     ((range.max + range.min) / 2), rate, (flags &
> TEST_NEGATIVE)? "on" : "off", result);  }
> 
> +static void
> +test_seamless_rr_basic(data_t *data, enum pipe pipe, igt_output_t
> +*output, uint32_t flags) {
> +	uint32_t result;
> +	vtest_ns_t vtest_ns;
> +	uint64_t rate;
> +
> +	igt_info("Use HIGH_RR Mode as default: ");
> +	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
> +
> +	prepare_test(data, output, pipe);
> +	vtest_ns = get_test_rate_ns(data->range);
> +
> +	igt_pipe_set_prop_value(&data->display, pipe,
> IGT_CRTC_VRR_ENABLED, true);
> +	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL)
> ==
> +0);
> +
> +	rate = vtest_ns.max;
> +	result = flip_and_measure(data, output, pipe, rate,
> TEST_DURATION_NS);
> +	igt_assert_f(result > 75,
> +		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on
> threshold not reached, result was %u%%\n",
> +		     data->range.max, rate, result);
> +
> +	/* Switch to low rr mode without modeset. */
> +	igt_info("Switch to LOW_RR Mode: ");
> +	kmstest_dump_mode(&data->switch_modes[LOW_RR_MODE]);
> +	igt_output_override_mode(output, &data-
> >switch_modes[LOW_RR_MODE]);
> +	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL)
> ==
> +0);
> +
> +	rate = vtest_ns.min;
> +	result = flip_and_measure(data, output, pipe, rate,
> TEST_DURATION_NS);
> +	igt_assert_f(result > 75,
> +		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on
> threshold not reached, result was %u%%\n",
> +		     data->range.min, rate, result);
> +
> +	/* Switch back to high rr mode without modeset. */
> +	igt_info("Switch back to HIGH_RR Mode: ");
> +	kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
> +	igt_output_override_mode(output, &data-
> >switch_modes[HIGH_RR_MODE]);
> +	igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL)
> ==
> +0);
> +
> +	rate = vtest_ns.mid;
> +	result = flip_and_measure(data, output, pipe, rate,
> TEST_DURATION_NS);
> +	igt_assert_f(result > 75,
> +		     "Refresh rate (%u Hz) %"PRIu64"ns: Target VRR on
> threshold not reached, result was %u%%\n",
> +		     ((data->range.max + data->range.min) / 2), rate, result); }
> +
>  static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
> {
>  	igt_pipe_set_prop_value(&data->display, pipe,
> IGT_CRTC_VRR_ENABLED, false); @@ -466,9 +545,11 @@ static void
> test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
>  	igt_remove_fb(data->drm_fd, &data->fb0);  }
> 
> -static bool output_constraint(data_t *data, igt_output_t *output)
> +static bool output_constraint(data_t *data, igt_output_t *output,
> +uint32_t flags)
>  {
> -	drmModeModeInfo mode;
> +	if ((flags & TEST_SEAMLESS_VRR) &&
> +	    output->config.connector->connector_type !=
> DRM_MODE_CONNECTOR_eDP)
> +		return false;
> 
>  	/* Reset output */
>  	igt_display_reset(&data->display);
> @@ -481,16 +562,22 @@ static bool output_constraint(data_t *data,
> igt_output_t *output)
>  	 *   - vrr_min range should be less than the override mode vrefresh.
>  	 *   - Limit the vrr_max range with the override mode vrefresh.
>  	 */
> -	mode = output_mode_with_maxrate(output, data->range.max);
> -	if (mode.vrefresh < data->range.min)
> +	data->switch_modes[HIGH_RR_MODE] =
> output_mode_with_maxrate(output, data->range.max);
> +	if (data->switch_modes[HIGH_RR_MODE].vrefresh < data-
> >range.min)
>  		return false;
> 
> -	data->range.max = mode.vrefresh;
> +	data->range.max = data->switch_modes[HIGH_RR_MODE].vrefresh;
> +	igt_output_override_mode(output, &data-
> >switch_modes[HIGH_RR_MODE]);
> 
> -	igt_info("Override Mode: ");
> -	kmstest_dump_mode(&mode);
> +	/* Search for a low refresh rate mode. */
> +	if (!(flags & TEST_SEAMLESS_VRR))
> +		return true;
> +
> +	data->switch_modes[LOW_RR_MODE] =
> low_rr_mode_with_same_res(output, data->range.min);
> +	if (data->switch_modes[LOW_RR_MODE].vrefresh == data-
> >switch_modes[HIGH_RR_MODE].vrefresh)
> +		return false;
> 
> -	igt_output_override_mode(output, &mode);
> +	data->range.min = data->switch_modes[LOW_RR_MODE].vrefresh;
> 
>  	return true;
>  }
> @@ -507,7 +594,7 @@ static bool config_constraint(data_t *data,
> igt_output_t *output, uint32_t flags
>  	if ((flags & ~TEST_NEGATIVE) && !vrr_capable(output))
>  		return false;
> 
> -	if (!output_constraint(data, output))
> +	if (!output_constraint(data, output, flags))
>  		return false;
> 
>  	return true;
> @@ -583,6 +670,12 @@ igt_main
>  	igt_subtest_with_dynamic("negative-basic")
>  		run_vrr_test(&data, test_basic, TEST_NEGATIVE);
> 
> +	igt_describe("Test to switch RR seamlessly without modeset.");
> +	igt_subtest_with_dynamic("seamless-rr-switch-vrr"){
> +		igt_require_intel(data.drm_fd);
> +		run_vrr_test(&data, test_seamless_rr_basic,
> TEST_SEAMLESS_VRR);
> +	}
> +

Change LGTM
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>

>  	igt_fixture {
>  		igt_display_fini(&data.display);
>  		drm_close_driver(data.drm_fd);
> --
> 2.40.0

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

* RE: [i-g-t V7 4/8] tests/kms_vrr: Fix pipe/output combo validity constraint
  2023-12-11 11:36 ` [i-g-t V7 4/8] tests/kms_vrr: Fix pipe/output combo validity constraint Bhanuprakash Modem
@ 2023-12-13  3:16   ` Golani, Mitulkumar Ajitkumar
  0 siblings, 0 replies; 14+ messages in thread
From: Golani, Mitulkumar Ajitkumar @ 2023-12-13  3:16 UTC (permalink / raw)
  To: Modem, Bhanuprakash, igt-dev@lists.freedesktop.org



> -----Original Message-----
> From: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>
> Sent: Monday, December 11, 2023 5:07 PM
> To: igt-dev@lists.freedesktop.org; Golani, Mitulkumar Ajitkumar
> <mitulkumar.ajitkumar.golani@intel.com>
> Cc: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>
> Subject: [i-g-t V7 4/8] tests/kms_vrr: Fix pipe/output combo validity
> constraint
> 
> Before starting the subtest, we are checking the selected pipe/output combo
> validity with default mode, but inside the subtest we are using the mode with
> highest resolution.
> 
> Few panels exposes 4K as a default mode even though it supports 8K, in this
> scenario test may misbehave.
> 
> So, check the pipe/output combo validity with the mode that we are actually
> going to use in the subtest.
> 
> V2: Reword the commit message
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/kms_vrr.c | 62 +++++++++++++++++++++++++++++++------------------
>  1 file changed, 39 insertions(+), 23 deletions(-)
> 
> diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c index df241aa6c..4540d8b4b
> 100644
> --- a/tests/kms_vrr.c
> +++ b/tests/kms_vrr.c
> @@ -163,9 +163,6 @@ output_mode_with_maxrate(igt_output_t *output,
> unsigned int vrr_max)
>  		    connector->modes[i].vrefresh <= vrr_max)
>  			mode = connector->modes[i];
> 
> -	igt_info("Override Mode: ");
> -	kmstest_dump_mode(&mode);
> -
>  	return mode;
>  }
> 
> @@ -233,21 +230,7 @@ static void prepare_test(data_t *data, igt_output_t
> *output, enum pipe pipe)
>  	drmModeModeInfo mode;
>  	cairo_t *cr;
> 
> -	/* Reset output */
> -	igt_display_reset(&data->display);
> -	igt_output_set_pipe(output, pipe);
> -
> -	/* Capture VRR range */
> -	data->range = get_vrr_range(data, output);
> -
> -	/* Override mode with max vrefresh.
> -	 *   - vrr_min range should be less than the override mode vrefresh.
> -	 *   - Limit the vrr_max range with the override mode vrefresh.
> -	 */
> -	mode = output_mode_with_maxrate(output, data->range.max);
> -	igt_require(mode.vrefresh > data->range.min);
> -	data->range.max = mode.vrefresh;
> -	igt_output_override_mode(output, &mode);
> +	mode = *igt_output_get_mode(output);
> 
>  	/* Prepare resources */
>  	igt_create_color_fb(data->drm_fd, mode.hdisplay, mode.vdisplay,
> @@ -483,7 +466,36 @@ static void test_cleanup(data_t *data, enum pipe
> pipe, igt_output_t *output)
>  	igt_remove_fb(data->drm_fd, &data->fb0);  }
> 
> -static bool config_constraint(igt_output_t *output, uint32_t flags)
> +static bool output_constraint(data_t *data, igt_output_t *output) {
> +	drmModeModeInfo mode;
> +
> +	/* Reset output */
> +	igt_display_reset(&data->display);
> +
> +	/* Capture VRR range */
> +	data->range = get_vrr_range(data, output);
> +
> +	/*
> +	 * Override mode with max vrefresh.
> +	 *   - vrr_min range should be less than the override mode vrefresh.
> +	 *   - Limit the vrr_max range with the override mode vrefresh.
> +	 */
> +	mode = output_mode_with_maxrate(output, data->range.max);
> +	if (mode.vrefresh < data->range.min)
> +		return false;
> +
> +	data->range.max = mode.vrefresh;
> +
> +	igt_info("Override Mode: ");
> +	kmstest_dump_mode(&mode);
> +
> +	igt_output_override_mode(output, &mode);
> +
> +	return true;
> +}
> +
> +static bool config_constraint(data_t *data, igt_output_t *output,
> +uint32_t flags)
>  {
>  	if (!has_vrr(output))
>  		return false;
> @@ -495,6 +507,9 @@ static bool config_constraint(igt_output_t *output,
> uint32_t flags)
>  	if ((flags & ~TEST_NEGATIVE) && !vrr_capable(output))
>  		return false;
> 
> +	if (!output_constraint(data, output))
> +		return false;
> +
>  	return true;
>  }
> 
> @@ -507,16 +522,17 @@ run_vrr_test(data_t *data, test_t test, uint32_t
> flags)
>  	for_each_connected_output(&data->display, output) {
>  		enum pipe pipe;
> 
> -		if (!config_constraint(output, flags))
> +		if (!config_constraint(data, output, flags))
>  			continue;
> 
>  		for_each_pipe(&data->display, pipe) {
>  			if (igt_pipe_connector_valid(pipe, output)) {
> -				igt_display_reset(&data->display);
> -
>  				igt_output_set_pipe(output, pipe);
> -				if (!intel_pipe_output_combo_valid(&data-
> >display))
> +
> +				if (!intel_pipe_output_combo_valid(&data-
> >display)) {
> +					igt_output_set_pipe(output,
> PIPE_NONE);
>  					continue;
> +				}

Change LGTM
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>

> 
>  				igt_dynamic_f("pipe-%s-%s",
>  					      kmstest_pipe_name(pipe),
> output->name)
> --
> 2.40.0

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

end of thread, other threads:[~2023-12-13  3:16 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-11 11:36 [i-g-t V7 0/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
2023-12-11 11:36 ` [i-g-t V7 1/8] tests/kms_vrr: Use lib helper to print connector modes Bhanuprakash Modem
2023-12-11 11:36 ` [i-g-t V7 2/8] tests/kms_vrr: Clear VRR before exit Bhanuprakash Modem
2023-12-11 11:36 ` [i-g-t V7 3/8] tests/kms_vrr: Move all config constaints to new function Bhanuprakash Modem
2023-12-11 11:36 ` [i-g-t V7 4/8] tests/kms_vrr: Fix pipe/output combo validity constraint Bhanuprakash Modem
2023-12-13  3:16   ` Golani, Mitulkumar Ajitkumar
2023-12-11 11:36 ` [i-g-t V7 5/8] tests/kms_vrr: Add new subtest to switch RR without modeset Bhanuprakash Modem
2023-12-13  3:03   ` Golani, Mitulkumar Ajitkumar
2023-12-11 11:36 ` [i-g-t V7 6/8] tests/kms_vrr: Add new subtest for DRRS " Bhanuprakash Modem
2023-12-12  6:45   ` Golani, Mitulkumar Ajitkumar
2023-12-11 11:36 ` [i-g-t V7 7/8] tests/kms_vrr: New subtest for toggle VRR during fastsets Bhanuprakash Modem
2023-12-11 11:36 ` [i-g-t V7 8/8] HAX: DO_NOT_MERGE: test only vrr tests Bhanuprakash Modem
2023-12-11 19:37 ` ✗ Fi.CI.BAT: failure for tests/kms_vrr: Add new subtest to switch RR without modeset (rev8) Patchwork
2023-12-11 20:15 ` ✓ CI.xeBAT: success " Patchwork

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