diff options
author | Eric Anholt <eric@anholt.net> | 2010-06-22 10:45:15 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2010-06-22 18:18:30 -0700 |
commit | 216580dbd733aa2e64df4ca95e37a0eb102c6ede (patch) | |
tree | 3b13c4463f192ff5d48b26b56456b4e63f3086b8 | |
parent | ac95f2f8c88d39aaa878f61172d9748af13e2c80 (diff) |
Hook up texturing in the hierarchical visitor.
-rw-r--r-- | ir_hv_accept.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/ir_hv_accept.cpp b/ir_hv_accept.cpp index 5432633272..f936b3500e 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; } |