Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Karthik B S <karthik.b.s@intel.com>
To: Arun R Murthy <arun.r.murthy@intel.com>, <igt-dev@lists.freedesktop.org>
Subject: Re: [igt-dev] [PATCH i-g-t 4/4] tests/kms_async_flips: Test all modifiers
Date: Wed, 17 May 2023 14:31:30 +0530	[thread overview]
Message-ID: <6e4e2fa2-1e61-53c1-5e45-38d6eb39c39f@intel.com> (raw)
In-Reply-To: <20230516062206.1064604-4-arun.r.murthy@intel.com>


On 5/16/2023 11:52 AM, Arun R Murthy wrote:
> 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.
>
> 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
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
>   tests/kms_async_flips.c | 53 +++++++++++++++++++++++++++++++++--------
>   1 file changed, 43 insertions(+), 10 deletions(-)
>
> diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
> index f54bd7ca..3b8cb988 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);
>   
> @@ -556,6 +563,8 @@ static void run_test(data_t *data, void (*test)(data_t *))
>   			continue;
>   
>   		test_init(data);
> +		data->allow_fail = false;
> +		data->modifier = default_modifier(data);
>   		igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(data->pipe), data->output->name) {
>   			test_init_fbs(data);
>   			test(data);
> @@ -566,6 +575,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) {

Hi,

Don't we want to run this with all pipes at least once like the other 
subtests? Any particular reason for this?

> +		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;
> +			data->modifier = data->plane->modifiers[i];
> +
> +			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(data->pipe),

Please add output name print here as well, like in patch 2.

> +				      igt_fb_modifier_name(data->modifier)) {
> +				test_init_fbs(data);
> +				test(data);
> +			}
> +		}
> +
> +		if (!data->extended)
> +			break;

Should this be removed similar to patch 2, so that all outputs can be 
verified even on normal CI run?

Thanks,
Karthik.B.S

> +	}
> +}
> +
>   static int opt_handler(int opt, int opt_index, void *_data)
>   {
>   	data_t *data = _data;
> @@ -612,7 +645,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");

  reply	other threads:[~2023-05-17  9:01 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-16  6:22 [igt-dev] [PATCH i-g-t 1/4] tests/kms_async_flips: Ger rid of i915 specific fb creation Arun R Murthy
2023-05-16  6:22 ` [igt-dev] [PATCH i-g-t 2/4] " Arun R Murthy
2023-05-17 11:10   ` Kamil Konieczny
2023-05-17 11:26     ` Murthy, Arun R
2023-05-16  6:22 ` [igt-dev] [PATCH i-g-t 3/4] tests/kms_async_flips: Split test_init() Arun R Murthy
2023-05-17  9:04   ` Karthik B S
2023-05-16  6:22 ` [igt-dev] [PATCH i-g-t 4/4] tests/kms_async_flips: Test all modifiers Arun R Murthy
2023-05-17  9:01   ` Karthik B S [this message]
2023-05-16  6:55 ` [igt-dev] [PATCH i-g-t 1/4] tests/kms_async_flips: Ger rid of i915 specific fb creation Saarinen, Jani
2023-05-16  7:24 ` [igt-dev] ✗ Fi.CI.BAT: failure for series starting with [i-g-t,1/4] " Patchwork
2023-05-17  3:50 ` [igt-dev] [PATCHv2 i-g-t 1/4] tests/kms_async_flips: Get " Arun R Murthy
2023-05-17  3:50   ` [igt-dev] [PATCHv2 i-g-t 2/4] tests/kms_async_flips: Run the test only once per pipe Arun R Murthy
2023-05-17  6:33     ` Karthik B S
2023-05-17  7:51       ` Murthy, Arun R
2023-05-17  5:49   ` [igt-dev] [PATCHv2 i-g-t 1/4] tests/kms_async_flips: Get rid of i915 specific fb creation Karthik B S
2023-05-17  4:45 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [PATCHv2,i-g-t,1/4] tests/kms_async_flips: Get rid of i915 specific fb creation (rev2) Patchwork
2023-05-17 14:03 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2023-05-18 11:25 ` [igt-dev] [PATCHv2 i-g-t 1/4] tests/kms_async_flips: Get rid of i915 specific fb creation Arun R Murthy
2023-05-18 11:25   ` [igt-dev] [PATCHv3 i-g-t 2/4] tests/kms_async_flips: Run the test for all outputs Arun R Murthy
2023-05-18 11:56     ` Karthik B S
2023-05-18 11:25   ` [igt-dev] [PATCH i-g-t 3/4] tests/kms_async_flips: Split test_init() Arun R Murthy
2023-05-18 11:25   ` [igt-dev] [PATCHv2 i-g-t 4/4] tests/kms_async_flips: Test all modifiers Arun R Murthy
2023-05-18 11:58     ` Karthik B S
2023-05-18 11:58 ` [igt-dev] ✗ Fi.CI.BUILD: failure for series starting with [i-g-t,3/4] tests/kms_async_flips: Split test_init() (rev5) Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2023-05-18 12:13 [igt-dev] [PATCHv2 i-g-t 4/4] tests/kms_async_flips: Test all modifiers Arun R Murthy
2023-05-19  5:34 ` [igt-dev] [PATCH " Arun R Murthy

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=6e4e2fa2-1e61-53c1-5e45-38d6eb39c39f@intel.com \
    --to=karthik.b.s@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox