From 88cd974aae8790fcc03ea20ef2ab346858bf8b0b Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Fri, 7 Feb 2025 14:18:16 +0800 Subject: [PATCH] radeonsi: fix GravityMark corruption when use aco MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit aco may use smem load for ssbo when possible. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12518 Cc: mesa-stable Tested-by: Mike Lothian Reviewed-by: Marek Olšák Part-of: (cherry picked from commit ee9edd46254884ab7fe6c96518e23d421d5f5344) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/si_barrier.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 76f925e4f72..4a810f107b2 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4,7 +4,7 @@ "description": "radeonsi: fix GravityMark corruption when use aco", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/radeonsi/si_barrier.c b/src/gallium/drivers/radeonsi/si_barrier.c index 4951fd84b83..555d0dcd3ac 100644 --- a/src/gallium/drivers/radeonsi/si_barrier.c +++ b/src/gallium/drivers/radeonsi/si_barrier.c @@ -677,6 +677,11 @@ static void si_memory_barrier(struct pipe_context *ctx, unsigned flags) PIPE_BARRIER_IMAGE | PIPE_BARRIER_STREAMOUT_BUFFER | PIPE_BARRIER_GLOBAL_BUFFER)) sctx->barrier_flags |= SI_BARRIER_INV_VMEM; + /* Unlike LLVM, ACO may use SMEM for SSBOs and global access. */ + if (sctx->screen->use_aco && + (flags & (PIPE_BARRIER_SHADER_BUFFER | PIPE_BARRIER_GLOBAL_BUFFER))) + sctx->barrier_flags |= SI_BARRIER_INV_SMEM; + if (flags & (PIPE_BARRIER_INDEX_BUFFER | PIPE_BARRIER_INDIRECT_BUFFER)) sctx->barrier_flags |= SI_BARRIER_PFP_SYNC_ME;