[igt-dev] [PATCH i-g-t v2] tests/kms_cursor_crc: Wait extra vblank

Juha-Pekka Heikkila juhapekka.heikkila at gmail.com
Thu Sep 22 13:20:37 UTC 2022


Look ok to me.

Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>

On 21.9.2022 1.28, Jessica Zhang wrote:
> Wait an extra vblank for legacy cursor ioctl to finish.
> 
> Extra vblank wait is needed for both HW and SW test as the legacy cursor
> ioctl is called in both cases.
> 
> Based on Rob's patch [1] and, similarly, fixes flaky results on MSM.
> 
> Changes since V1:
> - Only wait for an extra vblank for MSM driver
> 
> Signed-off-by: Jessica Zhang <quic_jesszhan at quicinc.com>
> 
> [1] https://patchwork.freedesktop.org/series/105999/
> ---
>   tests/kms_cursor_crc.c | 9 +++++----
>   1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
> index 53f18f4f1add..7c1f74be568d 100644
> --- a/tests/kms_cursor_crc.c
> +++ b/tests/kms_cursor_crc.c
> @@ -185,6 +185,7 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
>   	igt_pipe_crc_t *pipe_crc = data->pipe_crc;
>   	igt_crc_t crc;
>   	int ret = 0, swbufidx;
> +	int vblank_wait_count = is_msm_device(data->drm_fd) ? 2 : 1;
>   
>   	igt_print_activity();
>   
> @@ -202,8 +203,8 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
>   		igt_display_commit(display);
>   
>   		/* Extra vblank wait is because nonblocking cursor ioctl */
> -		igt_wait_for_vblank(data->drm_fd,
> -				display->pipes[data->pipe].crtc_offset);
> +		igt_wait_for_vblank_count(data->drm_fd,
> +				display->pipes[data->pipe].crtc_offset, vblank_wait_count);
>   
>   		igt_pipe_crc_get_current(data->drm_fd, pipe_crc, hwcrc);
>   
> @@ -243,8 +244,8 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
>   		igt_plane_set_fb(data->primary, &data->primary_fb[swbufidx]);
>   
>   		igt_display_commit(display);
> -		igt_wait_for_vblank(data->drm_fd,
> -				display->pipes[data->pipe].crtc_offset);
> +		igt_wait_for_vblank_count(data->drm_fd,
> +				display->pipes[data->pipe].crtc_offset, vblank_wait_count);
>   
>   		igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &crc);
>   		igt_assert_crc_equal(&crc, hwcrc);



More information about the igt-dev mailing list