Jason Ekstrand <ja...@jlekstrand.net> writes: > --- > src/compiler/glsl/opt_rebalance_tree.cpp | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/src/compiler/glsl/opt_rebalance_tree.cpp > b/src/compiler/glsl/opt_rebalance_tree.cpp > index 095f2d7..8045d51 100644 > --- a/src/compiler/glsl/opt_rebalance_tree.cpp > +++ b/src/compiler/glsl/opt_rebalance_tree.cpp > @@ -131,6 +131,8 @@ public: > progress = false; > } > > + virtual ir_visitor_status visit_enter(ir_assignment *ir); > + > void handle_rvalue(ir_rvalue **rvalue); > > bool progress; > @@ -146,6 +148,20 @@ struct is_reduction_data { > > } /* anonymous namespace */ > > +ir_visitor_status > +ir_rebalance_visitor::visit_enter(ir_assignment *ir) > +{ > + ir_variable *var = ir->lhs->variable_referenced(); > + if (var->data.invariant || var->data.precise) { > + /* If we're assigning to an invariant variable, just bail. Tree > + * rebalancing (reassociation) isn't precision-safe. > + */ > + return visit_continue_with_parent; > + } else { > + return visit_continue; > + } > +} > +
Reviewed-by: Francisco Jerez <curroje...@riseup.net> > static bool > is_reduction_operation(ir_expression_operation operation) > { > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev