[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