* [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