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