Does opt_algebraic also need updates? On 02/06/2015 06:56 AM, Ilia Mirkin wrote: > From: Dave Airlie <airl...@gmail.com> > > Signed-off-by: Dave Airlie <airl...@redhat.com> > Reviewed-by: Matt Turner <matts...@gmail.com> > --- > src/glsl/opt_constant_propagation.cpp | 3 +++ > src/glsl/opt_minmax.cpp | 13 +++++++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/src/glsl/opt_constant_propagation.cpp > b/src/glsl/opt_constant_propagation.cpp > index c334e12..90cc0c8 100644 > --- a/src/glsl/opt_constant_propagation.cpp > +++ b/src/glsl/opt_constant_propagation.cpp > @@ -194,6 +194,9 @@ ir_constant_propagation_visitor::handle_rvalue(ir_rvalue > **rvalue) > case GLSL_TYPE_FLOAT: > data.f[i] = found->constant->value.f[rhs_channel]; > break; > + case GLSL_TYPE_DOUBLE: > + data.d[i] = found->constant->value.d[rhs_channel]; > + break; > case GLSL_TYPE_INT: > data.i[i] = found->constant->value.i[rhs_channel]; > break; > diff --git a/src/glsl/opt_minmax.cpp b/src/glsl/opt_minmax.cpp > index 32fb2d7..23d0b10 100644 > --- a/src/glsl/opt_minmax.cpp > +++ b/src/glsl/opt_minmax.cpp > @@ -133,6 +133,14 @@ compare_components(ir_constant *a, ir_constant *b) > else > foundequal = true; > break; > + case GLSL_TYPE_DOUBLE: > + if (a->value.d[c0] < b->value.d[c1]) > + foundless = true; > + else if (a->value.d[c0] > b->value.d[c1]) > + foundgreater = true; > + else > + foundequal = true; > + break; > default: > unreachable("not reached"); > } > @@ -178,6 +186,11 @@ combine_constant(bool ismin, ir_constant *a, ir_constant > *b) > (!ismin && b->value.f[i] > c->value.f[i])) > c->value.f[i] = b->value.f[i]; > break; > + case GLSL_TYPE_DOUBLE: > + if ((ismin && b->value.d[i] < c->value.d[i]) || > + (!ismin && b->value.d[i] > c->value.d[i])) > + c->value.d[i] = b->value.d[i]; > + break; > default: > assert(!"not reached"); > } >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev