[Mesa-dev] [PATCH 1/3] st/mesa: fix GLSL mix(.., .., bvecN)

maraeo at gmail.com maraeo at gmail.com
Mon Sep 23 17:37:45 PDT 2013


From: Marek Olšák <marek.olsak at amd.com>

---
 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()");
-- 
1.8.1.2



More information about the mesa-dev mailing list