mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-21 20:40:36 +02:00
radv: Remove dead shader temps after linking.
Prevent nir_lower_scratch accidentally turning these dead variables into scratch. This can especially happen to arrayed outputs of eg. tess control or mesh shaders, which become large shader temps. Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18566>
This commit is contained in:
parent
3e6ad428b6
commit
bb4bdba17e
1 changed files with 8 additions and 0 deletions
|
|
@ -2399,6 +2399,14 @@ radv_pipeline_link_shaders(const struct radv_device *device,
|
|||
progress = nir_remove_unused_varyings(producer, consumer);
|
||||
|
||||
nir_compact_varyings(producer, consumer, true);
|
||||
|
||||
/* nir_compact_varyings changes deleted varyings into shader_temp.
|
||||
* We need to remove these otherwise we risk them being lowered to scratch.
|
||||
* This can especially happen to arrayed outputs.
|
||||
*/
|
||||
NIR_PASS(_, producer, nir_remove_dead_variables, nir_var_shader_temp, NULL);
|
||||
NIR_PASS(_, consumer, nir_remove_dead_variables, nir_var_shader_temp, NULL);
|
||||
|
||||
nir_validate_shader(producer, "after nir_compact_varyings");
|
||||
nir_validate_shader(consumer, "after nir_compact_varyings");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue