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:
parent
ce09364d4e
commit
69ed3244d4
|
@ -297,14 +297,15 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *shProg)
|
||||||
nir_lower_indirect_derefs(consumer, indirect_mask);
|
nir_lower_indirect_derefs(consumer, indirect_mask);
|
||||||
|
|
||||||
const bool p_is_scalar = compiler->scalar_stage[producer->stage];
|
const bool p_is_scalar = compiler->scalar_stage[producer->stage];
|
||||||
shProg->_LinkedShaders[i]->Program->nir =
|
producer = brw_nir_optimize(producer, compiler, p_is_scalar);
|
||||||
brw_nir_optimize(producer, compiler, p_is_scalar);
|
|
||||||
|
|
||||||
const bool c_is_scalar = compiler->scalar_stage[producer->stage];
|
const bool c_is_scalar = compiler->scalar_stage[producer->stage];
|
||||||
shProg->_LinkedShaders[next]->Program->nir =
|
consumer = brw_nir_optimize(consumer, compiler, c_is_scalar);
|
||||||
brw_nir_optimize(consumer, compiler, c_is_scalar);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shProg->_LinkedShaders[i]->Program->nir = producer;
|
||||||
|
shProg->_LinkedShaders[next]->Program->nir = consumer;
|
||||||
|
|
||||||
next = i;
|
next = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue