st/glsl_to_nir: call nir_lower_load_const_to_scalar() in the st
authorTimothy Arceri <tarceri@itsqueeze.com>
Tue, 11 Dec 2018 04:06:37 +0000 (15:06 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Wed, 2 Jan 2019 01:19:17 +0000 (12:19 +1100)
This will help the new opt introduced in the following patches
allowing us to remove extra duplicate varyings.

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/gallium/drivers/radeonsi/si_shader_nir.c
src/mesa/state_tracker/st_glsl_to_nir.cpp

index 37fa81f3f40da7741bd9633d9be351b052cb2f39..4c6eb8ec8089c1d6dc503b3138deaabf17bb0b68 100644 (file)
@@ -816,8 +816,6 @@ si_lower_nir(struct si_shader_selector* sel)
 
        ac_lower_indirect_derefs(sel->nir, sel->screen->info.chip_class);
 
-       NIR_PASS_V(sel->nir, nir_lower_load_const_to_scalar);
-
        bool progress;
        do {
                progress = false;
index 14927c8a4a9feb2c3b5bb72c9dbb66d8b5ac0582..dce96ab58b6dd752331839e3cd10a9655d5d30f7 100644 (file)
@@ -702,8 +702,10 @@ st_link_nir(struct gl_context *ctx,
 
       nir_shader *nir = shader->Program->nir;
 
-      if (is_scalar[i])
+      if (is_scalar[i]) {
          NIR_PASS_V(nir, nir_lower_io_to_scalar_early, mask);
+         NIR_PASS_V(nir, nir_lower_load_const_to_scalar);
+      }
 
       st_nir_opts(nir, is_scalar[i]);
    }