mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 01:38:06 +02:00
glsl/opt_algebraic: Don't handle invariant or precise trees
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
parent
89b604922d
commit
b2209b2333
1 changed files with 19 additions and 0 deletions
|
|
@ -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,23 @@ 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.
|
||||
*
|
||||
* FINISHME: Find out which optimizations are precision-safe and enable
|
||||
* then only for invariant or precise trees.
|
||||
*/
|
||||
return visit_continue_with_parent;
|
||||
} else {
|
||||
return visit_continue;
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool
|
||||
is_vec_zero(ir_constant *ir)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue