From ee9edd46254884ab7fe6c96518e23d421d5f5344 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: --- src/gallium/drivers/radeonsi/si_barrier.c | 5 +++++ 1 file changed, 5 insertions(+) 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;