summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/mesa/0001-glvnd-fix-gl-dot-pc.patch12
-rw-r--r--libre/mesa/0001-glvnd-fix-gl.pc.patch26
-rw-r--r--libre/mesa/0002-loader_dri3-Wait-for-pending-swaps-to-complete-before-drawable_fini.patch14
-rw-r--r--libre/mesa/0002-meson-Add-library-versions-to-swr-drivers.patch (renamed from libre/mesa/0004-meson-Add-library-versions-to-swr-drivers.patch)12
-rw-r--r--libre/mesa/0003-meson-Version-libMesaOpenCL-like-autotools-does.patch (renamed from libre/mesa/0005-meson-Version-libMesaOpenCL-like-autotools-does.patch)12
-rw-r--r--libre/mesa/0004-loader_dri3-Variant-2-Wait-for-pending-swaps-to-comp.patch73
-rw-r--r--libre/mesa/PKGBUILD33
7 files changed, 128 insertions, 54 deletions
diff --git a/libre/mesa/0001-glvnd-fix-gl-dot-pc.patch b/libre/mesa/0001-glvnd-fix-gl-dot-pc.patch
deleted file mode 100644
index 68118f45e..000000000
--- a/libre/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/libre/mesa/0001-glvnd-fix-gl.pc.patch b/libre/mesa/0001-glvnd-fix-gl.pc.patch
new file mode 100644
index 000000000..fd4507e23
--- /dev/null
+++ b/libre/mesa/0001-glvnd-fix-gl.pc.patch
@@ -0,0 +1,26 @@
+From a9554de2a6028540fa12a7ebdab4daf2b46010fa Mon Sep 17 00:00:00 2001
+Message-Id: <a9554de2a6028540fa12a7ebdab4daf2b46010fa.1526409254.git.jan.steffens@gmail.com>
+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/libre/mesa/0002-loader_dri3-Wait-for-pending-swaps-to-complete-before-drawable_fini.patch b/libre/mesa/0002-loader_dri3-Wait-for-pending-swaps-to-complete-before-drawable_fini.patch
deleted file mode 100644
index 9c3bacd6a..000000000
--- a/libre/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/libre/mesa/0004-meson-Add-library-versions-to-swr-drivers.patch b/libre/mesa/0002-meson-Add-library-versions-to-swr-drivers.patch
index b9ae485df..ef7d21fe6 100644
--- a/libre/mesa/0004-meson-Add-library-versions-to-swr-drivers.patch
+++ b/libre/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: <cd56731b2c63532d6ed97f7b39afa5977936b3bc.1523725229.git.jan.steffens@gmail.com>
-In-Reply-To: <ac8faf2b14ed1c9ce518eddfc9c5098b6f9c74dd.1523725229.git.jan.steffens@gmail.com>
-References: <ac8faf2b14ed1c9ce518eddfc9c5098b6f9c74dd.1523725229.git.jan.steffens@gmail.com>
+From 4edc0c6290ea4e848c5142b6807ebc5c809fecef Mon Sep 17 00:00:00 2001
+Message-Id: <4edc0c6290ea4e848c5142b6807ebc5c809fecef.1526409254.git.jan.steffens@gmail.com>
+In-Reply-To: <a9554de2a6028540fa12a7ebdab4daf2b46010fa.1526409254.git.jan.steffens@gmail.com>
+References: <a9554de2a6028540fa12a7ebdab4daf2b46010fa.1526409254.git.jan.steffens@gmail.com>
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
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/libre/mesa/0005-meson-Version-libMesaOpenCL-like-autotools-does.patch b/libre/mesa/0003-meson-Version-libMesaOpenCL-like-autotools-does.patch
index de93fc31a..bb0bac74e 100644
--- a/libre/mesa/0005-meson-Version-libMesaOpenCL-like-autotools-does.patch
+++ b/libre/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: <ac8faf2b14ed1c9ce518eddfc9c5098b6f9c74dd.1523725229.git.jan.steffens@gmail.com>
-References: <ac8faf2b14ed1c9ce518eddfc9c5098b6f9c74dd.1523725229.git.jan.steffens@gmail.com>
+From 7bafcb1b39b03110ba5a375635d7b6b5ecf98bc4 Mon Sep 17 00:00:00 2001
+Message-Id: <7bafcb1b39b03110ba5a375635d7b6b5ecf98bc4.1526409254.git.jan.steffens@gmail.com>
+In-Reply-To: <a9554de2a6028540fa12a7ebdab4daf2b46010fa.1526409254.git.jan.steffens@gmail.com>
+References: <a9554de2a6028540fa12a7ebdab4daf2b46010fa.1526409254.git.jan.steffens@gmail.com>
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
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/libre/mesa/0004-loader_dri3-Variant-2-Wait-for-pending-swaps-to-comp.patch b/libre/mesa/0004-loader_dri3-Variant-2-Wait-for-pending-swaps-to-comp.patch
new file mode 100644
index 000000000..683b025d7
--- /dev/null
+++ b/libre/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: <a9554de2a6028540fa12a7ebdab4daf2b46010fa.1526409254.git.jan.steffens@gmail.com>
+References: <a9554de2a6028540fa12a7ebdab4daf2b46010fa.1526409254.git.jan.steffens@gmail.com>
+From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel@daenzer.net>
+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 <mike@fireburn.co.uk> 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/libre/mesa/PKGBUILD b/libre/mesa/PKGBUILD
index bb3c55c98..7abb48b79 100644
--- a/libre/mesa/PKGBUILD
+++ b/libre/mesa/PKGBUILD
@@ -6,7 +6,7 @@ pkgbase=mesa
pkgname=("${pkgbase}")
pkgdesc="A free implementation of the OpenGL specification, without nonfree software recommendations in drirc"
pkgver=18.0.3
-pkgrel=3.parabola2
+pkgrel=4.parabola1
arch=('i686' 'x86_64' 'armv7h')
makedepends=('python2-mako' 'libxml2' 'libx11' 'glproto' 'libdrm' 'dri2proto' 'dri3proto' 'presentproto'
'libxshmfence' 'libxxf86vm' 'libxdamage' 'libvdpau' 'libva' 'wayland' 'wayland-protocols'
@@ -18,19 +18,19 @@ 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
drirc)
source_armv7h=("atomic.patch::https://cgit.freedesktop.org/mesa/mesa/patch/?id=498faea103aa7966b435f21d8ff5e36172389b1e")
sha512sums=('decd050bab049d17bcde3f832d4da0ffdb80f147c99377a162739bbe72fd6fd32b51e56e6fc66895b8c30fc19a1815bae164b21aa557816c3998ad18c1ffca2d'
'SKIP'
'f9f0d0ccf166fe6cb684478b6f1e1ab1f2850431c06aa041738563eb1808a004e52cdec823c103c9e180f03ffc083e95974d291353f0220fe52ae6d4897fecc7'
- '75849eca72ca9d01c648d5ea4f6371f1b8737ca35b14be179e14c73cc51dca0739c333343cdc228a6d464135f4791bcdc21734e2debecd29d57023c8c088b028'
- '19b980db37675732d28978318074ca172ef862de7fdcae2c82ef16dc411c709c8598b044a828e7e260d86d23f644485abcc6a0aaf5e04b9c05dce22d0c7e3716'
- '0f5da6e48885713c7ddef9e5715e178e0a499bcb622d7f19e15b9e4b4647331d7bf14829218b6ab80f17bae90fd95b8df6a0a81203d8081686805ca5329531ff'
- 'd3c01f61a0a0cc2f01e66e0126ad8b6386d4a53c1dc1b3b134800e4cd25507e458bac860cbed10cf4b46b04e8d50aba233870587b89c058fffd57436b48289bf'
+ '2f40198eff47664c831c56e8a63f60a4d1b815cf697e6bdb0be39e6d9c5df043857f6264b7cd2ccf46c07626186c565144e80f4214b5f7936ef7024c47201437'
+ 'c3f3baf8a5f480ce64b321c031e31c0d5819732ca34647ac545d0fd7fafa40ad4dcf1e1ec8d574754e0a44bf0cdc462ed8709c8d9b58a17e01c6ba5b4c5e91c6'
+ 'a2062f8a5259aabed1aa20df6a8510f0f3e914cb6bba72751249b3295285596bb7615063a7a7b7870f9f4489d0e6b774f0bced2bdde49a1aa9df6a44976462d1'
+ '572901a1e9cacfacfc8c4cc3cd077a626d4aeda8c8a58f6085bae827cba8a2d4d99af1dafbb5a9296b6ebf3120e2b05a084fe1c96093074befe62597319384a1'
'7d949d1f45e68b8ec71ca0192569eeb6fc98b540e9696fea437894db02d98a78724ae4021f244137dd2ed2c8c167e96016f20306b4cf83c2defc8acd10170a1e')
sha512sums_armv7h=('75cd21bccc84a6b6b0de39c6d209c8bee0e5143b486433184ca078e8bc6797d30746be3ce5f7a89eea9bc3c7e2d68880412511fd6b9946252c7c7638523c6caa')
validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D' # Emil Velikov <emil.l.velikov@gmail.com>
@@ -42,16 +42,17 @@ prepare() {
# glvnd support patches - from Fedora
# non-upstreamed ones
- patch -Np1 -i ../0001-glvnd-fix-gl-dot-pc.patch
+ patch -Np1 -i ../0001-glvnd-fix-gl.pc.patch
+
+ # Upstreamed meson fixes
+ 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 ../0002-loader_dri3-Wait-for-pending-swaps-to-complete-before-drawable_fini.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 ../0004-loader_dri3-Variant-2-Wait-for-pending-swaps-to-comp.patch
}
build() {
@@ -70,7 +71,7 @@ build() {
GALLIUM=freedreno,nouveau,swrast,virgl,etnaviv,imx,vc4
VULKAN=
SWR_ARCHES=
- OPENCL=
+ OPENCL=disabled
GALLIUM_XA=false
LIBUNWIND=false
;;