turnip: Do gathering xfb info after nir_remove_dead_variables
So we could align stream outputs correctly even if unused in/outs are removed. Fixes: dEQP-VK.transform_feedback.fuzz.random_vertex.scalar_types.* dEQP-VK.transform_feedback.fuzz.random_vertex.vector_types.* Signed-off-by: Hyunjun Ko <zzoon@igalia.com> Reviewed-by: Jonathan Marek <jonathan@marek.ca> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4207> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4207>
This commit is contained in:
@@ -481,17 +481,19 @@ tu_shader_create(struct tu_device *dev,
|
||||
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_var_mem_shared);
|
||||
|
||||
/* Gather information for transform feedback.
|
||||
* This should be called after nir_split_per_member_structs.
|
||||
* Also needs to be called after nir_remove_dead_variables with varyings,
|
||||
* so that we could align stream outputs correctly.
|
||||
*/
|
||||
if (nir->info.stage == MESA_SHADER_VERTEX ||
|
||||
nir->info.stage == MESA_SHADER_TESS_EVAL ||
|
||||
nir->info.stage == MESA_SHADER_GEOMETRY)
|
||||
tu_gather_xfb_info(nir, shader);
|
||||
|
||||
NIR_PASS_V(nir, nir_remove_dead_variables,
|
||||
nir_var_shader_in | nir_var_shader_out | nir_var_system_value | nir_var_mem_shared);
|
||||
|
||||
NIR_PASS_V(nir, nir_propagate_invariant);
|
||||
|
||||
NIR_PASS_V(nir, nir_lower_io_to_temporaries, nir_shader_get_entrypoint(nir), true, true);
|
||||
|
||||
Reference in New Issue
Block a user