From 142fb27c3b4c530174968c5f84fd1bd787b8e3de Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Fri, 9 Apr 2010 16:53:07 +0100 Subject: [PATCH] util: ubyte_to_float and float_to_ubyte whenever possible. More accurate results. We should probably generalize these functions for more cases. --- src/gallium/auxiliary/util/u_format_pack.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gallium/auxiliary/util/u_format_pack.py b/src/gallium/auxiliary/util/u_format_pack.py index a92a5bcfa9e..a6070934f04 100644 --- a/src/gallium/auxiliary/util/u_format_pack.py +++ b/src/gallium/auxiliary/util/u_format_pack.py @@ -299,6 +299,13 @@ def conversion_expr(src_channel, value = 'util_half_to_float(%s)' % value src_size = 32 + # Special case for float <-> ubytes for more accurate results + # Done before clamping since these functions already take care of that + if src_type == UNSIGNED and src_norm and src_size == 8 and dst_channel.type == FLOAT and dst_channel.size == 32: + return 'ubyte_to_float(%s)' % value + if src_type == FLOAT and src_type == 32 and dst_channel.type == UNSIGNED and dst_channel.norm and dst_channel.size == 8: + return 'float_to_ubyte(%s)' % value + if clamp: if dst_channel.type != FLOAT or src_type != FLOAT: value = clamp_expr(src_channel, dst_channel, dst_native_type, value) -- 2.30.2