From 23df2bf41b44a6cef73d83cda1912251fbb9cc56 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 10 Aug 2023 09:53:01 -0400 Subject: [PATCH] zink: slightly refactor psiz deletion during linking no functional changes Part-of: --- src/gallium/drivers/zink/zink_compiler.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index bdbb25b9a09..72943f68789 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -2745,10 +2745,13 @@ zink_compiler_assign_io(struct zink_screen *screen, nir_shader *producer, nir_sh memset(slot_map, -1, sizeof(slot_map)); bool do_fixup = false; nir_shader *nir = producer->info.stage == MESA_SHADER_TESS_CTRL ? producer : consumer; - if (consumer->info.stage != MESA_SHADER_FRAGMENT) { + nir_variable *var = nir_find_variable_with_location(producer, nir_var_shader_out, VARYING_SLOT_PSIZ); + if (var) { + bool can_remove = false; + if (consumer->info.stage != MESA_SHADER_FRAGMENT) + can_remove = !var->data.explicit_location && !nir_find_variable_with_location(consumer, nir_var_shader_in, VARYING_SLOT_PSIZ); /* remove injected pointsize from all but the last vertex stage */ - nir_variable *var = nir_find_variable_with_location(producer, nir_var_shader_out, VARYING_SLOT_PSIZ); - if (var && !var->data.explicit_location && !nir_find_variable_with_location(consumer, nir_var_shader_in, VARYING_SLOT_PSIZ)) { + if (can_remove) { var->data.mode = nir_var_shader_temp; nir_fixup_deref_modes(producer); delete_psiz_store(producer);