Surprising indeed... Reviewed-by: Roland Scheidegger <srol...@vmware.com>
Am 07.11.2014 um 15:32 schrieb jfons...@vmware.com: > From: José Fonseca <jfons...@vmware.com> > > This commit causes the generated C code to change as > > union util_format_r32g32b32a32_sscaled pixel; > - pixel.chan.r = (int32_t)CLAMP(src[0], -2147483648, 2147483647); > - pixel.chan.g = (int32_t)CLAMP(src[1], -2147483648, 2147483647); > - pixel.chan.b = (int32_t)CLAMP(src[2], -2147483648, 2147483647); > - pixel.chan.a = (int32_t)CLAMP(src[3], -2147483648, 2147483647); > + pixel.chan.r = (int32_t)CLAMP(src[0], -2147483648.0f, > 2147483647.0f); > + pixel.chan.g = (int32_t)CLAMP(src[1], -2147483648.0f, > 2147483647.0f); > + pixel.chan.b = (int32_t)CLAMP(src[2], -2147483648.0f, > 2147483647.0f); > + pixel.chan.a = (int32_t)CLAMP(src[3], -2147483648.0f, > 2147483647.0f); > memcpy(dst, &pixel, sizeof pixel); > > which surprisingly makes a difference for MSVC. > > Thanks to Juraj Svec for diagnosing this and drafting a fix. > > Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29661 > > Cc: 10.2 10.3 <mesa-sta...@lists.freedesktop.org> > --- > src/gallium/auxiliary/util/u_format_pack.py | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/src/gallium/auxiliary/util/u_format_pack.py > b/src/gallium/auxiliary/util/u_format_pack.py > index 6ccf04c..90f348e 100644 > --- a/src/gallium/auxiliary/util/u_format_pack.py > +++ b/src/gallium/auxiliary/util/u_format_pack.py > @@ -226,9 +226,9 @@ def native_to_constant(type, value): > '''Get the value of unity for this type.''' > if type.type == FLOAT: > if type.size <= 32: > - return "%ff" % value > + return "%.1ff" % float(value) > else: > - return "%ff" % value > + return "%.1f" % float(value) > else: > return str(int(value)) > > @@ -251,8 +251,8 @@ def clamp_expr(src_channel, dst_channel, dst_native_type, > value): > dst_max = dst_channel.max() > > # Translate the destination range to the src native value > - dst_min_native = value_to_native(src_channel, dst_min) > - dst_max_native = value_to_native(src_channel, dst_max) > + dst_min_native = native_to_constant(src_channel, > value_to_native(src_channel, dst_min)) > + dst_max_native = native_to_constant(src_channel, > value_to_native(src_channel, dst_max)) > > if src_min < dst_min and src_max > dst_max: > return 'CLAMP(%s, %s, %s)' % (value, dst_min_native, dst_max_native) > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev