Am 24.09.2013 02:37, schrieb [email protected]:
> From: Marek Olšák <[email protected]>
> 
> ---
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 271cf05..0d1506d 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -1944,6 +1944,13 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
>        /* note: we have to reorder the three args here */
>        emit(ir, TGSI_OPCODE_LRP, result_dst, op[2], op[1], op[0]);
>        break;
> +   case ir_triop_csel:
> +      if (this->ctx->Const.NativeIntegers)
> +         emit(ir, TGSI_OPCODE_UCMP, result_dst, op[0], op[1], op[2]);
> +      else
> +         /* CMP doesn't work here */
> +         emit(ir, TGSI_OPCODE_LRP, result_dst, op[0], op[1], op[2]);
> +      break;
>     case ir_unop_pack_snorm_2x16:
>     case ir_unop_pack_unorm_2x16:
>     case ir_unop_pack_half_2x16:
> @@ -1970,7 +1977,6 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
>     case ir_binop_vector_extract:
>     case ir_triop_vector_insert:
>     case ir_binop_ldexp:
> -   case ir_triop_csel:
>        /* This operation is not supported, or should have already been 
> handled.
>         */
>        assert(!"Invalid ir opcode in glsl_to_tgsi_visitor::visit()");
> 

Looks ok though wouldn't it be better to use CMP with negate modifier or
CND instead of LRP? Not that I really care since it only affects
non-native integer drivers anyway.

Roland
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to