From de2cb4a7d3558dc6f18b18f5fbe52ceea8c64d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Sat, 14 Dec 2024 18:20:28 -0600 Subject: [PATCH] ac/nir: Only store params to attribute ring that are varying. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On GFX11+, varying outputs from the last pre-rasterization stage are implemented by storing the outputs to the so-called attribute ring. Make sure to only store them when necessary. Signed-off-by: Timur Kristóf Acked-by: Marek Olšák Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/common/ac_nir.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/amd/common/ac_nir.c b/src/amd/common/ac_nir.c index 9c8fbb508d0..d105437fbe6 100644 --- a/src/amd/common/ac_nir.c +++ b/src/amd/common/ac_nir.c @@ -631,6 +631,9 @@ ac_nir_store_parameters_to_attr_ring(nir_builder *b, if (offset > AC_EXP_PARAM_OFFSET_31) continue; + if (!out->infos[slot].as_varying_mask) + continue; + if (exported_params & BITFIELD_BIT(offset)) continue; @@ -653,6 +656,10 @@ ac_nir_store_parameters_to_attr_ring(nir_builder *b, if (offset > AC_EXP_PARAM_OFFSET_31) continue; + if (!out->infos_16bit_lo[i].as_varying_mask && + !out->infos_16bit_hi[i].as_varying_mask) + continue; + if (exported_params & BITFIELD_BIT(offset)) continue;