summaryrefslogtreecommitdiff
path: root/tests/kms_cursor_legacy.c
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2016-08-10 13:13:19 +0200
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2016-08-11 16:08:12 +0200
commitaaf46cb1d16fc5babd60e0a5eaf392304c506d26 (patch)
tree5db233b7d12872b0747a3922baf8574e034efe63 /tests/kms_cursor_legacy.c
parentdba966770d331ca5399fb4da7a50be0765138a7e (diff)
kms_cursor_legacy: Try vrefresh amount of flips in cursor-vs-flip
When vrefresh is 30 the tests run for twice as long, set it to vrefresh to make the tests just as long anywhere 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.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index 9c25ef9e..758d512c 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -647,8 +647,10 @@ static void basic_cursor_vs_flip(igt_display_t *display, enum flip_test mode, in
struct igt_fb fb_info, cursor_fb, cursor_fb2, argb_fb;
unsigned vblank_start, vblank_last;
volatile unsigned long *shared;
- int target;
+ long target;
enum pipe pipe = find_connected_pipe(display, false);
+ igt_output_t *output;
+ uint32_t vrefresh;
if (mode >= flip_test_atomic)
igt_require(display->is_atomic);
@@ -656,7 +658,8 @@ static void basic_cursor_vs_flip(igt_display_t *display, enum flip_test mode, in
shared = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
igt_assert(shared != MAP_FAILED);
- igt_require(set_fb_on_crtc(display, pipe, &fb_info));
+ igt_require((output = set_fb_on_crtc(display, pipe, &fb_info)));
+ vrefresh = igt_output_get_mode(output)->vrefresh;
igt_create_color_fb(display->drm_fd, 64, 64, DRM_FORMAT_ARGB8888, 0, 1., 1., 1., &cursor_fb);
set_cursor_on_pipe(display, pipe, &cursor_fb);
@@ -678,8 +681,8 @@ static void basic_cursor_vs_flip(igt_display_t *display, enum flip_test mode, in
} 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 %ld cursor updates per half-vblank (%u)\n",
+ target, vrefresh);
for (int i = 0; i < nloops; i++) {
shared[0] = 0;
@@ -705,7 +708,7 @@ static void basic_cursor_vs_flip(igt_display_t *display, enum flip_test mode, in
igt_assert_eq(read(display->drm_fd, &vbl, sizeof(vbl)), sizeof(vbl));
vblank_start = vblank_last = vbl.sequence;
- for (int n = 0; n < 60; n++) {
+ for (int n = 0; n < vrefresh; n++) {
flip_nonblocking(display, pipe, mode >= flip_test_atomic, &fb_info);
igt_assert_eq(read(display->drm_fd, &vbl, sizeof(vbl)), sizeof(vbl));
@@ -715,15 +718,18 @@ static void basic_cursor_vs_flip(igt_display_t *display, enum flip_test mode, in
}
vblank_last = vbl.sequence;
}
- igt_assert_eq(vbl.sequence, vblank_start + 60);
+
+ if (mode != flip_test_atomic_transitions &&
+ mode != flip_test_atomic_transitions_varying_size)
+ igt_assert_eq(vbl.sequence, vblank_start + vrefresh);
shared[0] = 1;
igt_waitchildren();
- igt_assert_f(shared[0] > 60*target,
+ igt_assert_f(shared[0] > vrefresh*target,
"completed %lu cursor updated in a period of 60 flips, "
"we expect to complete approximately %lu updateds, "
"with the threshold set at %lu\n",
- shared[0], 2*60ul*target, 60ul*target);
+ shared[0], 2ul*vrefresh*target, vrefresh*target);
}
do_cleanup_display(display);