* [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode
@ 2024-04-10 19:03 Manasi Navare
2024-04-10 19:03 ` [PATCH v5 2/2] HAX: run kms_vrr tests in BAT Manasi Navare
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Manasi Navare @ 2024-04-10 19:03 UTC (permalink / raw)
To: igt-dev
Cc: Manasi Navare, Drew Davenport, Bhanuprakash Modem,
Ville Syrjälä, Sean Paul
This subtest validates LRR fastset functionality by testing seamless switching
without full modeset to any of the virtual LRR mode within VRR range.
Here we start from highest refresh rate mode and then switch to virtual LRR
modes in the steps of 10Hz within the VRR range.
This is used to test the LRR fastset functionality of the driver.
v5:
- Pass a reference to flip_and_measure (bhanu)
- Add a new line between between declaration and code logic
v4:
- Change the test name to align with drrs/vrr tests (Bhanu)
- Fix some build warnings due to rebase
- Use a local virtual_mode variable
v3:
- Fix build error due to rebase (Manasi)
Cc: Drew Davenport <ddavenport@chromium.org>
Cc: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Manasi Navare <navaremanasi@chromium.org>
---
tests/kms_vrr.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 69 insertions(+), 4 deletions(-)
diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index 15c62b34b..c392e10d8 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -66,6 +66,11 @@
* Description: Test to switch RR seamlessly without modeset.
* Functionality: adaptive_sync, drrs
*
+ * SUBTEST: seamless-rr-switch-virtual
+ * Description: Test to create a Virtual Mode in VRR range and switch to it
+ * without a full modeset.
+ * Functionality: LRR
+ *
* SUBTEST: max-min
* Description: Oscillates between highest and lowest refresh each frame for
* manual flicker profiling
@@ -89,9 +94,10 @@ enum {
TEST_FLIPLINE = 1 << 3,
TEST_SEAMLESS_VRR = 1 << 4,
TEST_SEAMLESS_DRRS = 1 << 5,
- TEST_FASTSET = 1 << 6,
- TEST_MAXMIN = 1 << 7,
- TEST_NEGATIVE = 1 << 8,
+ TEST_SEAMLESS_VIRTUAL_RR = 1 << 6,
+ TEST_FASTSET = 1 << 7,
+ TEST_MAXMIN = 1 << 8,
+ TEST_NEGATIVE = 1 << 9,
};
enum {
@@ -214,6 +220,18 @@ low_rr_mode_with_same_res(igt_output_t *output, unsigned int vrr_min)
return mode;
}
+static drmModeModeInfo
+virtual_rr_vrr_range_mode(igt_output_t *output, unsigned int virtual_refresh_rate)
+{
+ drmModeModeInfo mode = *igt_output_get_mode(output);
+ uint64_t clock_hz = mode.clock * 1000;
+
+ mode.vtotal = clock_hz / (mode.htotal * virtual_refresh_rate);
+ mode.vrefresh = virtual_refresh_rate;
+
+ 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)
@@ -641,6 +659,49 @@ test_seamless_rr_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint3
vrr ? "on" : "off", vrr ? "not reached" : "exceeded", result);
}
+static void
+test_seamless_virtual_rr_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint32_t flags)
+{
+ uint32_t result;
+ unsigned int vrefresh;
+ uint64_t rate[] = {0};
+
+ igt_info("Use HIGH_RR Mode as default\n");
+ kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
+
+ prepare_test(data, output, pipe);
+ rate[0] = rate_from_refresh(data->switch_modes[HIGH_RR_MODE].vrefresh);
+
+ /*
+ * Sink with DRR and VRR can be in downclock mode so
+ * switch to highest refresh rate mode.
+ */
+ igt_output_override_mode(output, &data->switch_modes[HIGH_RR_MODE]);
+ igt_assert(igt_display_try_commit_atomic(&data->display, DRM_MODE_PAGE_FLIP_EVENT, NULL) == 0);
+
+ result = flip_and_measure(data, output, pipe, rate, 1, TEST_DURATION_NS);
+ igt_assert_f(result > 75,
+ "Refresh rate (%u Hz) %"PRIu64"ns: Target threshold not reached, result was %u%%\n",
+ data->switch_modes[HIGH_RR_MODE].vrefresh, rate[0], result);
+
+ /* Switch to Virtual RR */
+ for (vrefresh = data->range.min + 10; vrefresh < data->range.max; vrefresh += 10) {
+ drmModeModeInfo virtual_mode = virtual_rr_vrr_range_mode(output, vrefresh);
+
+ igt_info("Requesting Virtual Mode with Refresh Rate (%u Hz): \n", vrefresh);
+ kmstest_dump_mode(&virtual_mode);
+
+ igt_output_override_mode(output, &virtual_mode);
+ igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
+
+ rate[0] = rate_from_refresh(vrefresh);
+ result = flip_and_measure(data, output, pipe, rate, 1, TEST_DURATION_NS);
+ igt_assert_f(result > 75,
+ "Refresh rate (%u Hz) %"PRIu64"ns: Target threshold not reached, result was %u%%\n",
+ vrefresh, rate[0], result);
+ }
+}
+
static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
{
if (vrr_capable(output))
@@ -686,7 +747,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 | TEST_SEAMLESS_DRRS)))
+ if (!(flags & (TEST_SEAMLESS_VRR | TEST_SEAMLESS_DRRS | TEST_SEAMLESS_VIRTUAL_RR)))
return true;
data->switch_modes[LOW_RR_MODE] = low_rr_mode_with_same_res(output, data->range.min);
@@ -841,6 +902,10 @@ igt_main_args("drs:", long_opts, help_str, opt_handler, &data)
"between flip timestamps converges to the requested rate");
igt_subtest_with_dynamic("flip-basic-fastset")
run_vrr_test(&data, test_basic, TEST_FASTSET);
+
+ igt_describe("Test to switch to any custom virtual mode in VRR range without modeset.");
+ igt_subtest_with_dynamic("seamless-virtual-rr-switch")
+ run_vrr_test(&data, test_seamless_virtual_rr_basic, TEST_SEAMLESS_VIRTUAL_RR);
}
igt_fixture {
--
2.44.0.478.gd926399ef9-goog
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v5 2/2] HAX: run kms_vrr tests in BAT
2024-04-10 19:03 [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode Manasi Navare
@ 2024-04-10 19:03 ` Manasi Navare
2024-04-10 19:05 ` [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode Manasi Navare
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Manasi Navare @ 2024-04-10 19:03 UTC (permalink / raw)
To: igt-dev; +Cc: Manasi Navare
Signed-off-by: Manasi Navare <navaremanasi@chromium.org>
---
tests/intel-ci/fast-feedback.testlist | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index be0965110..53a364ae6 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -129,6 +129,7 @@ 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@kms_vrr
igt@i915_pm_rps@basic-api
igt@prime_self_import@basic-llseek-bad
igt@prime_self_import@basic-llseek-size
--
2.44.0.478.gd926399ef9-goog
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode
2024-04-10 19:03 [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode Manasi Navare
2024-04-10 19:03 ` [PATCH v5 2/2] HAX: run kms_vrr tests in BAT Manasi Navare
@ 2024-04-10 19:05 ` Manasi Navare
2024-04-11 1:40 ` ✗ Fi.CI.BUILD: failure for series starting with [v5,1/2] " Patchwork
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Manasi Navare @ 2024-04-10 19:05 UTC (permalink / raw)
To: igt-dev
Cc: Drew Davenport, Bhanuprakash Modem, Ville Syrjälä,
Sean Paul
Hi Bhanu,
I have addressed your review comments and also created a HAX patch
with this to add kms_vrr to BAT tests.
Could you please review this.
Regards
Manasi
On Wed, Apr 10, 2024 at 12:03 PM Manasi Navare
<navaremanasi@chromium.org> wrote:
>
> This subtest validates LRR fastset functionality by testing seamless switching
> without full modeset to any of the virtual LRR mode within VRR range.
> Here we start from highest refresh rate mode and then switch to virtual LRR
> modes in the steps of 10Hz within the VRR range.
>
> This is used to test the LRR fastset functionality of the driver.
>
> v5:
> - Pass a reference to flip_and_measure (bhanu)
> - Add a new line between between declaration and code logic
>
> v4:
> - Change the test name to align with drrs/vrr tests (Bhanu)
> - Fix some build warnings due to rebase
> - Use a local virtual_mode variable
>
> v3:
> - Fix build error due to rebase (Manasi)
>
> Cc: Drew Davenport <ddavenport@chromium.org>
> Cc: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Sean Paul <seanpaul@chromium.org>
> Signed-off-by: Manasi Navare <navaremanasi@chromium.org>
> ---
> tests/kms_vrr.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 69 insertions(+), 4 deletions(-)
>
> diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
> index 15c62b34b..c392e10d8 100644
> --- a/tests/kms_vrr.c
> +++ b/tests/kms_vrr.c
> @@ -66,6 +66,11 @@
> * Description: Test to switch RR seamlessly without modeset.
> * Functionality: adaptive_sync, drrs
> *
> + * SUBTEST: seamless-rr-switch-virtual
> + * Description: Test to create a Virtual Mode in VRR range and switch to it
> + * without a full modeset.
> + * Functionality: LRR
> + *
> * SUBTEST: max-min
> * Description: Oscillates between highest and lowest refresh each frame for
> * manual flicker profiling
> @@ -89,9 +94,10 @@ enum {
> TEST_FLIPLINE = 1 << 3,
> TEST_SEAMLESS_VRR = 1 << 4,
> TEST_SEAMLESS_DRRS = 1 << 5,
> - TEST_FASTSET = 1 << 6,
> - TEST_MAXMIN = 1 << 7,
> - TEST_NEGATIVE = 1 << 8,
> + TEST_SEAMLESS_VIRTUAL_RR = 1 << 6,
> + TEST_FASTSET = 1 << 7,
> + TEST_MAXMIN = 1 << 8,
> + TEST_NEGATIVE = 1 << 9,
> };
>
> enum {
> @@ -214,6 +220,18 @@ low_rr_mode_with_same_res(igt_output_t *output, unsigned int vrr_min)
> return mode;
> }
>
> +static drmModeModeInfo
> +virtual_rr_vrr_range_mode(igt_output_t *output, unsigned int virtual_refresh_rate)
> +{
> + drmModeModeInfo mode = *igt_output_get_mode(output);
> + uint64_t clock_hz = mode.clock * 1000;
> +
> + mode.vtotal = clock_hz / (mode.htotal * virtual_refresh_rate);
> + mode.vrefresh = virtual_refresh_rate;
> +
> + 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)
> @@ -641,6 +659,49 @@ test_seamless_rr_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint3
> vrr ? "on" : "off", vrr ? "not reached" : "exceeded", result);
> }
>
> +static void
> +test_seamless_virtual_rr_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint32_t flags)
> +{
> + uint32_t result;
> + unsigned int vrefresh;
> + uint64_t rate[] = {0};
> +
> + igt_info("Use HIGH_RR Mode as default\n");
> + kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
> +
> + prepare_test(data, output, pipe);
> + rate[0] = rate_from_refresh(data->switch_modes[HIGH_RR_MODE].vrefresh);
> +
> + /*
> + * Sink with DRR and VRR can be in downclock mode so
> + * switch to highest refresh rate mode.
> + */
> + igt_output_override_mode(output, &data->switch_modes[HIGH_RR_MODE]);
> + igt_assert(igt_display_try_commit_atomic(&data->display, DRM_MODE_PAGE_FLIP_EVENT, NULL) == 0);
> +
> + result = flip_and_measure(data, output, pipe, rate, 1, TEST_DURATION_NS);
> + igt_assert_f(result > 75,
> + "Refresh rate (%u Hz) %"PRIu64"ns: Target threshold not reached, result was %u%%\n",
> + data->switch_modes[HIGH_RR_MODE].vrefresh, rate[0], result);
> +
> + /* Switch to Virtual RR */
> + for (vrefresh = data->range.min + 10; vrefresh < data->range.max; vrefresh += 10) {
> + drmModeModeInfo virtual_mode = virtual_rr_vrr_range_mode(output, vrefresh);
> +
> + igt_info("Requesting Virtual Mode with Refresh Rate (%u Hz): \n", vrefresh);
> + kmstest_dump_mode(&virtual_mode);
> +
> + igt_output_override_mode(output, &virtual_mode);
> + igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
> +
> + rate[0] = rate_from_refresh(vrefresh);
> + result = flip_and_measure(data, output, pipe, rate, 1, TEST_DURATION_NS);
> + igt_assert_f(result > 75,
> + "Refresh rate (%u Hz) %"PRIu64"ns: Target threshold not reached, result was %u%%\n",
> + vrefresh, rate[0], result);
> + }
> +}
> +
> static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
> {
> if (vrr_capable(output))
> @@ -686,7 +747,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 | TEST_SEAMLESS_DRRS)))
> + if (!(flags & (TEST_SEAMLESS_VRR | TEST_SEAMLESS_DRRS | TEST_SEAMLESS_VIRTUAL_RR)))
> return true;
>
> data->switch_modes[LOW_RR_MODE] = low_rr_mode_with_same_res(output, data->range.min);
> @@ -841,6 +902,10 @@ igt_main_args("drs:", long_opts, help_str, opt_handler, &data)
> "between flip timestamps converges to the requested rate");
> igt_subtest_with_dynamic("flip-basic-fastset")
> run_vrr_test(&data, test_basic, TEST_FASTSET);
> +
> + igt_describe("Test to switch to any custom virtual mode in VRR range without modeset.");
> + igt_subtest_with_dynamic("seamless-virtual-rr-switch")
> + run_vrr_test(&data, test_seamless_virtual_rr_basic, TEST_SEAMLESS_VIRTUAL_RR);
> }
>
> igt_fixture {
> --
> 2.44.0.478.gd926399ef9-goog
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* ✗ Fi.CI.BUILD: failure for series starting with [v5,1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode
2024-04-10 19:03 [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode Manasi Navare
2024-04-10 19:03 ` [PATCH v5 2/2] HAX: run kms_vrr tests in BAT Manasi Navare
2024-04-10 19:05 ` [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode Manasi Navare
@ 2024-04-11 1:40 ` Patchwork
2024-04-11 1:46 ` ✗ GitLab.Pipeline: warning " Patchwork
2024-04-15 6:52 ` [PATCH v5 1/2] " Modem, Bhanuprakash
4 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2024-04-11 1:40 UTC (permalink / raw)
To: Manasi Navare; +Cc: igt-dev
== Series Details ==
Series: series starting with [v5,1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode
URL : https://patchwork.freedesktop.org/series/132297/
State : failure
== Summary ==
IGT patchset build failed on latest successful build
e490cb6ffc497275544b36871c24af0a04f98470 lib: fix calloc calls with inverted arguments
Tail of build.log:
[1633/1676] Linking target tools/intel_gvtg_test.
[1634/1676] Linking target tools/intel_panel_fitter.
[1635/1676] Linking target tools/intel_gem_info.
[1636/1676] Linking target runner/testdata/no-subtests.
[1637/1676] Linking target tools/lsgpu.
[1638/1676] Linking target tools/intel_stepping.
[1639/1676] Linking target tools/intel_l3_parity.
[1640/1676] Linking target tools/intel_watermark.
[1641/1676] Linking target tools/msm_dp_compliance.
[1642/1676] Generating gem_stress.testlist with a meson_exe.py custom command.
[1643/1676] Linking target runner/testdata/abort-dynamic.
[1644/1676] Linking target runner/testdata/abort-simple.
[1645/1676] Linking target runner/igt_comms_decoder.
[1646/1676] Linking target tools/intel_dp_compliance.
[1647/1676] Linking target runner/testdata/abort-fixture.
[1648/1676] Linking target runner/testdata/dynamic.
[1649/1676] Linking target runner/igt_resume.
[1650/1676] Linking target runner/igt_runner.
[1651/1676] Linking target runner/igt_results.
[1652/1676] Linking target runner/runner_json_test.
[1653/1676] Compiling C object 'lib/76b5a35@@i915_perf@sha/meson-generated_.._i915_perf_metrics_acmgt1.c.o'.
[1654/1676] Compiling C object 'runner/527aa9f@@runner_test@exe/runner_tests.c.o'.
[1655/1676] Linking target runner/runner_test.
[1656/1676] Compiling C object 'lib/76b5a35@@i915_perf@sha/meson-generated_.._i915_perf_metrics_acmgt2.c.o'.
[1657/1676] Compiling C object 'lib/76b5a35@@i915_perf@sha/meson-generated_.._i915_perf_metrics_acmgt3.c.o'.
[1658/1676] Linking target lib/libi915_perf.so.1.5.
[1659/1676] Generating symbol file 'lib/76b5a35@@i915_perf@sha/libi915_perf.so.1.5.symbols'.
[1660/1676] Linking target tools/i915-perf/i915-perf-configs.
[1661/1676] Linking target tools/i915-perf/i915-perf-recorder.
[1662/1676] Linking target tests/gem_barrier_race.
[1663/1676] Linking target tests/core_hotunplug.
[1664/1676] Linking target tools/i915-perf/i915-perf-reader.
[1665/1676] Linking target tests/perf.
[1666/1676] Generating gem_barrier_race.testlist with a meson_exe.py custom command.
[1667/1676] Generating perf.testlist with a meson_exe.py custom command.
[1668/1676] Generating core_hotunplug.testlist with a meson_exe.py custom command.
[1669/1676] Generating xe_tests.rst with a custom command.
Warning: igt@xe_waitfence@exec_queue-reset-wait Sub-category documentation is missing
Warning: igt@xe_waitfence@invalid-flag Sub-category documentation is missing
Warning: igt@xe_waitfence@invalid-ops Sub-category documentation is missing
[1670/1676] Generating kms_tests.rst with a custom command.
FAILED: docs/testplan/kms_tests.rst
/usr/src/igt-gpu-tools/scripts/igt_doc.py --config /usr/src/igt-gpu-tools/tests/intel/kms_test_config.json --rest docs/testplan/kms_tests.rst --check-testlist --igt-build-path /opt/igt/build
Warning: Documented igt@kms_vrr@seamless-rr-switch-virtual doesn't exist on source files
Warning: Missing documentation for igt@kms_vrr@seamless-virtual-rr-switch
Please refer: docs/test_documentation.md for more details
[1671/1676] Generating i915_tests.rst with a custom command.
[1672/1676] Generating intel-ci-tests with a custom command.
[1673/1676] Generating xe_tests.html with a custom command.
ninja: build stopped: subcommand failed.
^ permalink raw reply [flat|nested] 6+ messages in thread
* ✗ GitLab.Pipeline: warning for series starting with [v5,1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode
2024-04-10 19:03 [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode Manasi Navare
` (2 preceding siblings ...)
2024-04-11 1:40 ` ✗ Fi.CI.BUILD: failure for series starting with [v5,1/2] " Patchwork
@ 2024-04-11 1:46 ` Patchwork
2024-04-15 6:52 ` [PATCH v5 1/2] " Modem, Bhanuprakash
4 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2024-04-11 1:46 UTC (permalink / raw)
To: Manasi Navare; +Cc: igt-dev
== Series Details ==
Series: series starting with [v5,1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode
URL : https://patchwork.freedesktop.org/series/132297/
State : warning
== Summary ==
Pipeline status: FAILED.
see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/1151210 for the overview.
build:tests-debian-meson has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/57468451):
[1793/1798] Generating intel-ci-tests with a custom command.
[1794/1798] Generating xe_tests.html with a custom command.
[1795/1798] Compiling C object 'runner/527aa9f@@runner_test@exe/runner_tests.c.o'.
ninja: build stopped: subcommand failed.
ninja: Entering directory `build'
[1/822] Generating version.h with a custom command.
[2/6] Linking target runner/runner_test.
[3/6] Generating kms_tests.rst with a custom command.
FAILED: docs/testplan/kms_tests.rst
/builds/gfx-ci/igt-ci-tags/scripts/igt_doc.py --config /builds/gfx-ci/igt-ci-tags/tests/intel/kms_test_config.json --rest docs/testplan/kms_tests.rst --check-testlist --igt-build-path /builds/gfx-ci/igt-ci-tags/build
Warning: Documented igt@kms_vrr@seamless-rr-switch-virtual doesn't exist on source files
Warning: Missing documentation for igt@kms_vrr@seamless-virtual-rr-switch
Please refer: docs/test_documentation.md for more details
ninja: build stopped: subcommand failed.
section_end:1712799745:step_script
section_start:1712799745:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1712799746:cleanup_file_variables
ERROR: Job failed: exit code 1
build:tests-fedora has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/57468446):
[1801/1804] Compiling C object 'runner/527aa9f@@runner_test@exe/runner_tests.c.o'.
ninja: build stopped: subcommand failed.
ninja: Entering directory `build'
[1/824] Generating version.h with a custom command.
[2/6] Linking target runner/runner_test.
[3/6] Generating i915_tests.html with a custom command.
[4/6] Generating intel-ci-tests with a custom command.
[5/6] Generating kms_tests.rst with a custom command.
FAILED: docs/testplan/kms_tests.rst
/builds/gfx-ci/igt-ci-tags/scripts/igt_doc.py --config /builds/gfx-ci/igt-ci-tags/tests/intel/kms_test_config.json --rest docs/testplan/kms_tests.rst --check-testlist --igt-build-path /builds/gfx-ci/igt-ci-tags/build
Warning: Documented igt@kms_vrr@seamless-rr-switch-virtual doesn't exist on source files
Warning: Missing documentation for igt@kms_vrr@seamless-virtual-rr-switch
Please refer: docs/test_documentation.md for more details
ninja: build stopped: subcommand failed.
section_end:1712799735:step_script
section_start:1712799735:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1712799737:cleanup_file_variables
ERROR: Job failed: exit code 1
build:tests-fedora-clang has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/57468450):
[1801/1804] Generating intel-ci-tests with a custom command.
[1802/1804] Generating xe_tests.html with a custom command.
[1803/1804] Generating i915_tests.html with a custom command.
ninja: build stopped: subcommand failed.
ninja: Entering directory `build'
[1/824] Generating version.h with a custom command.
[2/4] Generating intel-ci-tests with a custom command.
[3/4] Generating kms_tests.rst with a custom command.
FAILED: docs/testplan/kms_tests.rst
/builds/gfx-ci/igt-ci-tags/scripts/igt_doc.py --config /builds/gfx-ci/igt-ci-tags/tests/intel/kms_test_config.json --rest docs/testplan/kms_tests.rst --check-testlist --igt-build-path /builds/gfx-ci/igt-ci-tags/build
Warning: Documented igt@kms_vrr@seamless-rr-switch-virtual doesn't exist on source files
Warning: Missing documentation for igt@kms_vrr@seamless-virtual-rr-switch
Please refer: docs/test_documentation.md for more details
ninja: build stopped: subcommand failed.
section_end:1712799754:step_script
section_start:1712799754:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1712799755:cleanup_file_variables
ERROR: Job failed: exit code 1
build:tests-fedora-no-libdrm-nouveau has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/57468449):
[1633/1636] Compiling C object 'runner/527aa9f@@runner_test@exe/runner_tests.c.o'.
ninja: build stopped: subcommand failed.
ninja: Entering directory `build'
[1/773] Generating version.h with a custom command.
[2/6] Linking target runner/runner_test.
[3/6] Generating i915_tests.html with a custom command.
[4/6] Generating intel-ci-tests with a custom command.
[5/6] Generating kms_tests.rst with a custom command.
FAILED: docs/testplan/kms_tests.rst
/builds/gfx-ci/igt-ci-tags/scripts/igt_doc.py --config /builds/gfx-ci/igt-ci-tags/tests/intel/kms_test_config.json --rest docs/testplan/kms_tests.rst --check-testlist --igt-build-path /builds/gfx-ci/igt-ci-tags/build
Warning: Documented igt@kms_vrr@seamless-rr-switch-virtual doesn't exist on source files
Warning: Missing documentation for igt@kms_vrr@seamless-virtual-rr-switch
Please refer: docs/test_documentation.md for more details
ninja: build stopped: subcommand failed.
section_end:1712799744:step_script
section_start:1712799744:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1712799745:cleanup_file_variables
ERROR: Job failed: exit code 1
build:tests-fedora-no-libunwind has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/57468447):
[1801/1804] Compiling C object 'runner/527aa9f@@runner_test@exe/runner_tests.c.o'.
ninja: build stopped: subcommand failed.
ninja: Entering directory `build'
[1/824] Generating version.h with a custom command.
[2/6] Linking target runner/runner_test.
[3/6] Generating i915_tests.html with a custom command.
[4/6] Generating intel-ci-tests with a custom command.
[5/6] Generating kms_tests.rst with a custom command.
FAILED: docs/testplan/kms_tests.rst
/builds/gfx-ci/igt-ci-tags/scripts/igt_doc.py --config /builds/gfx-ci/igt-ci-tags/tests/intel/kms_test_config.json --rest docs/testplan/kms_tests.rst --check-testlist --igt-build-path /builds/gfx-ci/igt-ci-tags/build
Warning: Documented igt@kms_vrr@seamless-rr-switch-virtual doesn't exist on source files
Warning: Missing documentation for igt@kms_vrr@seamless-virtual-rr-switch
Please refer: docs/test_documentation.md for more details
ninja: build stopped: subcommand failed.
section_end:1712799749:step_script
section_start:1712799749:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1712799749:cleanup_file_variables
ERROR: Job failed: exit code 1
build:tests-fedora-oldest-meson has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/57468448):
[1801/1804] Compiling C object 'runner/runner@@runner_test@exe/runner_tests.c.o'.
[1802/1804] Generating i915_tests.html with a custom command.
ninja: build stopped: subcommand failed.
ninja: Entering directory `build'
[1/824] Generating version.h with a custom command.
[2/5] Linking target runner/runner_test.
[3/5] Generating intel-ci-tests with a custom command.
[4/5] Generating kms_tests.rst with a custom command.
FAILED: docs/testplan/kms_tests.rst
/builds/gfx-ci/igt-ci-tags/scripts/igt_doc.py --config /builds/gfx-ci/igt-ci-tags/tests/intel/kms_test_config.json --rest docs/testplan/kms_tests.rst --check-testlist --igt-build-path /builds/gfx-ci/igt-ci-tags/build
Warning: Documented igt@kms_vrr@seamless-rr-switch-virtual doesn't exist on source files
Warning: Missing documentation for igt@kms_vrr@seamless-virtual-rr-switch
Please refer: docs/test_documentation.md for more details
ninja: build stopped: subcommand failed.
section_end:1712799745:step_script
section_start:1712799745:cleanup_file_variables
Cleaning up project directory and file based variables
section_end:1712799747:cleanup_file_variables
ERROR: Job failed: exit code 1
== Logs ==
For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/1151210
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode
2024-04-10 19:03 [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode Manasi Navare
` (3 preceding siblings ...)
2024-04-11 1:46 ` ✗ GitLab.Pipeline: warning " Patchwork
@ 2024-04-15 6:52 ` Modem, Bhanuprakash
4 siblings, 0 replies; 6+ messages in thread
From: Modem, Bhanuprakash @ 2024-04-15 6:52 UTC (permalink / raw)
To: Manasi Navare, igt-dev; +Cc: Drew Davenport, Ville Syrjälä, Sean Paul
Hi Manasi,
On 11-04-2024 12:33 am, Manasi Navare wrote:
> This subtest validates LRR fastset functionality by testing seamless switching
> without full modeset to any of the virtual LRR mode within VRR range.
> Here we start from highest refresh rate mode and then switch to virtual LRR
> modes in the steps of 10Hz within the VRR range.
>
> This is used to test the LRR fastset functionality of the driver.
>
> v5:
> - Pass a reference to flip_and_measure (bhanu)
> - Add a new line between between declaration and code logic
>
> v4:
> - Change the test name to align with drrs/vrr tests (Bhanu)
> - Fix some build warnings due to rebase
> - Use a local virtual_mode variable
>
> v3:
> - Fix build error due to rebase (Manasi)
>
> Cc: Drew Davenport <ddavenport@chromium.org>
> Cc: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Sean Paul <seanpaul@chromium.org>
> Signed-off-by: Manasi Navare <navaremanasi@chromium.org>
> ---
> tests/kms_vrr.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 69 insertions(+), 4 deletions(-)
>
> diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
> index 15c62b34b..c392e10d8 100644
> --- a/tests/kms_vrr.c
> +++ b/tests/kms_vrr.c
> @@ -66,6 +66,11 @@
> * Description: Test to switch RR seamlessly without modeset.
> * Functionality: adaptive_sync, drrs
> *
> + * SUBTEST: seamless-rr-switch-virtual
> + * Description: Test to create a Virtual Mode in VRR range and switch to it
> + * without a full modeset.
> + * Functionality: LRR
> + *
> * SUBTEST: max-min
> * Description: Oscillates between highest and lowest refresh each frame for
> * manual flicker profiling
> @@ -89,9 +94,10 @@ enum {
> TEST_FLIPLINE = 1 << 3,
> TEST_SEAMLESS_VRR = 1 << 4,
> TEST_SEAMLESS_DRRS = 1 << 5,
> - TEST_FASTSET = 1 << 6,
> - TEST_MAXMIN = 1 << 7,
> - TEST_NEGATIVE = 1 << 8,
> + TEST_SEAMLESS_VIRTUAL_RR = 1 << 6,
> + TEST_FASTSET = 1 << 7,
> + TEST_MAXMIN = 1 << 8,
> + TEST_NEGATIVE = 1 << 9,
> };
>
> enum {
> @@ -214,6 +220,18 @@ low_rr_mode_with_same_res(igt_output_t *output, unsigned int vrr_min)
> return mode;
> }
>
> +static drmModeModeInfo
> +virtual_rr_vrr_range_mode(igt_output_t *output, unsigned int virtual_refresh_rate)
> +{
> + drmModeModeInfo mode = *igt_output_get_mode(output);
> + uint64_t clock_hz = mode.clock * 1000;
> +
> + mode.vtotal = clock_hz / (mode.htotal * virtual_refresh_rate);
> + mode.vrefresh = virtual_refresh_rate;
> +
> + 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)
> @@ -641,6 +659,49 @@ test_seamless_rr_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint3
> vrr ? "on" : "off", vrr ? "not reached" : "exceeded", result);
> }
>
> +static void
> +test_seamless_virtual_rr_basic(data_t *data, enum pipe pipe, igt_output_t *output, uint32_t flags)
> +{
> + uint32_t result;
> + unsigned int vrefresh;
> + uint64_t rate[] = {0};
> +
> + igt_info("Use HIGH_RR Mode as default\n");
> + kmstest_dump_mode(&data->switch_modes[HIGH_RR_MODE]);
> +
> + prepare_test(data, output, pipe);
> + rate[0] = rate_from_refresh(data->switch_modes[HIGH_RR_MODE].vrefresh);
> +
> + /*
> + * Sink with DRR and VRR can be in downclock mode so
> + * switch to highest refresh rate mode.
> + */
> + igt_output_override_mode(output, &data->switch_modes[HIGH_RR_MODE]);
> + igt_assert(igt_display_try_commit_atomic(&data->display, DRM_MODE_PAGE_FLIP_EVENT, NULL) == 0);
> +
> + result = flip_and_measure(data, output, pipe, rate, 1, TEST_DURATION_NS);
> + igt_assert_f(result > 75,
> + "Refresh rate (%u Hz) %"PRIu64"ns: Target threshold not reached, result was %u%%\n",
> + data->switch_modes[HIGH_RR_MODE].vrefresh, rate[0], result);
> +
> + /* Switch to Virtual RR */
> + for (vrefresh = data->range.min + 10; vrefresh < data->range.max; vrefresh += 10) {
> + drmModeModeInfo virtual_mode = virtual_rr_vrr_range_mode(output, vrefresh);
> +
> + igt_info("Requesting Virtual Mode with Refresh Rate (%u Hz): \n", vrefresh);
> + kmstest_dump_mode(&virtual_mode);
> +
> + igt_output_override_mode(output, &virtual_mode);
> + igt_assert(igt_display_try_commit_atomic(&data->display, 0, NULL) == 0);
> +
> + rate[0] = rate_from_refresh(vrefresh);
> + result = flip_and_measure(data, output, pipe, rate, 1, TEST_DURATION_NS);
> + igt_assert_f(result > 75,
> + "Refresh rate (%u Hz) %"PRIu64"ns: Target threshold not reached, result was %u%%\n",
> + vrefresh, rate[0], result);
> + }
> +}
> +
> static void test_cleanup(data_t *data, enum pipe pipe, igt_output_t *output)
> {
> if (vrr_capable(output))
> @@ -686,7 +747,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 | TEST_SEAMLESS_DRRS)))
> + if (!(flags & (TEST_SEAMLESS_VRR | TEST_SEAMLESS_DRRS | TEST_SEAMLESS_VIRTUAL_RR)))
> return true;
>
> data->switch_modes[LOW_RR_MODE] = low_rr_mode_with_same_res(output, data->range.min);
> @@ -841,6 +902,10 @@ igt_main_args("drs:", long_opts, help_str, opt_handler, &data)
> "between flip timestamps converges to the requested rate");
> igt_subtest_with_dynamic("flip-basic-fastset")
> run_vrr_test(&data, test_basic, TEST_FASTSET);
> +
> + igt_describe("Test to switch to any custom virtual mode in VRR range without modeset.");
> + igt_subtest_with_dynamic("seamless-virtual-rr-switch")
Overall, the patch LGTM, but please update the test name to fix the
build errors in CI.
r/"seamless-virtual-rr-switch"/"seamless-rr-switch-virtual"/
- Bhanu
> + run_vrr_test(&data, test_seamless_virtual_rr_basic, TEST_SEAMLESS_VIRTUAL_RR);
> }
>
> igt_fixture {
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-04-15 6:52 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-10 19:03 [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode Manasi Navare
2024-04-10 19:03 ` [PATCH v5 2/2] HAX: run kms_vrr tests in BAT Manasi Navare
2024-04-10 19:05 ` [PATCH v5 1/2] tests/kms_vrr: Add a subtest for seamless modeset to a virtual LRR mode Manasi Navare
2024-04-11 1:40 ` ✗ Fi.CI.BUILD: failure for series starting with [v5,1/2] " Patchwork
2024-04-11 1:46 ` ✗ GitLab.Pipeline: warning " Patchwork
2024-04-15 6:52 ` [PATCH v5 1/2] " Modem, Bhanuprakash
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox