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], -
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