From 17df6287199f6c2265a35b56f210bbd718cb2ff7 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Fri, 1 Apr 2016 18:58:44 +0200 Subject: update xorg-server-hwcursor-gamma MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- ...y-requeue-for-next-MSC-after-flip-failure.patch | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 xorg-server-hwcursor-gamma/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch (limited to 'xorg-server-hwcursor-gamma/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch') diff --git a/xorg-server-hwcursor-gamma/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch b/xorg-server-hwcursor-gamma/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch new file mode 100644 index 0000000..adf5c7a --- /dev/null +++ b/xorg-server-hwcursor-gamma/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?= +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 +Reviewed-by: Keith Packard +--- + 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 + -- cgit v1.2.3-70-g09d2