tests/kms_cursor_crc: Wait extra vblank
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@quicinc.com>
[1] https://patchwork.freedesktop.org/series/105999/
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index 53f18f4..7c1f74b 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -185,6 +185,7 @@
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 @@
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 @@
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);