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.justen@intel.com: Tested NIR_TEST_CLONE=1 with valgrind]
Tested-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Jason Ekstrand 2017-09-28 09:55:15 -07:00 committed by Jordan Justen
parent ce09364d4e
commit 69ed3244d4
1 changed files with 5 additions and 4 deletions

View File

@ -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;
}
}