diff --git a/extra/mesa/0001-glvnd-fix-gl-dot-pc.patch b/extra/mesa/0001-glvnd-fix-gl-dot-pc.patch deleted file mode 100644 index 68118f45e..000000000 --- a/extra/mesa/0001-glvnd-fix-gl-dot-pc.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up mesa-12.0.3/src/mesa/gl.pc.in.jx mesa-12.0.3/src/mesa/gl.pc.in ---- mesa-12.0.3/src/mesa/gl.pc.in.jx 2016-01-18 02:39:26.000000000 -0500 -+++ mesa-12.0.3/src/mesa/gl.pc.in 2016-10-25 13:06:44.013159358 -0400 -@@ -7,7 +7,7 @@ Name: gl - Description: Mesa OpenGL library - Requires.private: @GL_PC_REQ_PRIV@ - Version: @PACKAGE_VERSION@ --Libs: -L${libdir} -l@GL_LIB@ -+Libs: -L${libdir} -lGL - Libs.private: @GL_PC_LIB_PRIV@ - Cflags: -I${includedir} @GL_PC_CFLAGS@ - glx_tls: @GLX_TLS@ diff --git a/extra/mesa/0001-glvnd-fix-gl.pc.patch b/extra/mesa/0001-glvnd-fix-gl.pc.patch new file mode 100644 index 000000000..fd4507e23 --- /dev/null +++ b/extra/mesa/0001-glvnd-fix-gl.pc.patch @@ -0,0 +1,26 @@ +From a9554de2a6028540fa12a7ebdab4daf2b46010fa Mon Sep 17 00:00:00 2001 +Message-Id: +From: Unknown <> +Date: Tue, 15 May 2018 20:10:53 +0200 +Subject: [PATCH 1/4] glvnd: fix gl.pc + +--- + src/mesa/gl.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/mesa/gl.pc.in b/src/mesa/gl.pc.in +index 181724b97b..8c7b7da8d7 100644 +--- a/src/mesa/gl.pc.in ++++ b/src/mesa/gl.pc.in +@@ -7,7 +7,7 @@ Name: gl + Description: Mesa OpenGL library + Requires.private: @GL_PC_REQ_PRIV@ + Version: @PACKAGE_VERSION@ +-Libs: -L${libdir} -l@GL_LIB@ ++Libs: -L${libdir} -lGL + Libs.private: @GL_PC_LIB_PRIV@ + Cflags: -I${includedir} @GL_PC_CFLAGS@ + glx_tls: @GLX_TLS@ +-- +2.17.0 + diff --git a/extra/mesa/0002-loader_dri3-Wait-for-pending-swaps-to-complete-before-drawable_fini.patch b/extra/mesa/0002-loader_dri3-Wait-for-pending-swaps-to-complete-before-drawable_fini.patch deleted file mode 100644 index 9c3bacd6a..000000000 --- a/extra/mesa/0002-loader_dri3-Wait-for-pending-swaps-to-complete-before-drawable_fini.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c -index 6bb11c4..7bd79af 100644 ---- a/src/loader/loader_dri3_helper.c -+++ b/src/loader/loader_dri3_helper.c -@@ -234,6 +234,9 @@ loader_dri3_drawable_fini(struct loader_dri3_drawable *draw) - { - int i; - -+ if (draw->special_event) -+ loader_dri3_swapbuffer_barrier(draw); -+ - draw->ext->core->destroyDrawable(draw->dri_drawable); - - for (i = 0; i < ARRAY_SIZE(draw->buffers); i++) { diff --git a/extra/mesa/0004-meson-Add-library-versions-to-swr-drivers.patch b/extra/mesa/0002-meson-Add-library-versions-to-swr-drivers.patch similarity index 85% rename from extra/mesa/0004-meson-Add-library-versions-to-swr-drivers.patch rename to extra/mesa/0002-meson-Add-library-versions-to-swr-drivers.patch index b9ae485df..ef7d21fe6 100644 --- a/extra/mesa/0004-meson-Add-library-versions-to-swr-drivers.patch +++ b/extra/mesa/0002-meson-Add-library-versions-to-swr-drivers.patch @@ -1,10 +1,10 @@ -From cd56731b2c63532d6ed97f7b39afa5977936b3bc Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: +From 4edc0c6290ea4e848c5142b6807ebc5c809fecef Mon Sep 17 00:00:00 2001 +Message-Id: <4edc0c6290ea4e848c5142b6807ebc5c809fecef.1526409254.git.jan.steffens@gmail.com> +In-Reply-To: +References: From: "Jan Alexander Steffens (heftig)" Date: Sat, 14 Apr 2018 18:43:23 +0200 -Subject: [PATCH 4/5] meson: Add library versions to swr drivers +Subject: [PATCH 2/4] meson: Add library versions to swr drivers This is for parity with autotools. @@ -67,5 +67,5 @@ index 43e1c5cc50..a6dbd7a3f6 100644 ) endif -- -2.16.2 +2.17.0 diff --git a/extra/mesa/0005-meson-Version-libMesaOpenCL-like-autotools-does.patch b/extra/mesa/0003-meson-Version-libMesaOpenCL-like-autotools-does.patch similarity index 76% rename from extra/mesa/0005-meson-Version-libMesaOpenCL-like-autotools-does.patch rename to extra/mesa/0003-meson-Version-libMesaOpenCL-like-autotools-does.patch index de93fc31a..bb0bac74e 100644 --- a/extra/mesa/0005-meson-Version-libMesaOpenCL-like-autotools-does.patch +++ b/extra/mesa/0003-meson-Version-libMesaOpenCL-like-autotools-does.patch @@ -1,10 +1,10 @@ -From 064f328419936a8a5df2b0474ae76196d92e6fa0 Mon Sep 17 00:00:00 2001 -Message-Id: <064f328419936a8a5df2b0474ae76196d92e6fa0.1523725229.git.jan.steffens@gmail.com> -In-Reply-To: -References: +From 7bafcb1b39b03110ba5a375635d7b6b5ecf98bc4 Mon Sep 17 00:00:00 2001 +Message-Id: <7bafcb1b39b03110ba5a375635d7b6b5ecf98bc4.1526409254.git.jan.steffens@gmail.com> +In-Reply-To: +References: From: "Jan Alexander Steffens (heftig)" Date: Sat, 14 Apr 2018 18:49:14 +0200 -Subject: [PATCH 5/5] meson: Version libMesaOpenCL like autotools does +Subject: [PATCH 3/4] meson: Version libMesaOpenCL like autotools does This is for parity with autotools. It names the library libMesaOpenCL.so.1.0.0 and points mesa.icd to the .1 symlink. @@ -39,5 +39,5 @@ index bebe0547d4..317ad8dab4 100644 ) -- -2.16.2 +2.17.0 diff --git a/extra/mesa/0004-loader_dri3-Variant-2-Wait-for-pending-swaps-to-comp.patch b/extra/mesa/0004-loader_dri3-Variant-2-Wait-for-pending-swaps-to-comp.patch new file mode 100644 index 000000000..683b025d7 --- /dev/null +++ b/extra/mesa/0004-loader_dri3-Variant-2-Wait-for-pending-swaps-to-comp.patch @@ -0,0 +1,73 @@ +From 5abc129c70cac08104fb7f8c757bc30afe8e8803 Mon Sep 17 00:00:00 2001 +Message-Id: <5abc129c70cac08104fb7f8c757bc30afe8e8803.1526409254.git.jan.steffens@gmail.com> +In-Reply-To: +References: +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= +Date: Tue, 8 May 2018 11:42:05 +0200 +Subject: [PATCH 4/4] loader_dri3: Variant 2: Wait for pending swaps to + complete before drawable_fini. + +On 2018-05-05 06:25 AM, Mario Kleiner wrote: +> On Sat, May 5, 2018 at 4:08 AM, Mike Lothian wrote: +>> I definately saw the steam bug with patch 1 but not with plasmashell, +>> I started seeing it with patch 2 but it seemed to fix itself +> +> I had two hangs of kwin_x11 within the last 6 hours when alt-tabbing +> between windows, where it got stuck in the +> loader_dri3_swapbuffer_barrier() from patch 1/2. Not sure how that is +> possible, or if the stacktrace was misleading, because i had to VT +> switch to a text console to attach the debugger and this might be just +> a side effect of that. But if it is true, then patch 1/2 would not be +> it. Also 1/2 has a potential performance impact, whereas 2/2 doesn't. +> However 2/2 would also need more work, as i can think of more complex +> scenarios where it would filter the wrong events, although not in the +> case of plasmashell or steam. Probably we'd need to sacrifice a few +> sbc bits in the Present events serial field to transport a unique tag +> for each incarnation of the loader_dri3_drawable, like a mini-hash of +> the draw->eid. Ugly ugly... + +How about the below? + +Idle notify events shouldn't need special treatment, since the pixmap +XIDs of the buffers will be different between loader_dri3_drawable +incarnations, aren't they? + +This still leaves the issue that the SBC moves backwards, which could +theoretically result in hangs with apps using glXWaitForSbcOML. Fixing +that would probably require changing the loader_dri3_drawable lifetime +cycle, which would probably be very invasive, if feasible at all. Maybe +we don't need to care about that for the time being, until there's a +real world app running into it. +--- + src/loader/loader_dri3_helper.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c +index 2e3b6c619e..e1eecb70a9 100644 +--- a/src/loader/loader_dri3_helper.c ++++ b/src/loader/loader_dri3_helper.c +@@ -365,9 +365,18 @@ 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; ++ + switch (ce->mode) { + case XCB_PRESENT_COMPLETE_MODE_FLIP: + draw->flipping = true; +-- +2.17.0 + diff --git a/extra/mesa/PKGBUILD b/extra/mesa/PKGBUILD index 7c2b56c91..d6b2b9dba 100644 --- a/extra/mesa/PKGBUILD +++ b/extra/mesa/PKGBUILD @@ -10,7 +10,7 @@ pkgbase=mesa pkgname=('libva-mesa-driver' 'mesa-vdpau' 'mesa') pkgdesc="An open-source implementation of the OpenGL specification" pkgver=18.0.3 -pkgrel=3 +pkgrel=4 arch=('x86_64') makedepends=('python2-mako' 'libxml2' 'libx11' 'glproto' 'libdrm' 'dri2proto' 'dri3proto' 'presentproto' 'libxshmfence' 'libxxf86vm' 'libxdamage' 'libvdpau' 'libva' 'wayland' 'wayland-protocols' @@ -19,18 +19,18 @@ url="https://www.mesa3d.org/" license=('custom') source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig} LICENSE - 0001-glvnd-fix-gl-dot-pc.patch - 0002-loader_dri3-Wait-for-pending-swaps-to-complete-before-drawable_fini.patch - 0004-meson-Add-library-versions-to-swr-drivers.patch - 0005-meson-Version-libMesaOpenCL-like-autotools-does.patch + 0001-glvnd-fix-gl.pc.patch + 0002-meson-Add-library-versions-to-swr-drivers.patch + 0003-meson-Version-libMesaOpenCL-like-autotools-does.patch + 0004-loader_dri3-Variant-2-Wait-for-pending-swaps-to-comp.patch "atomic.patch::https://cgit.freedesktop.org/mesa/mesa/patch/?id=498faea103aa7966b435f21d8ff5e36172389b1e") sha512sums=('decd050bab049d17bcde3f832d4da0ffdb80f147c99377a162739bbe72fd6fd32b51e56e6fc66895b8c30fc19a1815bae164b21aa557816c3998ad18c1ffca2d' 'SKIP' 'f9f0d0ccf166fe6cb684478b6f1e1ab1f2850431c06aa041738563eb1808a004e52cdec823c103c9e180f03ffc083e95974d291353f0220fe52ae6d4897fecc7' - '75849eca72ca9d01c648d5ea4f6371f1b8737ca35b14be179e14c73cc51dca0739c333343cdc228a6d464135f4791bcdc21734e2debecd29d57023c8c088b028' - '19b980db37675732d28978318074ca172ef862de7fdcae2c82ef16dc411c709c8598b044a828e7e260d86d23f644485abcc6a0aaf5e04b9c05dce22d0c7e3716' - '0f5da6e48885713c7ddef9e5715e178e0a499bcb622d7f19e15b9e4b4647331d7bf14829218b6ab80f17bae90fd95b8df6a0a81203d8081686805ca5329531ff' - 'd3c01f61a0a0cc2f01e66e0126ad8b6386d4a53c1dc1b3b134800e4cd25507e458bac860cbed10cf4b46b04e8d50aba233870587b89c058fffd57436b48289bf' + '2f40198eff47664c831c56e8a63f60a4d1b815cf697e6bdb0be39e6d9c5df043857f6264b7cd2ccf46c07626186c565144e80f4214b5f7936ef7024c47201437' + 'c3f3baf8a5f480ce64b321c031e31c0d5819732ca34647ac545d0fd7fafa40ad4dcf1e1ec8d574754e0a44bf0cdc462ed8709c8d9b58a17e01c6ba5b4c5e91c6' + 'a2062f8a5259aabed1aa20df6a8510f0f3e914cb6bba72751249b3295285596bb7615063a7a7b7870f9f4489d0e6b774f0bced2bdde49a1aa9df6a44976462d1' + '572901a1e9cacfacfc8c4cc3cd077a626d4aeda8c8a58f6085bae827cba8a2d4d99af1dafbb5a9296b6ebf3120e2b05a084fe1c96093074befe62597319384a1' '75cd21bccc84a6b6b0de39c6d209c8bee0e5143b486433184ca078e8bc6797d30746be3ce5f7a89eea9bc3c7e2d68880412511fd6b9946252c7c7638523c6caa') validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D' # Emil Velikov '946D09B5E4C9845E63075FF1D961C596A7203456' # Andres Gomez @@ -41,16 +41,17 @@ prepare() { # glvnd support patches - from Fedora # non-upstreamed ones - patch -Np1 -i ../0001-glvnd-fix-gl-dot-pc.patch - - # experimental patch, should fix FS#58549 - # see https://bugs.freedesktop.org/show_bug.cgi?id=106351 - # and https://patchwork.freedesktop.org/series/42687/ - patch -Np1 -i ../0002-loader_dri3-Wait-for-pending-swaps-to-complete-before-drawable_fini.patch + patch -Np1 -i ../0001-glvnd-fix-gl.pc.patch # Upstreamed meson fixes - patch -Np1 -i ../0004-meson-Add-library-versions-to-swr-drivers.patch - patch -Np1 -i ../0005-meson-Version-libMesaOpenCL-like-autotools-does.patch + patch -Np1 -i ../0002-meson-Add-library-versions-to-swr-drivers.patch + patch -Np1 -i ../0003-meson-Version-libMesaOpenCL-like-autotools-does.patch + + # experimental patch, should fix FS#58549 + # variant 2 patch should fix FS#58605 + # see https://bugs.freedesktop.org/show_bug.cgi?id=106351 + # and https://patchwork.freedesktop.org/series/42687/ + patch -Np1 -i ../0004-loader_dri3-Variant-2-Wait-for-pending-swaps-to-comp.patch # disk cache: Link with -latomic if necessary patch -Np1 -i ../atomic.patch