[igt-dev] [i-g-t V6 09/10] tests/kms_vrr: New subtest for toggle VRR during fastsets

Golani, Mitulkumar Ajitkumar mitulkumar.ajitkumar.golani at intel.com
Mon Dec 11 08:51:31 UTC 2023



> -----Original Message-----
> From: Srinivas, Vidya <vidya.srinivas at intel.com>
> Sent: Thursday, December 7, 2023 4:11 PM
> To: Modem, Bhanuprakash <bhanuprakash.modem at intel.com>; 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: RE: [igt-dev] [i-g-t V6 09/10] tests/kms_vrr: New subtest for toggle
> VRR during fastsets
> 
> 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

With assumed approach changes looks good to me, after removing logs history, recommended to validate VRR toggle accurately from kernel logs.

Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani at intel.com>



More information about the igt-dev mailing list