[igt-dev] [v5 i-g-t 02/14] tests/kms_frontbuffer_tracking: Fix mode selection for 2x tests

Modem, Bhanuprakash bhanuprakash.modem at intel.com
Wed May 12 06:37:51 UTC 2021


> From: Nautiyal, Ankit K <ankit.k.nautiyal at intel.com>
> Sent: Tuesday, May 11, 2021 9:57 AM
> To: Modem, Bhanuprakash <bhanuprakash.modem at intel.com>; igt-
> dev at lists.freedesktop.org
> Cc: Deak, Imre <imre.deak at intel.com>; Daniel Vetter <daniel.vetter at ffwll.ch>
> Subject: Re: [v5 i-g-t 02/14] tests/kms_frontbuffer_tracking: Fix mode
> selection for 2x tests
> 
> 
> On 5/8/2021 9:52 PM, Bhanuprakash Modem wrote:
> > When two monitors connected through MST, the second monitor also
> > tries to use the same mode. So two such modes may not fit into the
> > link bandwidth.
> >
> > This patch will find a combination of modes that fit into the BW.
> >
> > V2:
> > * Remove MST specific logic (Daniel)
> > V3:
> > * Add support for legacy commit (Ankit)
> >
> > Cc: Imre Deak <imre.deak at intel.com>
> > Cc: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
> > Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> > Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
> > ---
> >   tests/kms_frontbuffer_tracking.c | 40 ++++++++++++++++++++++++++++++++
> >   1 file changed, 40 insertions(+)
> >
> > diff --git a/tests/kms_frontbuffer_tracking.c
> b/tests/kms_frontbuffer_tracking.c
> > index 2e74bec6f..65c2ddb5c 100644
> > --- a/tests/kms_frontbuffer_tracking.c
> > +++ b/tests/kms_frontbuffer_tracking.c
> > @@ -1683,14 +1683,54 @@ static void enable_prim_screen_and_wait(const struct
> test_mode *t)
> >   	do_assertions(ASSERT_NO_ACTION_CHANGE);
> >   }
> >
> > +static void update_modeset_cached_params(void)
> > +{
> > +	bool found = false;
> > +
> > +	igt_output_set_pipe(prim_mode_params.output, prim_mode_params.pipe);
> > +	igt_output_set_pipe(scnd_mode_params.output, scnd_mode_params.pipe);
> > +
> > +	found = igt_override_all_active_output_modes_to_fit_bw(&drm.display);
> > +	igt_require_f(found, "No valid mode combo found.\n");
> > +
> > +	prim_mode_params.mode_copy =
> *igt_output_get_mode(prim_mode_params.output);
> > +	prim_mode_params.mode = &prim_mode_params.mode_copy;
> > +	prim_mode_params.primary.w = prim_mode_params.mode->hdisplay;
> > +	prim_mode_params.primary.h = prim_mode_params.mode->vdisplay;
> > +
> > +	scnd_mode_params.mode_copy =
> *igt_output_get_mode(scnd_mode_params.output);
> > +	scnd_mode_params.mode = &scnd_mode_params.mode_copy;
> > +	scnd_mode_params.primary.w = scnd_mode_params.mode->hdisplay;
> > +	scnd_mode_params.primary.h = scnd_mode_params.mode->vdisplay;
> > +
> > +	fill_fb_region(&prim_mode_params.primary, COLOR_PRIM_BG);
> > +	fill_fb_region(&scnd_mode_params.primary, COLOR_SCND_BG);
> > +
> > +	__set_mode_for_params(&prim_mode_params);
> > +	__set_mode_for_params(&scnd_mode_params);
> > +}
> > +
> >   static void enable_both_screens_and_wait(const struct test_mode *t)
> >   {
> > +	int ret;
> > +
> >   	fill_fb_region(&prim_mode_params.primary, COLOR_PRIM_BG);
> >   	fill_fb_region(&scnd_mode_params.primary, COLOR_SCND_BG);
> >
> >   	__set_mode_for_params(&prim_mode_params);
> >   	__set_mode_for_params(&scnd_mode_params);
> >
> > +	if (drm.display.is_atomic)
> > +		ret = igt_display_try_commit_atomic(&drm.display,
> > +				DRM_MODE_ATOMIC_TEST_ONLY |
> > +				DRM_MODE_ATOMIC_ALLOW_MODESET,
> > +				NULL);
> > +	else
> > +		ret = igt_display_try_commit2(&drm.display, COMMIT_LEGACY);
> > +
> > +	if (ret)
> > +		update_modeset_cached_params();
> > +
> >   	igt_display_commit2(&drm.display, drm.display.is_atomic ? COMMIT_ATOMIC
> : COMMIT_LEGACY);
> 
> I think this statement should now be the part of the above if-block.

I think still we need this commit, since try_commit_atomic with the flag
DRM_MODE_ATOMIC_TEST_ONLY will do atomic check only and it really won't commit.
Also, we'll miss some display prop clean-up display_commit_changed() with both legacy
and atomic try commit.

This comment is applicable for all patches in this series.
 
> 
> In case either of the try commit passes without need to call
> update_modeset_chached_params(), igt_display_commit again will be redundant.
> 
> With that changed:
> 
> Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
> 
> >
> >   	wanted_crc = &blue_crcs[t->format].crc;


More information about the igt-dev mailing list