[Mesa-dev] [PATCH v2 1/8] u_math: add ushort_to_float/float_to_ushort

Roland Scheidegger sroland at vmware.com
Sat Mar 23 00:09:33 UTC 2019


Looks great, thanks.
Reviewed-by: Roland Scheidegger <sroland at vmware.com>

Am 22.03.19 um 15:28 schrieb Qiang Yu:
> v2:
> - return 0 for NaN too
> 
> Cc: Roland Scheidegger <sroland at vmware.com>
> Signed-off-by: Qiang Yu <yuq825 at gmail.com>
> ---
>  src/util/u_math.h | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
> 
> diff --git a/src/util/u_math.h b/src/util/u_math.h
> index e7dbbe5ca22..5e712dadb4a 100644
> --- a/src/util/u_math.h
> +++ b/src/util/u_math.h
> @@ -389,6 +389,37 @@ float_to_ubyte(float f)
>     }
>  }
>  
> +/**
> + * Convert ushort to float in [0, 1].
> + */
> +static inline float
> +ushort_to_float(ushort us)
> +{
> +   return (float) us * (1.0f / 65535.0f);
> +}
> +
> +
> +/**
> + * Convert float in [0,1] to ushort in [0,65535] with clamping.
> + */
> +static inline ushort
> +float_to_ushort(float f)
> +{
> +   /* return 0 for NaN too */
> +   if (!(f > 0.0f)) {
> +      return (ushort) 0;
> +   }
> +   else if (f >= 1.0f) {
> +      return (ushort) 65535;
> +   }
> +   else {
> +      union fi tmp;
> +      tmp.f = f;
> +      tmp.f = tmp.f * (65535.0f/65536.0f) + 128.0f;
> +      return (ushort) tmp.i;
> +   }
> +}
> +
>  static inline float
>  byte_to_float_tex(int8_t b)
>  {
> 



More information about the mesa-dev mailing list