From 39c214769b94da4fa349b140765e39262706d1bc Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Mon, 5 Dec 2022 19:11:42 +0000 Subject: [PATCH] aco: restore semantic_can_reorder for GS output stores MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rhys Perry Reviewed-by: Timur Kristóf Part-of: --- src/amd/compiler/aco_instruction_selection.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index cc01fce66ed..13ad32a2f61 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -7308,7 +7308,11 @@ visit_store_buffer(isel_context* ctx, nir_intrinsic_instr* intrin) unsigned elem_size_bytes = intrin->src[0].ssa->bit_size / 8u; nir_variable_mode mem_mode = nir_intrinsic_memory_modes(intrin); - memory_sync_info sync(aco_storage_mode_from_nir_mem_mode(mem_mode)); + /* GS outputs are only written once. */ + const bool written_once = + mem_mode == nir_var_shader_out && ctx->shader->info.stage == MESA_SHADER_GEOMETRY; + memory_sync_info sync(aco_storage_mode_from_nir_mem_mode(mem_mode), + written_once ? semantic_can_reorder : semantic_none); store_vmem_mubuf(ctx, store_src, descriptor, v_offset, s_offset, idx, const_offset, elem_size_bytes, write_mask, swizzled, sync, glc, slc);