On Tue, Dec 9, 2014 at 10:53 PM, Michel Dänzer <mic...@daenzer.net> wrote:
> On 09.12.2014 21:06, Iago Toral Quiroga wrote: > > From: Jason Ekstrand <jason.ekstr...@intel.com> > > > > 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 <sigles...@igalia.com>: > > - Modify unorm_to_float() to avoid doing the division when > > x == -MAX_INT(src_bits) > > > > Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> > > --- > > src/mesa/main/format_utils.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/src/mesa/main/format_utils.c b/src/mesa/main/format_utils.c > > index 93a0cea..5dd0848 100644 > > --- a/src/mesa/main/format_utils.c > > +++ b/src/mesa/main/format_utils.c > > @@ -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)); > > > > The commit log talks about unorm_to_float, but the code modifies > snorm_to_float. Also, I think something like > > mesa: Fix clamping to -1.0 in snorm_to_float > > would be a more useful shortlog. > > > BTW, don't this function and unorm_to_float also need corresponding > clamping to 1.0 for values >= MAX_INT(src_bits)? > Yes and no. Every place that we use [us]norm_to_*, we assume that the value passed in is represented by the given number of bits. Therefore, clamping above should always be useless. The one edge case is the signed value MIN_INT(src_bits) (or, if you prefer, -MAX_INT(src_bits) - 1) in which is representable in the given number of bits but is actually less than -1 according to the formula. Technically, using an equality there was Ok, it's just that I had it equal to the wrong thing. Adding the check *probably* won't hurt as GCC *should* optimize it away, but I'd double-check the generated code before being too sure about it. > > > -- > Earthling Michel Dänzer | http://www.amd.com > Libre software enthusiast | Mesa and X developer > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev