[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