mesa: Fix clamping to -1.0 in snorm_to_float
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 23 Aug 2014 15:36:46 +0000 (08:36 -0700)
committerIago Toral Quiroga <itoral@igalia.com>
Mon, 12 Jan 2015 10:20:27 +0000 (11:20 +0100)
This patch fixes the return of a wrong value when x is lower than
-MAX_INT(src_bits) as the result would not be between [-1.0 1.0].

v2 by Samuel Iglesias <siglesias@igalia.com>:
    - Modify snorm_to_float() to avoid doing the division when
      x == -MAX_INT(src_bits)

Cc: 10.4 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/mesa/main/format_utils.c

index 93a0ceac0a0ec61916b101481920ada0c904546c..5dd08483a032092b85af98368e0effc49739b253 100644 (file)
@@ -152,7 +152,7 @@ unorm_to_float(unsigned x, unsigned src_bits)
 static inline float
 snorm_to_float(int x, unsigned src_bits)
 {
-   if (x == -MAX_INT(src_bits))
+   if (x <= -MAX_INT(src_bits))
       return -1.0f;
    else
       return x * (1.0f / (float)MAX_INT(src_bits));