diff --git a/.pick_status.json b/.pick_status.json index ef9c284c2d3..a973a2387f8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2497,7 +2497,7 @@ "description": "zink: don't remove psiz from linked shaders if the consumer reads it", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 66ba5aa674c..69b8855d714 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -2707,7 +2707,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);