Jason Ekstrand <[email protected]> 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 <[email protected]> > static bool > is_reduction_operation(ir_expression_operation operation) > { > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
