From 39dcd9dedb0c2ba0ea7812bbbaf458ad982f6456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Thu, 19 Dec 2024 11:45:02 +0100 Subject: [PATCH] ac/lower_ngg: Fix collecting buffer offsets from 4 lanes on gfx12 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also use readlane for improved performance. Reviewed-by: Marek Olšák Part-of: --- src/amd/common/ac_nir_lower_ngg.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/amd/common/ac_nir_lower_ngg.c b/src/amd/common/ac_nir_lower_ngg.c index d6ca39cddad..84b07ad8b77 100644 --- a/src/amd/common/ac_nir_lower_ngg.c +++ b/src/amd/common/ac_nir_lower_ngg.c @@ -2144,14 +2144,9 @@ ngg_build_streamout_buffer_info(nir_builder *b, nir_def *offset[4] = {undef, undef, undef, undef}; for (unsigned buffer = 0; buffer < 4; buffer++) { - if (info->buffers_written & BITFIELD_BIT(buffer)) { - if (!buffer) { - offset[buffer] = buffer_offset_per_lane; - } else { - offset[buffer] = nir_quad_swizzle_amd(b, buffer_offset_per_lane, - .swizzle_mask = BITFIELD_BIT(buffer)); - } - } + if (info->buffers_written & BITFIELD_BIT(buffer)) + offset[buffer] = nir_read_invocation(b, buffer_offset_per_lane, + nir_imm_int(b, buffer)); } buffer_offsets = nir_vec(b, offset, 4); }