Signed-off-by: Qiang Yu <yuq...@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..ffadfb47282 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) +{ + union fi tmp; + + tmp.f = f; + if (tmp.i < 0) { + return (ushort) 0; + } + else if (tmp.i >= 0x3f800000 /* 1.0f */) { + return (ushort) 65535; + } + else { + tmp.f = tmp.f * (65535.0f/65536.0f) + 128.0f; + return (ushort) tmp.i; + } +} + static inline float byte_to_float_tex(int8_t b) { -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev