From: Jason Ekstrand <ja...@jlekstrand.net> While we're here, we also fix up a couple of potential ralloc-parenting bugs. In particular, we were calling nir_src_copy with the shader as the mem context instead of the instruction.
v2 (Ken): Rebase. Reviewed-by: Eduardo Lima Mitev <el...@igalia.com> [v1] --- src/glsl/nir/nir_lower_vec_to_movs.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/glsl/nir/nir_lower_vec_to_movs.c b/src/glsl/nir/nir_lower_vec_to_movs.c index 2cb0457..f5d30be 100644 --- a/src/glsl/nir/nir_lower_vec_to_movs.c +++ b/src/glsl/nir/nir_lower_vec_to_movs.c @@ -32,6 +32,10 @@ * moves with partial writes. */ +struct vec_to_movs_state { + nir_function_impl *impl; +}; + static bool src_matches_dest_reg(nir_dest *dest, nir_src *src) { @@ -185,9 +189,10 @@ try_coalesce(nir_alu_instr *vec, unsigned start_idx, nir_shader *shader) } static bool -lower_vec_to_movs_block(nir_block *block, void *void_impl) +lower_vec_to_movs_block(nir_block *block, void *void_state) { - nir_function_impl *impl = void_impl; + struct vec_to_movs_state *state = void_state; + nir_function_impl *impl = state->impl; nir_shader *shader = impl->overload->function->shader; nir_foreach_instr_safe(block, instr) { @@ -254,7 +259,9 @@ lower_vec_to_movs_block(nir_block *block, void *void_impl) static void nir_lower_vec_to_movs_impl(nir_function_impl *impl) { - nir_foreach_block(impl, lower_vec_to_movs_block, impl); + struct vec_to_movs_state state = { impl }; + + nir_foreach_block(impl, lower_vec_to_movs_block, &state); } void -- 2.5.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev