[Mesa-dev] [PATCH 01/10] gallivm: supply correct opcode info to emit functions

Roland Scheidegger sroland at vmware.com
Sat Oct 10 19:22:51 PDT 2015


Am 11.10.2015 um 03:29 schrieb Marek Olšák:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> This is useful only when emit functions use it.
> The new radeonsi min/max opcode implementation requires this.
> ---
>  src/gallium/auxiliary/gallivm/lp_bld_tgsi.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c
> index c4ae304..c50d83e 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c
> @@ -114,12 +114,17 @@ lp_build_emit_llvm(
>     struct lp_build_emit_data * emit_data)
>  {
>     struct lp_build_tgsi_action * action = &bld_base->op_actions[tgsi_opcode];
> +   const struct tgsi_opcode_info *old_info = emit_data->info;
>     /* XXX: Assert that this is a componentwise or replicate instruction */
>  
>     lp_build_action_set_dst_type(emit_data, bld_base, tgsi_opcode);
>     emit_data->chan = 0;
> +
> +   /* Set and restore the opcode info. */
> +   emit_data->info = tgsi_get_opcode_info(tgsi_opcode);
>     assert(action->emit);
>     action->emit(action, bld_base, emit_data);
> +   emit_data->info = old_info;
>     return emit_data->output[0];
>  }
>  
> 

Could you elaborate why this is necessary? Looks like a hack and I can't
see why opcode info would be wrong in the first place. Or if that's
never set correctly and you just need it to be able to distinguish
min/max later, I'd suggest you shouldn't do that and just use different
functions.

Roland



More information about the mesa-dev mailing list