util/format: Generate floating point constants for clamping.
authorJosé Fonseca <jfonseca@vmware.com>
Fri, 7 Nov 2014 14:26:58 +0000 (14:26 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Sat, 8 Nov 2014 10:32:39 +0000 (10:32 +0000)
commitd268eac3a9c81febc5efcae7fe6854045bfc5144
tree4c9261723400fb319dab0461eb8d46c34613fca1
parent42443339f10354523af09df7a13eabe6f3766d5a
util/format: Generate floating point constants for clamping.

This commit causes the generated C code to change as

            union util_format_r32g32b32a32_sscaled pixel;
  -         pixel.chan.r = (int32_t)CLAMP(src[0], -21474836482147483647);
  -         pixel.chan.g = (int32_t)CLAMP(src[1], -21474836482147483647);
  -         pixel.chan.b = (int32_t)CLAMP(src[2], -21474836482147483647);
  -         pixel.chan.a = (int32_t)CLAMP(src[3], -21474836482147483647);
  +         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
src/gallium/auxiliary/util/u_format_pack.py