[igt-dev] [i-g-t V6 09/10] tests/kms_vrr: New subtest for toggle VRR during fastsets
Srinivas, Vidya
vidya.srinivas at intel.com
Thu Dec 7 10:40:43 UTC 2023
Tested-by: Vidya Srinivas <vidya.srinivas at intel.com>
> -----Original Message-----
> From: igt-dev <igt-dev-bounces at lists.freedesktop.org> On Behalf Of
> Bhanuprakash Modem
> Sent: Thursday, December 7, 2023 12:19 PM
> To: igt-dev at lists.freedesktop.org; ville.syrjala at linux.intel.com; Golani,
> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani at intel.com>
> Cc: Gupta, Nidhi1 <nidhi1.gupta at intel.com>
> Subject: [igt-dev] [i-g-t V6 09/10] tests/kms_vrr: New subtest for toggle VRR
> during fastsets
>
> Allow VRR to be toggled during fastsets, without full modeset.
> This patch enables 'kms_vrr at flip-basic' subtest to verify fastset too.
>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
> Signed-off-by: Nidhi Gupta <nidhi1.gupta at 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
More information about the igt-dev
mailing list