From a4fa63a103fd8c5b936389d0ee52046f3d1b2dfe Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Wed, 8 Jun 2022 00:39:23 -0700 Subject: [PATCH] microsoft/spirv_to_dxil: vectorize IOs DXIL doesn't like when 2 different variables occupy the same slot, so let's vectorize IOs to avoid that. Reviewed-by: Jesse Natalie Part-of: --- src/microsoft/spirv_to_dxil/dxil_spirv_nir.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/microsoft/spirv_to_dxil/dxil_spirv_nir.c b/src/microsoft/spirv_to_dxil/dxil_spirv_nir.c index 80add533768..072719551e9 100644 --- a/src/microsoft/spirv_to_dxil/dxil_spirv_nir.c +++ b/src/microsoft/spirv_to_dxil/dxil_spirv_nir.c @@ -668,6 +668,12 @@ dxil_spirv_nir_passes(nir_shader *nir, { glsl_type_singleton_init_or_ref(); + NIR_PASS_V(nir, nir_lower_io_to_vector, + nir_var_shader_out | + (nir->info.stage != MESA_SHADER_VERTEX ? nir_var_shader_in : 0)); + NIR_PASS_V(nir, nir_opt_combine_stores, nir_var_shader_out); + NIR_PASS_V(nir, nir_remove_dead_derefs); + const struct nir_lower_sysvals_to_varyings_options sysvals_to_varyings = { .frag_coord = true, .point_coord = true,