ir_to_mesa: Start doing some int support.
authorEric Anholt <eric@anholt.net>
Thu, 6 May 2010 17:53:51 +0000 (10:53 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 24 Jun 2010 22:05:20 +0000 (15:05 -0700)
ir_to_mesa.cpp

index 35c24ca174ddf0616568ed43369c19a88a844632..e77a6e2ddd3606eaff0df9e58b3b121815a09116 100644 (file)
@@ -349,6 +349,10 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
    case ir_unop_sqrt:
       this->result = this->create_tree(MB_TERM_sqrt_vec4, ir, op[0], op[1]);
       break;
+   case ir_unop_i2f:
+      /* Mesa IR lacks types, ints are stored as floats. */
+      this->result = op[0];
+      break;
    default:
       break;
    }
@@ -543,7 +547,10 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
 
    tree = this->create_tree(MB_TERM_reference_vec4, ir, NULL, NULL);
 
-   assert(ir->type->base_type == GLSL_TYPE_FLOAT);
+   assert(ir->type->base_type == GLSL_TYPE_FLOAT ||
+         ir->type->base_type == GLSL_TYPE_UINT ||
+         ir->type->base_type == GLSL_TYPE_INT ||
+         ir->type->base_type == GLSL_TYPE_BOOL);
 
    /* FINISHME: This will end up being _mesa_add_unnamed_constant,
     * which handles sharing values and sharing channels of vec4