Looks good to me. Jose
----- Original Message ----- > lp_build_add and lp_build_sub have fallback code for cases > that cannot be handled by known intrinsics. For UNORM formats, > this code was using modulo rather than saturating arithmetic. > > This fixes some rendering issues for a gnome session on System z. > It also fixes various piglit tests on z, such as > spec/ARB_color_buffer_float/GL_RGBA8-render. > > The patch deliberately doesn't tackle the more complicated > SNORM case. > > Tested against piglit on x86_64 and System z with no regressions. > > Signed-off-by: Richard Sandiford <[email protected]> > --- > src/gallium/auxiliary/gallivm/lp_bld_arit.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c > b/src/gallium/auxiliary/gallivm/lp_bld_arit.c > index 3291ec4..08aec79 100644 > --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c > +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c > @@ -386,6 +386,10 @@ lp_build_add(struct lp_build_context *bld, > return lp_build_intrinsic_binary(builder, intrinsic, > lp_build_vec_type(bld->gallivm, bld->type), a, b); > } > > + /* TODO: handle signed case */ > + if(type.norm && !type.floating && !type.fixed && !type.sign) > + a = lp_build_min_simple(bld, a, lp_build_comp(bld, b)); > + > if(LLVMIsConstant(a) && LLVMIsConstant(b)) > if (type.floating) > res = LLVMConstFAdd(a, b); > @@ -663,6 +667,10 @@ lp_build_sub(struct lp_build_context *bld, > return lp_build_intrinsic_binary(builder, intrinsic, > lp_build_vec_type(bld->gallivm, bld->type), a, b); > } > > + /* TODO: handle signed case */ > + if(type.norm && !type.floating && !type.fixed && !type.sign) > + a = lp_build_max_simple(bld, a, b); > + > if(LLVMIsConstant(a) && LLVMIsConstant(b)) > if (type.floating) > res = LLVMConstFSub(a, b); > -- > 1.7.11.7 > > _______________________________________________ > mesa-dev mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
