summarylogtreecommitdiffstats
path: root/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch
diff options
context:
space:
mode:
authorDet2016-03-25 23:56:02 +0200
committerDet2016-03-25 23:56:02 +0200
commit5f2701b9e8c5e5d413ea1014d166f1418d457034 (patch)
tree6792351543272d49ce5a12ff069817504b880849 /0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch
parent85076ba6699994c7ac46640859df9523d85284c0 (diff)
downloadaur-5f2701b9e8c5e5d413ea1014d166f1418d457034.tar.gz
1.18.2-4:
Diffstat (limited to '0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch')
-rw-r--r--0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch b/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch
new file mode 100644
index 000000000000..adf5c7a470f0
--- /dev/null
+++ b/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch
@@ -0,0 +1,43 @@
+From 3b385105b2d19a1c55e9779ae88d775185eea231 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>
+Date: Thu, 24 Mar 2016 17:42:47 +0900
+Subject: [PATCH xserver] present: Only requeue for next MSC after flip failure
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This code was added to deal with the driver present hook failing, in
+which case we need to wait for the next MSC before executing the
+presentation.
+
+However, it could also take effect in cases where the driver incorrectly
+thinks the current MSC matches the target one (e.g. due to the kernel
+interface only supporting 32-bit MSC values), in which case it could
+result in the presentation getting requeued over and over.
+
+To prevent such issues, check specifically for the target MSC
+immediately following the current MSC.
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94596
+Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
+Reviewed-by: Keith Packard <keithp@keithp.com>
+---
+ present/present.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/present/present.c b/present/present.c
+index 55f6aa7..105e2bf 100644
+--- a/present/present.c
++++ b/present/present.c
+@@ -726,7 +726,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
+ }
+
+ /* If present_flip failed, we may have to requeue for the target MSC */
+- if (msc_is_after(vblank->target_msc, crtc_msc) &&
++ if (vblank->target_msc == crtc_msc + 1 &&
+ Success == present_queue_vblank(screen,
+ vblank->crtc,
+ vblank->event_id,
+--
+2.7.4
+