[igt-dev] [PATCH] [i-g-t] tests/kms_cursor_crc: Fix test intermittent failures on AMD gpu

Kamil Konieczny kamil.konieczny at linux.intel.com
Fri Oct 13 11:38:41 UTC 2023


Hi Hersen,
On 2023-10-02 at 10:20:23 -0400, Hersen Wu wrote:
> Wait for two more vblanks before reading crc on AMD gpu.
> 
> Without waiting for two vblanks, AMD cursor updates may not
> synchronized to the same frame of pipe, crc generated may
> not be reliable.
> 
> Signed-off-by: Hersen Wu <hersenxs.wu at amd.com>
> ---
>  tests/kms_cursor_crc.c | 15 ++++++++++++++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
> index ba29ff65d..e3259e147 100644
> --- a/tests/kms_cursor_crc.c
> +++ b/tests/kms_cursor_crc.c
> @@ -276,6 +276,15 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
>  		restore_image(data, swbufidx, &((cursorarea){x, y, data->curw, data->curh}));
>  		igt_plane_set_fb(data->primary, &data->primary_fb[swbufidx]);
>  		igt_display_commit(display);
> +
> +		/* Wait for two more vblanks since cursor updates may not
> +		 * synchronized to the same frame on AMD HW
> +		 */
> +		if (is_amdgpu_device(data->drm_fd))
----------- ^^^^^^^^^^^^^^^^
Why not
        if(data->vblank_wait_count)

as for msm driver we also need to wait? Btw how it worked before
for msm without that wait here? If you need to wait 2+2 maybe set
it already to 4 and drop this hunk?

Regards,
Kamil

> +			igt_wait_for_vblank_count(data->drm_fd,
> +				display->pipes[data->pipe].crtc_offset,
> +				data->vblank_wait_count);
> +
>  		igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &crc);
>  		igt_assert_crc_equal(&crc, hwcrc);
>  	}
> @@ -1079,7 +1088,11 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>  
>  		igt_require_pipe_crc(data.drm_fd);
>  
> -		data.vblank_wait_count = is_msm_device(data.drm_fd) ? 2 : 1;
> +		/* Wait for two more vblanks since cursor updates may not
> +		 * synchronized to the same frame on AMD HW
> +		 */
> +		data.vblank_wait_count =
> +			(is_msm_device(data.drm_fd) || is_amdgpu_device(data.drm_fd)) ? 2 : 1;
>  	}
>  
>  	data.cursor_max_w = cursor_width;
> -- 
> 2.25.1
> 


More information about the igt-dev mailing list