From 09678079c3ea423efb2445947beff8497aa11fcf Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 25 May 2023 15:37:45 -0400 Subject: [PATCH] zink: don't remove psiz from linked shaders if the consumer reads it it's valid for psiz to be piped through successive stages, so don't delete it unnecessarily cc: mesa-stable Part-of: --- src/gallium/drivers/zink/zink_compiler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 806b40c3aaf..32fee0bfa56 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -2684,7 +2684,7 @@ zink_compiler_assign_io(struct zink_screen *screen, nir_shader *producer, nir_sh if (consumer->info.stage != MESA_SHADER_FRAGMENT) { /* 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) { + if (var && !var->data.explicit_location && !nir_find_variable_with_location(consumer, nir_var_shader_in, VARYING_SLOT_PSIZ)) { var->data.mode = nir_var_shader_temp; nir_fixup_deref_modes(producer); NIR_PASS_V(producer, nir_remove_dead_variables, nir_var_shader_temp, NULL);