[Mesa-dev] [PATCH 2/8] anv/pipeline: Call nir_lower_constant_initializers

Jason Ekstrand jason at jlekstrand.net
Wed Jul 20 22:28:23 UTC 2016


Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
---
 src/intel/vulkan/anv_pipeline.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index 3723423..df57182 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -149,6 +149,13 @@ anv_shader_compile_to_nir(struct anv_device *device,
       nir_lower_returns(nir);
       nir_validate_shader(nir);
 
+      /* We have to lower away local constant initializers right before we
+       * inline functions.  That way they get properly initialized at the top
+       * of the function and not at the top of its caller.
+       */
+      nir_lower_constant_initializers(nir, nir_var_local);
+      nir_validate_shader(nir);
+
       nir_inline_functions(nir);
       nir_validate_shader(nir);
 
@@ -165,6 +172,12 @@ anv_shader_compile_to_nir(struct anv_device *device,
       nir_remove_dead_variables(nir, nir_var_system_value);
       nir_validate_shader(nir);
 
+      /* Now that we've deleted all but the main function, we can go ahead and
+       * lower the rest of the constant initializers.
+       */
+      nir_lower_constant_initializers(nir, ~0);
+      nir_validate_shader(nir);
+
       nir_propagate_invariant(nir);
       nir_validate_shader(nir);
 
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list