[igt-dev] [PATCH i-g-t] tests/kms_async_flips: Make the crc test faster

Karthik B S karthik.b.s at intel.com
Thu Feb 17 09:46:56 UTC 2022


On 2/17/2022 12:00 AM, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Use a smaler mode for the crc test so we don't have to draw
> so many pixels. Gives me 50% more flips on a tgl with 4k screen.
>
> Hopefully this help out those poor shard-skls a bit.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Reviewed-by: Karthik B S <karthik.b.s at intel.com>
> ---
>   tests/kms_async_flips.c | 22 ++++++++++++++++------
>   1 file changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
> index 0c3821339680..2b36eb354cce 100644
> --- a/tests/kms_async_flips.c
> +++ b/tests/kms_async_flips.c
> @@ -471,19 +471,28 @@ static unsigned int clock_ms(void)
>   	return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
>   }
>   
> -static void paint_fb(int fd, struct igt_fb *fb, uint32_t color)
> +static void paint_fb(int fd, struct igt_fb *fb, uint32_t color, int height)
>   {
>   	igt_draw_rect_fb(fd, NULL, 0, fb,
>   			 gem_has_mappable_ggtt(fd) ?
>   			 IGT_DRAW_MMAP_GTT : IGT_DRAW_MMAP_WC,
> -			 0, 0, 1, fb->height, color);
> +			 0, 0, 1, height, color);
>   }
>   
>   static void test_crc(data_t *data)
>   {
>   	unsigned int frame = 0;
>   	unsigned int start;
> -	int ret;
> +	int ret, height;
> +	drmModeModeInfoPtr mode;
> +
> +	/* make things faster by using a smallish mode */
> +	mode = &data->connector->modes[0];
> +	if (mode->hdisplay > 1024 && mode->vdisplay > 786)
> +		mode = igt_std_1024_mode_get(data->refresh_rate);
> +	else
> +		mode = igt_memdup(mode, sizeof(*mode));
> +	height = mode->vdisplay;
>   
>   	data->flip_count = 0;
>   	data->frame_count = 0;
> @@ -493,7 +502,8 @@ static void test_crc(data_t *data)
>   	igt_draw_fill_fb(data->drm_fd, &data->bufs[!frame], 0xff0000ff);
>   
>   	ret = drmModeSetCrtc(data->drm_fd, data->crtc_id, data->bufs[frame].fb_id, 0, 0,
> -			     &data->connector->connector_id, 1, &data->connector->modes[0]);
> +			     &data->connector->connector_id, 1, mode);
> +	free(mode);
>   	igt_assert_eq(ret, 0);
>   
>   	data->pipe_crc = igt_pipe_crc_new(data->drm_fd,
> @@ -509,7 +519,7 @@ static void test_crc(data_t *data)
>   
>   	while (clock_ms() - start < 2000) {
>   		/* fill the next fb with the expected color */
> -		paint_fb(data->drm_fd, &data->bufs[frame], 0xff0000ff);
> +		paint_fb(data->drm_fd, &data->bufs[frame], 0xff0000ff, height);
>   
>   		data->flip_pending = true;
>   		ret = drmModePageFlip(data->drm_fd, data->crtc_id, data->bufs[frame].fb_id,
> @@ -520,7 +530,7 @@ static void test_crc(data_t *data)
>   
>   		/* clobber the previous fb which should no longer be scanned out */
>   		frame = !frame;
> -		paint_fb(data->drm_fd, &data->bufs[frame], rand());
> +		paint_fb(data->drm_fd, &data->bufs[frame], rand(), height);
>   	}
>   
>   	igt_pipe_crc_stop(data->pipe_crc);




More information about the igt-dev mailing list