Also, if the operand has bounds between 0.0 and 1.0 then copy that range up.
Signed-off-by: Thomas Helland <thomashellan...@gmail.com> --- src/glsl/opt_minmax.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/glsl/opt_minmax.cpp b/src/glsl/opt_minmax.cpp index 0b9ddc2..4088c80 100644 --- a/src/glsl/opt_minmax.cpp +++ b/src/glsl/opt_minmax.cpp @@ -293,6 +293,20 @@ get_range(ir_rvalue *rval) low = new(mem_ctx) ir_constant(-1.0f); return minmax_range(low, high); + case ir_unop_saturate: + high = new(mem_ctx) ir_constant(1.0f); + low = new(mem_ctx) ir_constant(0.0f); + r0 = get_range(expr->operands[0]); + // Operand has lower bounds between 0.0 - 1.0 gives us new lower bounds + if (r0.low && compare_components(r0.low, low) > EQUAL && + compare_components(r0.low, high) < EQUAL) + low = r0.low; + // Operand has upper bounds between 0.0 - 1.0 gives us new lower bounds + if (r0.high && compare_components(r0.high, low) > EQUAL && + compare_components(r0.high, high) < EQUAL) + high = r0.high; + return minmax_range(low, high); + default: break; } -- 2.0.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev