From 58efa64c5c1aede8bf53bdbe01709587d1496f76 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 11 Aug 2023 21:57:50 -0400 Subject: [PATCH] asahi: Preserve atomic ops when rewriting image to bindless Bug fix on its own, and prevents regressions from using bindless more. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/asahi/agx_nir_lower_bindings.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gallium/drivers/asahi/agx_nir_lower_bindings.c b/src/gallium/drivers/asahi/agx_nir_lower_bindings.c index 3702353d921..cbed5a33789 100644 --- a/src/gallium/drivers/asahi/agx_nir_lower_bindings.c +++ b/src/gallium/drivers/asahi/agx_nir_lower_bindings.c @@ -82,8 +82,16 @@ lower(nir_builder *b, nir_instr *instr, void *data) } } + nir_atomic_op op = nir_atomic_op_iadd /* irrelevant */; + if (nir_intrinsic_has_atomic_op(intr)) + op = nir_intrinsic_atomic_op(intr); + /* Otherwise, lower to bindless */ intr->intrinsic = bindless_op; + + if (nir_intrinsic_has_atomic_op(intr)) + nir_intrinsic_set_atomic_op(intr, op); + *internal_bindless = true; index = nir_iadd_imm(b, nir_imul_imm(b, index, 2), offset);