summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-06-22 10:45:15 -0700
committerIan Romanick <ian.d.romanick@intel.com>2010-06-22 18:18:30 -0700
commit216580dbd733aa2e64df4ca95e37a0eb102c6ede (patch)
tree3b13c4463f192ff5d48b26b56456b4e63f3086b8
parentac95f2f8c88d39aaa878f61172d9748af13e2c80 (diff)
Hook up texturing in the hierarchical visitor.
-rw-r--r--ir_hv_accept.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/ir_hv_accept.cpp b/ir_hv_accept.cpp
index 5432633..f936b35 100644
--- a/ir_hv_accept.cpp
+++ b/ir_hv_accept.cpp
@@ -159,6 +159,55 @@ done:
ir_visitor_status
ir_texture::accept(ir_hierarchical_visitor *v)
{
+ ir_visitor_status s = v->visit_enter(this);
+ if (s != visit_continue)
+ return (s == visit_continue_with_parent) ? visit_continue : s;
+
+ s = this->sampler->accept(v);
+ if (s != visit_continue)
+ return (s == visit_continue_with_parent) ? visit_continue : s;
+
+ s = this->coordinate->accept(v);
+ if (s != visit_continue)
+ return (s == visit_continue_with_parent) ? visit_continue : s;
+
+ if (this->projector) {
+ s = this->projector->accept(v);
+ if (s != visit_continue)
+ return (s == visit_continue_with_parent) ? visit_continue : s;
+ }
+
+ if (this->shadow_comparitor) {
+ s = this->shadow_comparitor->accept(v);
+ if (s != visit_continue)
+ return (s == visit_continue_with_parent) ? visit_continue : s;
+ }
+
+ switch (this->op) {
+ case ir_tex:
+ break;
+ case ir_txb:
+ s = this->lod_info.bias->accept(v);
+ if (s != visit_continue)
+ return (s == visit_continue_with_parent) ? visit_continue : s;
+ break;
+ case ir_txl:
+ case ir_txf:
+ s = this->lod_info.lod->accept(v);
+ if (s != visit_continue)
+ return (s == visit_continue_with_parent) ? visit_continue : s;
+ break;
+ case ir_txd:
+ s = this->lod_info.grad.dPdx->accept(v);
+ if (s != visit_continue)
+ return (s == visit_continue_with_parent) ? visit_continue : s;
+
+ s = this->lod_info.grad.dPdy->accept(v);
+ if (s != visit_continue)
+ return (s == visit_continue_with_parent) ? visit_continue : s;
+ break;
+ }
+
return visit_continue_with_parent;
}