Hi Iago/Petri, Just Ccing you guys in case you have a better solution (I know its been a while since this was written).
This is causing incorrect shaders in at least Serious Sam 3 possibly others. I've sent some piglit tests to reproduce it to the piglit list. Thanks, Tim On Fri, 2017-01-06 at 10:26 +1100, Timothy Arceri wrote: > Marking operations as redundant if they are equal to the base > range is fine when the tree structure is something like this: > > max > / \ > max b > / \ > 3 max > / \ > 3 a > > But the opt falls apart with a tree like this: > > max > / \ > max max > / \ / \ > 3 a b 3 > > I'm not 100% sure what is going wrong as a tree like: > > max > / \ > max max > / \ / \ > 3 a b 4 > > Will remove the right hand side max just fine. But not marking > limits that equal the base range seems to fix the problem. > > NIR algebraic opt will clean up the first tree for anyway, hopefully > other backends are smart enough to do this also. > > Cc: "13.0" <mesa-sta...@lists.freedesktop.org> > --- > src/compiler/glsl/opt_minmax.cpp | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/src/compiler/glsl/opt_minmax.cpp > b/src/compiler/glsl/opt_minmax.cpp > index 29482ee..9f64db9 100644 > --- a/src/compiler/glsl/opt_minmax.cpp > +++ b/src/compiler/glsl/opt_minmax.cpp > @@ -355,7 +355,7 @@ ir_minmax_visitor::prune_expression(ir_expression > *expr, minmax_range baserange) > */ > if (!is_redundant && limits[i].low && baserange.high) { > cr = compare_components(limits[i].low, baserange.high); > - if (cr >= EQUAL && cr != MIXED) > + if (cr > EQUAL && cr != MIXED) > is_redundant = true; > } > } else { > @@ -373,7 +373,7 @@ ir_minmax_visitor::prune_expression(ir_expression > *expr, minmax_range baserange) > */ > if (!is_redundant && limits[i].high && baserange.low) { > cr = compare_components(limits[i].high, baserange.low); > - if (cr <= EQUAL) > + if (cr < EQUAL) > is_redundant = true; > } > } _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev