diff options
author | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2017-01-23 16:37:01 +0100 |
---|---|---|
committer | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2017-01-23 16:37:03 +0100 |
commit | da0b6abeb74acb0309d9906774cd928c59a992e9 (patch) | |
tree | e6a2d564c07f60dbe9b2ef09f6b7c4e525eddb00 /tests/kms_cursor_legacy.c | |
parent | 9fbf72b7d5c6d1093b197abf706a3c5d57a1efc1 (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.c | 29 |
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--); |