[Intel-gfx] [PATCH igt] igt/kms_cursor_legacy: Reduce scope of basic-cursor-vs-flip
Chris Wilson
chris at chris-wilson.co.uk
Wed Aug 24 14:06:25 UTC 2016
Since we are experiencing too much noise in BAT from what just looks
like scheduling delays in inspecting the vblank, reduce the basic test
to the fundament: check that the cursor ioctl following the nonblocking
flip/modeset occurs within the same vblank. However, CI + debug builds
are fast enough...
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Imre Deak <imre.deak at intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
---
tests/kms_cursor_legacy.c | 39 ++++++++++++++++++++++-----------------
1 file changed, 22 insertions(+), 17 deletions(-)
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index e0f39f7..785bf14 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -472,19 +472,21 @@ static void basic_flip_vs_cursor(igt_display_t *display, enum flip_test mode, in
igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
- target = 4096;
- do {
- vblank_start = get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS);
- igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start);
- for (int n = 0; n < target; n++)
- do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg[0]);
- target /= 2;
- if (get_vblank(display->drm_fd, pipe, 0) == vblank_start)
- break;
- } while (target);
- igt_require(target > 1);
+ if (nloops) {
+ target = 4096;
+ do {
+ vblank_start = get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS);
+ igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start);
+ for (int n = 0; n < target; n++)
+ do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg[0]);
+ target /= 2;
+ if (get_vblank(display->drm_fd, pipe, 0) == vblank_start)
+ break;
+ } while (target);
+ igt_require(target > 1);
- igt_debug("Using a target of %d cursor updates per half-vblank\n", target);
+ igt_debug("Using a target of %d cursor updates per half-vblank\n", target);
+ }
vblank_start = get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS);
igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start);
@@ -492,11 +494,12 @@ static void basic_flip_vs_cursor(igt_display_t *display, enum flip_test mode, in
do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg[0]);
igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start);
- while (nloops--) {
- /* Start with a synchronous query to align with the vblank */
- vblank_start = get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS);
+ do {
+ /* Bind the cursor first to warm up */
do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg[nloops & 1]);
+ /* Start with a synchronous query to align with the vblank */
+ vblank_start = get_vblank(display->drm_fd, pipe, DRM_VBLANK_NEXTONMISS);
switch (mode) {
default:
flip_nonblocking(display, pipe, mode >= flip_test_atomic, &fb_info);
@@ -507,16 +510,18 @@ static void basic_flip_vs_cursor(igt_display_t *display, enum flip_test mode, in
break;
}
+ /* The nonblocking flip should not have delayed us */
igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start);
for (int n = 0; n < target; n++)
do_ioctl(display->drm_fd, DRM_IOCTL_MODE_CURSOR, &arg[nloops & 1]);
+ /* Nor should it have delayed the following cursor update */
igt_assert_eq(get_vblank(display->drm_fd, pipe, 0), vblank_start);
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);
igt_reset_timeout();
- }
+ } while (nloops--);
do_cleanup_display(display);
igt_remove_fb(display->drm_fd, &fb_info);
@@ -962,7 +967,7 @@ igt_main
}
igt_subtest_f("%sflip-vs-cursor-%s", prefix, modes[i])
- basic_flip_vs_cursor(&display, i, 8);
+ basic_flip_vs_cursor(&display, i, 0);
igt_subtest_f("long-flip-vs-cursor-%s", modes[i])
basic_flip_vs_cursor(&display, i, 150);
igt_subtest_f("%scursor-vs-flip-%s", prefix, modes[i])
--
2.9.3
More information about the Intel-gfx
mailing list