Accepting request 611357 from home:tobijk:X11:XOrg
- Add patch U_dri3-Stricter-SBC-wraparound-handling.patch This fixes an error with timestamps, avoiding near infinite client hangs with the new X server 1.20 release and some clients, the most prominent being plasmashell & steam Bugentry: FDO#106351 - Add patch U_dri3-Stricter-SBC-wraparound-handling.patch This fixes an error with timestamps, avoiding near infinite client hangs with the new X server 1.20 release and some clients, the most prominent being plasmashell & steam Bugentry: FDO#106351 OBS-URL: https://build.opensuse.org/request/show/611357 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=747
This commit is contained in:
parent
9ad2e78211
commit
6c1c346b50
@ -1,3 +1,12 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue May 22 16:08:15 UTC 2018 - tobias.johannes.klausmann@mni.thm.de
|
||||
|
||||
- Add patch U_dri3-Stricter-SBC-wraparound-handling.patch
|
||||
This fixes an error with timestamps, avoiding near infinite client
|
||||
hangs with the new X server 1.20 release and some clients, the most
|
||||
prominent being plasmashell & steam
|
||||
Bugentry: FDO#106351
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 22 08:44:11 UTC 2018 - msrb@suse.com
|
||||
|
||||
|
@ -140,6 +140,8 @@ Patch32: archlinux_glvnd-fix-gl-dot-pc.patch
|
||||
Patch43: u_r600-egd_tables.py-make-the-script-python-2-3-compat.patch
|
||||
Patch44: u_intel_anv-make-scripts-python-2-3-compat.patch
|
||||
Patch47: u_st-dri-don-t-set-queryDmaBufFormats-queryDmaBufModif.patch
|
||||
# Already upstream
|
||||
Patch100: U_dri3-Stricter-SBC-wraparound-handling.patch
|
||||
|
||||
BuildRequires: autoconf >= 2.60
|
||||
BuildRequires: automake
|
||||
@ -750,6 +752,7 @@ rm -rf docs/README.{VMS,WIN32,OS2}
|
||||
%patch43 -p1
|
||||
%patch44 -p1
|
||||
%patch47 -p1
|
||||
%patch100 -p1
|
||||
|
||||
# Remove requires to libglvnd/libglvnd-devel from baselibs.conf when
|
||||
# disabling libglvnd build; ugly ...
|
||||
|
@ -1,3 +1,12 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue May 22 16:08:15 UTC 2018 - tobias.johannes.klausmann@mni.thm.de
|
||||
|
||||
- Add patch U_dri3-Stricter-SBC-wraparound-handling.patch
|
||||
This fixes an error with timestamps, avoiding near infinite client
|
||||
hangs with the new X server 1.20 release and some clients, the most
|
||||
prominent being plasmashell & steam
|
||||
Bugentry: FDO#106351
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 22 08:44:11 UTC 2018 - msrb@suse.com
|
||||
|
||||
|
@ -139,6 +139,8 @@ Patch32: archlinux_glvnd-fix-gl-dot-pc.patch
|
||||
Patch43: u_r600-egd_tables.py-make-the-script-python-2-3-compat.patch
|
||||
Patch44: u_intel_anv-make-scripts-python-2-3-compat.patch
|
||||
Patch47: u_st-dri-don-t-set-queryDmaBufFormats-queryDmaBufModif.patch
|
||||
# Already upstream
|
||||
Patch100: U_dri3-Stricter-SBC-wraparound-handling.patch
|
||||
|
||||
BuildRequires: autoconf >= 2.60
|
||||
BuildRequires: automake
|
||||
@ -749,6 +751,7 @@ rm -rf docs/README.{VMS,WIN32,OS2}
|
||||
%patch43 -p1
|
||||
%patch44 -p1
|
||||
%patch47 -p1
|
||||
%patch100 -p1
|
||||
|
||||
# Remove requires to libglvnd/libglvnd-devel from baselibs.conf when
|
||||
# disabling libglvnd build; ugly ...
|
||||
|
48
U_dri3-Stricter-SBC-wraparound-handling.patch
Normal file
48
U_dri3-Stricter-SBC-wraparound-handling.patch
Normal file
@ -0,0 +1,48 @@
|
||||
From fe2edb25dd5628c395a65b60998f11e839d2b458 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>
|
||||
Date: Tue, 8 May 2018 11:51:09 +0200
|
||||
Subject: [PATCH] dri3: Stricter SBC wraparound handling
|
||||
|
||||
Prevents corrupting the upper 32 bits of draw->recv_sbc when
|
||||
draw->send_sbc resets to 0 (which currently happens when the window is
|
||||
unbound from a context and bound to one again), which in turn caused
|
||||
loader_dri3_swap_buffers_msc to calculate target_msc with corrupted
|
||||
upper 32 bits. This resulted in hangs with the Xorg modesetting driver
|
||||
as of xserver 1.20 (older versions and other drivers ignored the upper
|
||||
32 bits of the target MSC, which is why this wasn't noticed earlier).
|
||||
|
||||
Cc: mesa-stable@lists.freedesktop.org
|
||||
Bugzilla: https://bugs.freedesktop.org/106351
|
||||
Tested-by: Mike Lothian <mike@fireburn.co.uk>
|
||||
---
|
||||
src/loader/loader_dri3_helper.c | 14 +++++++++++---
|
||||
1 file changed, 11 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c
|
||||
index 6db8303d26..f0ff2f07bd 100644
|
||||
--- a/src/loader/loader_dri3_helper.c
|
||||
+++ b/src/loader/loader_dri3_helper.c
|
||||
@@ -370,9 +370,17 @@ dri3_handle_present_event(struct loader_dri3_drawable *draw,
|
||||
* checking for wrap.
|
||||
*/
|
||||
if (ce->kind == XCB_PRESENT_COMPLETE_KIND_PIXMAP) {
|
||||
- draw->recv_sbc = (draw->send_sbc & 0xffffffff00000000LL) | ce->serial;
|
||||
- if (draw->recv_sbc > draw->send_sbc)
|
||||
- draw->recv_sbc -= 0x100000000;
|
||||
+ uint64_t recv_sbc = (draw->send_sbc & 0xffffffff00000000LL) | ce->serial;
|
||||
+
|
||||
+ /* Only assume wraparound if that results in exactly the previous
|
||||
+ * SBC + 1, otherwise ignore received SBC > sent SBC (those are
|
||||
+ * probably from a previous loader_dri3_drawable instance) to avoid
|
||||
+ * calculating bogus target MSC values in loader_dri3_swap_buffers_msc
|
||||
+ */
|
||||
+ if (recv_sbc <= draw->send_sbc)
|
||||
+ draw->recv_sbc = recv_sbc;
|
||||
+ else if (recv_sbc == (draw->recv_sbc + 0x100000001ULL))
|
||||
+ draw->recv_sbc = recv_sbc - 0x100000000ULL;
|
||||
|
||||
/* When moving from flip to copy, we assume that we can allocate in
|
||||
* a more optimal way if we don't need to cater for the display
|
||||
--
|
||||
2.16.3
|
||||
|
Loading…
Reference in New Issue
Block a user