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

Author: Jason Ekstrand <jason.ekstr...@intel.com>
Date:   Thu Sep 28 09:55:15 2017 -0700

i965/link: Make better use of temporary variables

The way NIR_PASS works (and, by extension, nir_optimize) is that they
may clone the shader and throw the old one away.  (We use this for
testing nir_clone.)  It's better if we just make a temporary variable,
use it for everything, and re-assign to the gl_program at the end.

[jordan.l.jus...@intel.com: Tested NIR_TEST_CLONE=1 with valgrind]
Tested-by: Jordan Justen <jordan.l.jus...@intel.com>
Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>

---

 src/mesa/drivers/dri/i965/brw_link.cpp | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp 
b/src/mesa/drivers/dri/i965/brw_link.cpp
index 9ddf023018..80868569ed 100644
--- a/src/mesa/drivers/dri/i965/brw_link.cpp
+++ b/src/mesa/drivers/dri/i965/brw_link.cpp
@@ -297,14 +297,15 @@ brw_link_shader(struct gl_context *ctx, struct 
gl_shader_program *shProg)
                nir_lower_indirect_derefs(consumer, indirect_mask);
 
                const bool p_is_scalar = 
compiler->scalar_stage[producer->stage];
-               shProg->_LinkedShaders[i]->Program->nir =
-                 brw_nir_optimize(producer, compiler, p_is_scalar);
+               producer = brw_nir_optimize(producer, compiler, p_is_scalar);
 
                const bool c_is_scalar = 
compiler->scalar_stage[producer->stage];
-               shProg->_LinkedShaders[next]->Program->nir =
-                 brw_nir_optimize(consumer, compiler, c_is_scalar);
+               consumer = brw_nir_optimize(consumer, compiler, c_is_scalar);
             }
 
+            shProg->_LinkedShaders[i]->Program->nir = producer;
+            shProg->_LinkedShaders[next]->Program->nir = consumer;
+
             next = i;
        }
     }

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to