summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2018-12-11 17:07:22 +0100
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2018-12-15 08:45:41 +0100
commit90c76cb9bb47a5a3ebb34ad6b1a557bc02d39713 (patch)
tree4e5e6e234fe722751b6a19d65e5cfadd73389c65 /tests
parent3915d3e8652365a5b640850d1fbcb3b603d55cb3 (diff)
tests/kms_frontbuffer_tracking: Make sure GPU is quiescent before handling assertions, v2.
Typically PSR enables in around 136 ms, but on some tests the we have to explicitly make sure that the gpu is idle before rendering. Otherwise, sometimes we wait for the background flusher to finish, which will take at least a second longer, and causes the wait for PSR to timeout. On kms_frontbuffer_tracking: Starting subtest: psr-2p-scndscrn-shrfb-plflip-blt psr_active(debugfs_fd, true) took 136ms psr_active(debugfs_fd, true) took 136ms psr_active(debugfs_fd, true) took 350ms psr_active(debugfs_fd, true) took 136ms psr_active(debugfs_fd, true) took 1598ms Changes since v1: - Do not call gem_quiescent_gpu on modesetfrombusy subtest, or we get a timeout. Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: José Roberto de Souza <jose.souza@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108733 Suggested-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> #v1
Diffstat (limited to 'tests')
-rw-r--r--tests/kms_frontbuffer_tracking.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/tests/kms_frontbuffer_tracking.c b/tests/kms_frontbuffer_tracking.c
index 276ef83ce..5ab283197 100644
--- a/tests/kms_frontbuffer_tracking.c
+++ b/tests/kms_frontbuffer_tracking.c
@@ -1551,9 +1551,11 @@ static void do_flush(const struct test_mode *t)
#define DRRS_ASSERT_FLAGS (7 << 8)
#define ASSERT_DRRS_HIGH (1 << 8)
-#define ASSERT_DRRS_LOW (1 << 9)
+#define ASSERT_DRRS_LOW (1 << 9)
#define ASSERT_DRRS_INACTIVE (1 << 10)
+#define ASSERT_NO_IDLE_GPU (1 << 11)
+
static int adjust_assertion_flags(const struct test_mode *t, int flags)
{
if (!(flags & DONT_ASSERT_FEATURE_STATUS)) {
@@ -1642,6 +1644,10 @@ static void __do_assertions(const struct test_mode *t, int flags,
{
flags = adjust_assertion_flags(t, flags);
+ /* Make sure any submitted rendering is now idle. */
+ if (!(flags & ASSERT_NO_IDLE_GPU))
+ gem_quiescent_gpu(drm.fd);
+
igt_debug("checking asserts in line %i\n", line);
wait_user(2, "Paused before assertions.");
@@ -2691,7 +2697,7 @@ static void modesetfrombusy_subtest(const struct test_mode *t)
params->primary.fb = &fb2;
set_mode_for_params(params);
- do_assertions(0);
+ do_assertions(ASSERT_NO_IDLE_GPU);
stop_busy_thread();