Skip to content

Commit

Permalink
mesa: update to 21.3.5.
Browse files Browse the repository at this point in the history
By ericonr: add patch to fix flickering with many qt applications.

Closes: void-linux#35345 [via git-merge-pr]
  • Loading branch information
SabrinaJewson authored and ElDifinitivo committed Feb 14, 2022
1 parent 3977b26 commit ad540f2
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
From cd51e701177cf01c5590f59071ac1256b396d1b0 Mon Sep 17 00:00:00 2001
From: Paulo Zanoni <paulo.r.zanoni@intel.com>
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 <hi-angel@yandex.ru>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14783>
---
.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

12 changes: 0 additions & 12 deletions srcpkgs/mesa/patches/musl.patch
Original file line number Diff line number Diff line change
Expand Up @@ -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 <unistd.h>
#include <sys/types.h>
+#include <sys/syscall.h>
+
+#define gettid() ((pid_t)syscall(SYS_gettid))

#define DBG(fmt, ...) \
do { \
6 changes: 3 additions & 3 deletions srcpkgs/mesa/template
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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"
Expand Down

0 comments on commit ad540f2

Please sign in to comment.