[Mesa-dev] [PATCH v3 01/24] mesa/format_utils: Fix a bug in unorm_to_float helper function

Michel Dänzer michel at daenzer.net
Tue Dec 9 22:53:57 PST 2014


On 09.12.2014 21:06, Iago Toral Quiroga wrote:
> From: Jason Ekstrand <jason.ekstrand at 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 <siglesias at igalia.com>:
>     - Modify unorm_to_float() to avoid doing the division when
>       x == -MAX_INT(src_bits)
> 
> Reviewed-by: Ian Romanick <ian.d.romanick at 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)?


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the mesa-dev mailing list