Jason Ekstrand <ja...@jlekstrand.net> writes: > --- > src/compiler/glsl/opt_algebraic.cpp | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/src/compiler/glsl/opt_algebraic.cpp > b/src/compiler/glsl/opt_algebraic.cpp > index 1e58062..2fea240 100644 > --- a/src/compiler/glsl/opt_algebraic.cpp > +++ b/src/compiler/glsl/opt_algebraic.cpp > @@ -58,6 +58,8 @@ public: > { > } > > + virtual ir_visitor_status visit_enter(ir_assignment *ir); > + > ir_rvalue *handle_expression(ir_expression *ir); > void handle_rvalue(ir_rvalue **rvalue); > bool reassociate_constant(ir_expression *ir1, > @@ -80,6 +82,20 @@ public: > > } /* unnamed namespace */ > > +ir_visitor_status > +ir_algebraic_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 or precise variable, just bail. > + * Most of the algebraic optimizations aren't precision-safe.
Could you add something like the following to this comment: | * FINISHME -- Find out which optimizations are precision-safe | * and enable then only for invariant or precise trees. With that change: Reviewed-by: Francisco Jerez <curroje...@riseup.net> > + */ > + return visit_continue_with_parent; > + } else { > + return visit_continue; > + } > +} > + > static inline bool > is_vec_zero(ir_constant *ir) > { > -- > 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