[igt-dev] [PATCH i-g-t 2/3] tests: Replace calls to igt_pipe_crc_drain + get_single with igt_pipe_crc_get_current()

Daniel Vetter daniel at ffwll.ch
Tue Aug 14 15:18:25 UTC 2018


On Tue, Jul 24, 2018 at 03:59:26PM +0200, Maarten Lankhorst wrote:
> This is a more race free of accomplishing the same.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>

Grep says you missed a few. I'd also go even further and entirely remove
igt_pipe_crc_get_single - the only place it's safe to call is right after
_start, and there there's not really a functional difference between
get_single and get_current.

Anyway, on patch 1: Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>

Also Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch> if you respin
this one here to convert all places where we have drain+get_single.
-Daniel

> ---
>  tests/kms_available_modes_crc.c |  3 +--
>  tests/kms_cursor_legacy.c       |  3 +--
>  tests/kms_plane.c               |  6 +-----
>  tests/kms_plane_lowres.c        |  6 ++----
>  tests/kms_plane_multiple.c      |  3 +--
>  tests/kms_rotation_crc.c        | 13 +++++--------
>  6 files changed, 11 insertions(+), 23 deletions(-)
> 
> diff --git a/tests/kms_available_modes_crc.c b/tests/kms_available_modes_crc.c
> index b70ef5d7d4c0..69a6a37d8ebd 100644
> --- a/tests/kms_available_modes_crc.c
> +++ b/tests/kms_available_modes_crc.c
> @@ -400,8 +400,7 @@ test_one_mode(data_t* data, igt_output_t *output, igt_plane_t* plane,
>  		igt_display_commit2(&data->display, data->commit);
>  
>  		if (do_crc) {
> -			igt_pipe_crc_drain(data->pipe_crc);
> -			igt_pipe_crc_get_single(data->pipe_crc, &current_crc);
> +			igt_pipe_crc_get_current(data->gfx_fd, data->pipe_crc, &current_crc);
>  
>  			if (plane->type != DRM_PLANE_TYPE_CURSOR) {
>  				if (!igt_check_crc_equal(&current_crc,
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index 85340d43e5b6..82ceebcb0809 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -1334,8 +1334,7 @@ static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
>  
>  		igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start);
>  
> -		igt_pipe_crc_drain(pipe_crc);
> -		igt_pipe_crc_get_single(pipe_crc, &test_crc);
> +		igt_pipe_crc_get_current(display->drm_fd, pipe_crc, &test_crc);
>  
>  		igt_spin_batch_free(display->drm_fd, spin);
>  
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index f9e123f0d1ea..3999dde8f694 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -419,11 +419,7 @@ static void test_format_plane_color(data_t *data, enum pipe pipe,
>  	igt_plane_set_fb(plane, fb);
>  
>  	igt_display_commit2(&data->display, data->display.is_atomic ? COMMIT_ATOMIC : COMMIT_UNIVERSAL);
> -
> -	/* make sure the crc we get is for the new fb */
> -	igt_wait_for_vblank(data->drm_fd, pipe);
> -	igt_pipe_crc_drain(data->pipe_crc);
> -	igt_pipe_crc_get_single(data->pipe_crc, crc);
> +	igt_pipe_crc_get_current(data->display.drm_fd, data->pipe_crc, crc);
>  
>  	igt_remove_fb(data->drm_fd, &old_fb);
>  }
> diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
> index d1e4b3ca536e..5e83ef5630b5 100644
> --- a/tests/kms_plane_lowres.c
> +++ b/tests/kms_plane_lowres.c
> @@ -221,8 +221,7 @@ test_plane_position_with_output(data_t *data, enum pipe pipe,
>  	check_mode(&mode_lowres, mode2);
>  
>  	igt_display_commit2(&data->display, COMMIT_ATOMIC);
> -	igt_pipe_crc_drain(pipe_crc);
> -	igt_pipe_crc_get_single(pipe_crc, &crc_lowres);
> +	igt_pipe_crc_get_current(data->display.drm_fd, pipe_crc, &crc_lowres);
>  
>  	igt_assert_plane_visible(data->drm_fd, pipe, false);
>  
> @@ -236,8 +235,7 @@ test_plane_position_with_output(data_t *data, enum pipe pipe,
>  
>  	igt_display_commit2(&data->display, COMMIT_ATOMIC);
>  
> -	igt_pipe_crc_drain(pipe_crc);
> -	igt_pipe_crc_get_single(pipe_crc, &crc_hires2);
> +	igt_pipe_crc_get_current(data->display.drm_fd, pipe_crc, &crc_hires2);
>  
>  	igt_assert_plane_visible(data->drm_fd, pipe, true);
>  
> diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
> index e61bc84624b3..a53be00141f0 100644
> --- a/tests/kms_plane_multiple.c
> +++ b/tests/kms_plane_multiple.c
> @@ -276,8 +276,7 @@ test_plane_position_with_output(data_t *data, enum pipe pipe,
>  
>  		igt_display_commit2(&data->display, COMMIT_ATOMIC);
>  
> -		igt_pipe_crc_drain(data->pipe_crc);
> -		igt_pipe_crc_get_single(data->pipe_crc, &crc);
> +		igt_pipe_crc_get_current(data->display.drm_fd, data->pipe_crc, &crc);
>  
>  		igt_assert_crc_equal(&data->ref_crc, &crc);
>  
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index 6cb5858adb0f..b994cc5d24fe 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -235,8 +235,8 @@ static void prepare_fbs(data_t *data, igt_output_t *output,
>  	if (plane->type != DRM_PLANE_TYPE_CURSOR)
>  		igt_plane_set_position(plane, data->pos_x, data->pos_y);
>  	igt_display_commit2(display, COMMIT_ATOMIC);
> -	igt_pipe_crc_drain(data->pipe_crc);
> -	igt_pipe_crc_get_single(data->pipe_crc, &data->flip_crc);
> +
> +	igt_pipe_crc_get_current(display->drm_fd, data->pipe_crc, &data->flip_crc);
>  
>  	/*
>  	  * Prepare the non-rotated flip fb.
> @@ -259,8 +259,7 @@ static void prepare_fbs(data_t *data, igt_output_t *output,
>  		igt_plane_set_position(plane, data->pos_x, data->pos_y);
>  	igt_display_commit2(display, COMMIT_ATOMIC);
>  
> -	igt_pipe_crc_drain(data->pipe_crc);
> -	igt_pipe_crc_get_single(data->pipe_crc, &data->ref_crc);
> +	igt_pipe_crc_get_current(display->drm_fd, data->pipe_crc, &data->ref_crc);
>  
>  	/*
>  	 * Prepare the non-rotated reference fb.
> @@ -310,8 +309,7 @@ static void test_single_case(data_t *data, enum pipe pipe,
>  	igt_assert_eq(ret, 0);
>  
>  	/* Check CRC */
> -	igt_pipe_crc_drain(data->pipe_crc);
> -	igt_pipe_crc_get_single(data->pipe_crc, &crc_output);
> +	igt_pipe_crc_get_current(display->drm_fd, data->pipe_crc, &crc_output);
>  	igt_assert_crc_equal(&data->ref_crc, &crc_output);
>  
>  	/*
> @@ -334,8 +332,7 @@ static void test_single_case(data_t *data, enum pipe pipe,
>  			igt_assert_eq(ret, 0);
>  		}
>  		kmstest_wait_for_pageflip(data->gfx_fd);
> -		igt_pipe_crc_drain(data->pipe_crc);
> -		igt_pipe_crc_get_single(data->pipe_crc, &crc_output);
> +		igt_pipe_crc_get_current(display->drm_fd, data->pipe_crc, &crc_output);
>  		igt_assert_crc_equal(&data->flip_crc,
>  				     &crc_output);
>  	}
> -- 
> 2.18.0
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the igt-dev mailing list