summaryrefslogtreecommitdiff
path: root/tests/kms_cursor_legacy.c
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2017-01-23 16:37:01 +0100
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2017-01-23 16:37:03 +0100
commitda0b6abeb74acb0309d9906774cd928c59a992e9 (patch)
treee6a2d564c07f60dbe9b2ef09f6b7c4e525eddb00 /tests/kms_cursor_legacy.c
parent9fbf72b7d5c6d1093b197abf706a3c5d57a1efc1 (diff)
kms_cursor_legacy: Allow for an extra vblank wait in atomic-transitions tests
This is required for ILK style watermark programming, which currently inserts an extra vblank wait. This allows the tests to pass on those platforms. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Diffstat (limited to 'tests/kms_cursor_legacy.c')
-rw-r--r--tests/kms_cursor_legacy.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index 5e9f5f39..707546cd 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -283,6 +283,21 @@ static bool cursor_slowpath(enum flip_test mode)
return true;
}
+/*
+ * On platforms with two-stage watermark programming
+ * changing sprite visibility may require a extra vblank wait.
+ *
+ * Handle this here.
+ */
+static bool mode_requires_extra_vblank(enum flip_test mode)
+{
+ if (mode == flip_test_atomic_transitions ||
+ mode == flip_test_atomic_transitions_varying_size)
+ return true;
+
+ return false;
+}
+
static void transition_nonblocking(igt_display_t *display, enum pipe pipe,
struct igt_fb *prim_fb, struct igt_fb *argb_fb,
bool hide_sprite)
@@ -647,7 +662,12 @@ static void basic_flip_cursor(igt_display_t *display,
igt_set_timeout(1, "Stuck page flip");
igt_ignore_warn(read(display->drm_fd, &vbl, sizeof(vbl)));
- igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start + 1);
+
+ if (!mode_requires_extra_vblank(mode))
+ igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start + 1);
+ else
+ igt_assert_lte(get_vblank(display->drm_fd, pipe, 0), vblank_start + 2);
+
igt_reset_timeout();
do_cleanup_display(display);
@@ -784,7 +804,12 @@ static void flip_vs_cursor(igt_display_t *display, enum flip_test mode, int nloo
igt_set_timeout(1, "Stuck page flip");
igt_ignore_warn(read(display->drm_fd, &vbl, sizeof(vbl)));
- igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start + 1);
+
+ if (!mode_requires_extra_vblank(mode))
+ igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start + 1);
+ else
+ igt_assert_lte(get_vblank(display->drm_fd, pipe, 0), vblank_start + 2);
+
igt_reset_timeout();
} while (nloops--);