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

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to