ir_print_visitor: Add support for ir_texture.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 26 May 2010 22:15:31 +0000 (15:15 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 9 Jun 2010 18:14:57 +0000 (11:14 -0700)
ir_print_visitor.cpp
ir_print_visitor.h

index 84edad5dfac4f97c56f2abea492f547f596a4021..18ff48c3b345a3e79a769bbb9db89322b2cb59e0 100644 (file)
@@ -143,6 +143,55 @@ void ir_print_visitor::visit(ir_expression *ir)
 }
 
 
+void ir_print_visitor::visit(ir_texture *ir)
+{
+   printf("(%s ", ir->opcode_string());
+
+   ir->sampler->accept(this);
+   printf(" ");
+
+   ir->coordinate->accept(this);
+
+   printf(" (%d %d %d) ", ir->offsets[0], ir->offsets[1], ir->offsets[2]);
+
+   if (ir->op != ir_txf) {
+      if (ir->projector)
+        ir->projector->accept(this);
+      else
+        printf("1");
+
+      if (ir->shadow_comparitor) {
+        printf(" ");
+        ir->shadow_comparitor->accept(this);
+      } else {
+        printf(" ()");
+      }
+   }
+
+   printf(" ");
+   switch (ir->op)
+   {
+   case ir_tex:
+      break;
+   case ir_txb:
+      ir->lod_info.bias->accept(this);
+      break;
+   case ir_txl:
+   case ir_txf:
+      ir->lod_info.lod->accept(this);
+      break;
+   case ir_txd:
+      printf("(");
+      ir->lod_info.grad.dPdx->accept(this);
+      printf(" ");
+      ir->lod_info.grad.dPdy->accept(this);
+      printf(")");
+      break;
+   };
+   printf(")");
+}
+
+
 void ir_print_visitor::visit(ir_swizzle *ir)
 {
    const unsigned swiz[4] = {
index 4af508794bd933131c494f5f46c0795dbcad3dd9..e97b823522a3ceedf647b4f45d67de07737c7e7c 100644 (file)
@@ -60,6 +60,7 @@ public:
    virtual void visit(ir_function_signature *);
    virtual void visit(ir_function *);
    virtual void visit(ir_expression *);
+   virtual void visit(ir_texture *);
    virtual void visit(ir_swizzle *);
    virtual void visit(ir_dereference_variable *);
    virtual void visit(ir_dereference_array *);