All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Murthy, Arun R" <arun.r.murthy@intel.com>
Cc: "igt-dev@lists.freedesktop.org" <igt-dev@lists.freedesktop.org>
Subject: Re: [igt-dev] [PATCH i-g-t 6/6] tests/kms_async_flips: Test all modifiers
Date: Thu, 2 Feb 2023 14:15:37 +0200	[thread overview]
Message-ID: <Y9upad7eN8P5eQvh@intel.com> (raw)
In-Reply-To: <DM6PR11MB3177FB4C74D129995D9FB495BAD69@DM6PR11MB3177.namprd11.prod.outlook.com>

On Thu, Feb 02, 2023 at 11:23:09AM +0000, Murthy, Arun R wrote:
> > -----Original Message-----
> > From: Ville Syrjala <ville.syrjala@linux.intel.com>
> > Sent: Tuesday, January 31, 2023 5:37 PM
> > To: igt-dev@lists.freedesktop.org
> > Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> > Subject: [PATCH i-g-t 6/6] tests/kms_async_flips: Test all modifiers
> > 
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > Run the basic async flip test for all modifiers reported by the plane (for the
> > XRGB8888 format). The driver may not support async flip with all modifiers
> > so we allow this to fail.
> 
> Support for adding X-tile and linear for all platforms is being added as sub-test in https://patchwork.freedesktop.org/series/103137/
> 
> > 
> > TODO: probably shuould add an even more basic subtest that
> >       makes sure the driver accepts async flips with a least
> >       one format/modifier combo, if it advertises async flip
> >       support
> > 
> > Cc: Arun R Murthy <arun.r.murthy@intel.com>
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  tests/kms_async_flips.c | 54 +++++++++++++++++++++++++++++++++--------
> >  1 file changed, 44 insertions(+), 10 deletions(-)
> > 
> > diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c index
> > 58740f6ab702..387fcff2f32c 100644
> > --- a/tests/kms_async_flips.c
> > +++ b/tests/kms_async_flips.c
> > @@ -53,6 +53,8 @@ typedef struct {
> >  	igt_output_t *output;
> >  	unsigned long flip_timestamp_us;
> >  	double flip_interval;
> > +	uint64_t modifier;
> > +	igt_plane_t *plane;
> >  	igt_pipe_crc_t *pipe_crc;
> >  	igt_crc_t ref_crc;
> >  	int flip_count;
> > @@ -61,6 +63,7 @@ typedef struct {
> >  	bool extended;
> >  	enum pipe pipe;
> >  	bool alternate_sync_async;
> > +	bool allow_fail;
> >  } data_t;
> > 
> >  static void flip_handler(int fd_, unsigned int sequence, unsigned int tv_sec,
> > @@ -133,7 +136,7 @@ static void make_fb(data_t *data, struct igt_fb *fb,
> >  	rec_width = width / (ARRAY_SIZE(data->bufs) * 2);
> > 
> >  	igt_create_color_fb(data->drm_fd, width, height,
> > DRM_FORMAT_XRGB8888,
> > -			    default_modifier(data), 0.0, 0.0, 0.5, fb);
> > +			    data->modifier, 0.0, 0.0, 0.5, fb);
> > 
> >  	cr = igt_get_cairo_ctx(data->drm_fd, fb);
> >  	igt_paint_color_rand(cr, rec_width * 2 + rec_width * index, 0,
> > rec_width, height); @@ -159,24 +162,26 @@ static void test_init(data_t
> > *data)
> >  	data->refresh_rate = mode->vrefresh;
> > 
> >  	igt_output_set_pipe(data->output, data->pipe);
> > +
> > +	data->plane = igt_output_get_plane_type(data->output,
> > +DRM_PLANE_TYPE_PRIMARY);
> >  }
> > 
> >  static void test_init_fbs(data_t *data)  {
> >  	int i;
> >  	uint32_t width, height;
> > -	igt_plane_t *plane;
> >  	static uint32_t prev_output_id;
> > +	static uint64_t prev_modifier;
> >  	drmModeModeInfo *mode;
> > 
> >  	mode = igt_output_get_mode(data->output);
> >  	width = mode->hdisplay;
> >  	height = mode->vdisplay;
> > 
> > -	plane = igt_output_get_plane_type(data->output,
> > DRM_PLANE_TYPE_PRIMARY);
> > -
> > -	if (prev_output_id != data->output->id) {
> > +	if (prev_output_id != data->output->id ||
> > +	    prev_modifier != data->modifier) {
> >  		prev_output_id = data->output->id;
> > +		prev_modifier = data->modifier;
> > 
> >  		if (data->bufs[0].fb_id) {
> >  			for (i = 0; i < ARRAY_SIZE(data->bufs); i++) @@ -187,8
> > +192,8 @@ static void test_init_fbs(data_t *data)
> >  			make_fb(data, &data->bufs[i], width, height, i);
> >  	}
> > 
> > -	igt_plane_set_fb(plane, &data->bufs[0]);
> > -	igt_plane_set_size(plane, width, height);
> > +	igt_plane_set_fb(data->plane, &data->bufs[0]);
> > +	igt_plane_set_size(data->plane, width, height);
> > 
> >  	igt_display_commit2(&data->display, data->display.is_atomic ?
> > COMMIT_ATOMIC : COMMIT_LEGACY);  } @@ -243,8 +248,10 @@ static void
> > test_async_flip(data_t *data)
> >  		ret = drmModePageFlip(data->drm_fd, data->crtc_id,
> >  				      data->bufs[frame % 4].fb_id,
> >  				      flags, data);
> > -
> > -		igt_assert(ret == 0);
> > +		if (frame == 1 && data->allow_fail)
> > +			igt_skip_on(ret == -EINVAL);
> > +		else
> > +			igt_assert(ret == 0);
> > 
> >  		wait_flip_event(data);
> > 
> > @@ -545,6 +552,9 @@ static void run_test(data_t *data, void (*test)(data_t
> > *))
> >  	for_each_pipe_with_valid_output(&data->display, data->pipe, data-
> > >output) {
> >  		test_init(data);
> > 
> > +		data->allow_fail = false;
> > +		data->modifier = default_modifier(data);
> > +
> >  		igt_dynamic_f("pipe-%s", kmstest_pipe_name(data->pipe)) {
> >  			test_init_fbs(data);
> >  			test(data);
> > @@ -555,6 +565,30 @@ static void run_test(data_t *data, void
> > (*test)(data_t *))
> >  	}
> >  }
> > 
> > +static void run_test_with_modifiers(data_t *data, void (*test)(data_t
> > +*)) {
> > +	for_each_pipe_with_valid_output(&data->display, data->pipe, data-
> > >output) {
> > +		test_init(data);
> > +
> > +		for (int i = 0; i < data->plane->format_mod_count; i++) {
> > +			if (data->plane->formats[i] !=
> > DRM_FORMAT_XRGB8888)
> > +				continue;
> > +
> > +			data->allow_fail = true;
> If the modifier is supported by the platform and there is a failure with a bug in driver/hardware, aren't we falsely reporting here?

There is no way to query what is supported by the hw/driver, so
we just have to try them all and accept that not all may succeed.
As mentioned earlier it would be nice it we have a basic subtest to
confirm that at least one of the modifier/format combos works
when the driver advertises async flip support.

> 
> Thanks and Regards,
> Arun R Murthy
> --------------------
> > +			data->modifier = data->plane->modifiers[i];
> > +
> > +			igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(data->pipe),
> > +				      igt_fb_modifier_name(data->modifier)) {
> > +				test_init_fbs(data);
> > +				test(data);
> > +			}
> > +		}
> > +
> > +		if (!data->extended)
> > +			break;
> > +	}
> > +}
> > +
> >  static int opt_handler(int opt, int opt_index, void *_data)  {
> >  	data_t *data = _data;
> > @@ -595,7 +629,7 @@ igt_main_args("e", NULL, help_str, opt_handler,
> > &data)
> >  		igt_describe("Wait for page flip events in between successive
> > asynchronous flips");
> >  		igt_subtest_with_dynamic("async-flip-with-page-flip-events")
> > {
> >  			data.alternate_sync_async = false;
> > -			run_test(&data, test_async_flip);
> > +			run_test_with_modifiers(&data, test_async_flip);
> >  		}
> > 
> >  		igt_describe("Alternate between sync and async flips");
> > --
> > 2.39.1
> 

-- 
Ville Syrjälä
Intel

  reply	other threads:[~2023-02-02 12:15 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-31 12:06 [igt-dev] [PATCH i-g-t 0/6] tests/kms_async_flips: Test format modifiers Ville Syrjala
2023-01-31 12:06 ` [igt-dev] [PATCH i-g-t 1/6] tests/kms_async_flips: Add missing igt_put_cairo_ctx() Ville Syrjala
2023-02-02 11:03   ` Murthy, Arun R
2023-01-31 12:06 ` [igt-dev] [PATCH i-g-t 2/6] tests/kms_async_flips: Render the bars full height Ville Syrjala
2023-02-09 14:11   ` Karthik B S
2023-01-31 12:06 ` [igt-dev] [PATCH i-g-t 3/6] tests/kms_async_flips: Ger rid of i915 specific fb creation Ville Syrjala
2023-02-02 11:24   ` Murthy, Arun R
2023-05-15  9:13   ` Murthy, Arun R
2023-01-31 12:06 ` [igt-dev] [PATCH i-g-t 4/6] tests/kms_async_flips: Run the test only once per pipe Ville Syrjala
2023-01-31 12:21   ` Modem, Bhanuprakash
2023-02-02  9:27     ` Ville Syrjälä
2023-02-02 11:25   ` Murthy, Arun R
2023-01-31 12:06 ` [igt-dev] [PATCH i-g-t 5/6] tests/kms_async_flips: Split test_init() Ville Syrjala
2023-05-15  9:10   ` Murthy, Arun R
2023-01-31 12:06 ` [igt-dev] [PATCH i-g-t 6/6] tests/kms_async_flips: Test all modifiers Ville Syrjala
2023-02-02 11:23   ` Murthy, Arun R
2023-02-02 12:15     ` Ville Syrjälä [this message]
2023-02-02 12:24       ` Murthy, Arun R
2023-02-03 12:32         ` Ville Syrjälä
2023-02-07  5:49           ` Murthy, Arun R
2023-05-15  9:07             ` Murthy, Arun R
2023-02-03 12:29     ` Ville Syrjälä
2023-02-07  5:41       ` Murthy, Arun R
2023-01-31 12:38 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_async_flips: Test format modifiers Patchwork
2023-01-31 16:28 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y9upad7eN8P5eQvh@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=arun.r.murthy@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.