diff --git a/srcpkgs/mesa/patches/0001-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch b/srcpkgs/mesa/patches/0001-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch index ea1080a0d2e..125e36f5e2f 100644 --- a/srcpkgs/mesa/patches/0001-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch +++ b/srcpkgs/mesa/patches/0001-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch @@ -22,7 +22,7 @@ diff --git a/src/gallium/drivers/radeonsi/si_buffer.c b/src/gallium/drivers/rade index 6b58aebee2d..c9e983367a0 100644 --- a/src/gallium/drivers/radeonsi/si_buffer.c +++ b/src/gallium/drivers/radeonsi/si_buffer.c -@@ -151,6 +151,11 @@ void si_init_resource_fields(struct si_screen *sscreen, struct si_resource *res, +@@ -100,6 +100,11 @@ void si_init_resource_fields(struct si_screen *sscreen, struct si_resource *res, */ if (!sscreen->info.kernel_flushes_hdp_before_ib || !sscreen->info.is_amdgpu) res->domains = RADEON_DOMAIN_GTT; diff --git a/srcpkgs/mesa/patches/cd51e701177cf01c5590f59071ac1256b396d1b0.patch b/srcpkgs/mesa/patches/cd51e701177cf01c5590f59071ac1256b396d1b0.patch new file mode 100644 index 00000000000..04bf61237f4 --- /dev/null +++ b/srcpkgs/mesa/patches/cd51e701177cf01c5590f59071ac1256b396d1b0.patch @@ -0,0 +1,74 @@ +From cd51e701177cf01c5590f59071ac1256b396d1b0 Mon Sep 17 00:00:00 2001 +From: Paulo Zanoni +Date: Mon, 10 Jan 2022 17:18:05 -0800 +Subject: [PATCH] iris: implement inter-context busy-tracking + +Previously, no buffers were ever marked as EXEC_OBJECT_ASYNC so the +Kernel would ensure dependency tracking for us. After we implemented +explicit busy tracking in commit 89a34cb8450a, only the external +objects kept relying on the Kernel's implicit tracking and Iris did +inter-batch busy tracking, meaning we lost inter-screen and +inter-context synchronization. This seemed fine to me since, as far as +I understood, it is the duty of the application to synchronize itself +against multiple screens and contexts. + +The problem here is that applications were actually relying on the old +behavior where the Kernel guarantees synchronization, so 89a34cb8450a +can be seen as a regression. This commit addresses the inter-context +synchronization case. + +Cc: mesa-stable +Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5731 +Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5812 +Fixes: 89a34cb8450a ("iris: switch to explicit busy tracking") +Tested-by: Konstantin Kharlamov +Reviewed-by: Kenneth Graunke +Signed-off-by: Paulo Zanoni +Part-of: +--- + .pick_status.json | 2 +- + src/gallium/drivers/iris/iris_batch.c | 8 ++++++++ + 2 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/.pick_status.json b/.pick_status.json +index d325da5ae33..e831bd32b72 100644 +--- a/.pick_status.json ++++ b/.pick_status.json +@@ -742,7 +742,7 @@ + "description": "iris: implement inter-context busy-tracking", + "nominated": true, + "nomination_type": 1, +- "resolution": 0, ++ "resolution": 1, + "main_sha": null, + "because_sha": "89a34cb8450a6fdaceb0e537613871fa86d93132" + }, +diff --git a/src/gallium/drivers/iris/iris_batch.c b/src/gallium/drivers/iris/iris_batch.c +index ef0fa147d38..90103449bf1 100644 +--- a/src/gallium/drivers/iris/iris_batch.c ++++ b/src/gallium/drivers/iris/iris_batch.c +@@ -717,6 +717,12 @@ update_bo_syncobjs(struct iris_batch *batch, struct iris_bo *bo, bool write) + move_syncobj_to_batch(batch, &deps->write_syncobjs[other_batch_idx], + I915_EXEC_FENCE_WAIT); + ++ /* If it's being written by our screen, wait on it too. This is relevant ++ * when there are multiple contexts on the same screen. */ ++ if (deps->write_syncobjs[batch_idx]) ++ move_syncobj_to_batch(batch, &deps->write_syncobjs[batch_idx], ++ I915_EXEC_FENCE_WAIT); ++ + struct iris_syncobj *batch_syncobj = iris_batch_get_signal_syncobj(batch); + + if (write) { +@@ -729,6 +735,8 @@ update_bo_syncobjs(struct iris_batch *batch, struct iris_bo *bo, bool write) + + move_syncobj_to_batch(batch, &deps->read_syncobjs[other_batch_idx], + I915_EXEC_FENCE_WAIT); ++ move_syncobj_to_batch(batch, &deps->read_syncobjs[batch_idx], ++ I915_EXEC_FENCE_WAIT); + + } else { + /* If we're reading, replace the other read from our batch index. */ +-- +GitLab + diff --git a/srcpkgs/mesa/patches/musl.patch b/srcpkgs/mesa/patches/musl.patch index 61a8f016daf..d50221dee72 100644 --- a/srcpkgs/mesa/patches/musl.patch +++ b/srcpkgs/mesa/patches/musl.patch @@ -38,15 +38,3 @@ #endif if (dbg_flags & flag) { ---- a/src/gallium/drivers/freedreno/freedreno_util.h -+++ b/src/gallium/drivers/freedreno/freedreno_util.h -@@ -106,6 +106,9 @@ extern bool fd_binning_enabled; - - #include - #include -+#include -+ -+#define gettid() ((pid_t)syscall(SYS_gettid)) - - #define DBG(fmt, ...) \ - do { \ diff --git a/srcpkgs/mesa/template b/srcpkgs/mesa/template index 82ac453fabf..eb81cbb345a 100644 --- a/srcpkgs/mesa/template +++ b/srcpkgs/mesa/template @@ -1,7 +1,7 @@ # Template file for 'mesa' pkgname=mesa -version=21.3.3 -revision=2 +version=21.3.5 +revision=1 build_style=meson configure_args="-Dglvnd=true -Dshared-glapi=enabled -Dgbm=enabled -Degl=enabled -Dosmesa=true -Dgles1=enabled -Dgles2=enabled -Dglx=dri -Ddri3=enabled @@ -22,7 +22,7 @@ license="MIT, LGPL-2.1-or-later" homepage="https://www.mesa3d.org/" changelog="https://docs.mesa3d.org/relnotes/${version}.html" distfiles="https://mesa.freedesktop.org/archive/mesa-${version}.tar.xz" -checksum=ad7f4613ea7c5d08d9fcb5025270199e6ceb9aa99fd72ee572b70342240a8121 +checksum=d93b2a9d2464ee856d7637a07dff6b7cd950f295ad58518bb959f76882cf4a4c if [ "$XBPS_TARGET_LIBC" = "musl" ]; then configure_args+=" -Duse-elf-tls=false"