From 4d6c00944b7a0ecc9ec0a76800077314807e8c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Fri, 13 Dec 2024 07:05:20 +0100 Subject: [PATCH] ac/nir: Only export positions when they are really system values. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In AMD terminology, a system value is implemented by position export instructions. Make sure to only emit those when they are needed. Signed-off-by: Timur Kristóf Acked-by: Marek Olšák Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/common/ac_nir.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/amd/common/ac_nir.c b/src/amd/common/ac_nir.c index 4fc36fc8819..ccf3ac4ef9e 100644 --- a/src/amd/common/ac_nir.c +++ b/src/amd/common/ac_nir.c @@ -400,15 +400,15 @@ ac_nir_export_position(nir_builder *b, VARYING_BIT_PRIMITIVE_SHADING_RATE; /* clear output mask if no one written */ - if (!out->outputs[VARYING_SLOT_PSIZ][0]) + if (!out->outputs[VARYING_SLOT_PSIZ][0] || !out->infos[VARYING_SLOT_PSIZ].as_sysval_mask) outputs_written &= ~VARYING_BIT_PSIZ; - if (!out->outputs[VARYING_SLOT_EDGE][0]) + if (!out->outputs[VARYING_SLOT_EDGE][0] || !out->infos[VARYING_SLOT_EDGE].as_sysval_mask) outputs_written &= ~VARYING_BIT_EDGE; - if (!out->outputs[VARYING_SLOT_PRIMITIVE_SHADING_RATE][0]) + if (!out->outputs[VARYING_SLOT_PRIMITIVE_SHADING_RATE][0] || !out->infos[VARYING_SLOT_PRIMITIVE_SHADING_RATE].as_sysval_mask) outputs_written &= ~VARYING_BIT_PRIMITIVE_SHADING_RATE; - if (!out->outputs[VARYING_SLOT_LAYER][0]) + if (!out->outputs[VARYING_SLOT_LAYER][0] || !out->infos[VARYING_SLOT_LAYER].as_sysval_mask) outputs_written &= ~VARYING_BIT_LAYER; - if (!out->outputs[VARYING_SLOT_VIEWPORT][0]) + if (!out->outputs[VARYING_SLOT_VIEWPORT][0] || !out->infos[VARYING_SLOT_VIEWPORT].as_sysval_mask) outputs_written &= ~VARYING_BIT_VIEWPORT; if ((outputs_written & mask) || force_vrs) {