Mesa (master): anv/pipeline: Call nir_lower_constant_initializers

Jason Ekstrand jekstrand at kemper.freedesktop.org
Tue Dec 6 00:37:40 UTC 2016


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

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Fri Jul 15 16:55:14 2016 -0700

anv/pipeline: Call nir_lower_constant_initializers

Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>

---

 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 9b65e35..9104267 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -136,6 +136,13 @@ anv_shader_compile_to_nir(struct anv_device *device,
       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_lower_returns(nir);
    nir_validate_shader(nir);
 
@@ -155,6 +162,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);
 




More information about the mesa-commit mailing list