mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
radv: remove dead variables after splitting per member structs
Otherwise, nir_lower_clip_cull_distance_arrays might report wrong number of output clips/culls because it relies on shader output variables and some of them might be dead. This fixes a rendering issue with Dolphin and Super Mario Sunshine. Fixes:b0c643d8f5("spirv: Use NIR per-member splitting") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107610 CC: 18.2 <mesa-stable@lists.freedesktop.org> Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> (cherry picked from commit24ee53231d)
This commit is contained in:
parent
f8f46864f3
commit
7611e59a8c
1 changed files with 3 additions and 3 deletions
|
|
@ -259,9 +259,6 @@ radv_shader_compile_to_nir(struct radv_device *device,
|
|||
*/
|
||||
NIR_PASS_V(nir, nir_lower_constant_initializers, nir_var_shader_out);
|
||||
|
||||
NIR_PASS_V(nir, nir_remove_dead_variables,
|
||||
nir_var_shader_in | nir_var_shader_out | nir_var_system_value);
|
||||
|
||||
/* Now that we've deleted all but the main function, we can go ahead and
|
||||
* lower the rest of the constant initializers.
|
||||
*/
|
||||
|
|
@ -273,6 +270,9 @@ radv_shader_compile_to_nir(struct radv_device *device,
|
|||
NIR_PASS_V(nir, nir_split_var_copies);
|
||||
NIR_PASS_V(nir, nir_split_per_member_structs);
|
||||
|
||||
NIR_PASS_V(nir, nir_remove_dead_variables,
|
||||
nir_var_shader_in | nir_var_shader_out | nir_var_system_value);
|
||||
|
||||
NIR_PASS_V(nir, nir_lower_system_values);
|
||||
NIR_PASS_V(nir, nir_lower_clip_cull_distance_arrays);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue