Mesa (main): microsoft/spirv_to_dxil: vectorize IOs

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 8 15:57:27 UTC 2022


Module: Mesa
Branch: main
Commit: a4fa63a103fd8c5b936389d0ee52046f3d1b2dfe
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a4fa63a103fd8c5b936389d0ee52046f3d1b2dfe

Author: Boris Brezillon <boris.brezillon at collabora.com>
Date:   Wed Jun  8 00:39:23 2022 -0700

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 <jenatali at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16221>

---

 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,



More information about the mesa-commit mailing list