On Thu, Oct 23, 2014 at 11:19:04PM -0700, Matt Turner wrote: > On Thu, Oct 23, 2014 at 11:01 PM, Ville Syrjälä <syrj...@sci.fi> wrote: > > On Thu, Oct 23, 2014 at 04:44:03PM -0700, Matt Turner wrote: > >> --- > >> src/mesa/drivers/dri/i965/Makefile.sources | 1 + > >> src/mesa/drivers/dri/i965/brw_packed_float.c | 74 > >> ++++++++++++++++++++++++++++ > >> src/mesa/drivers/dri/i965/brw_packed_float.h | 25 ++++++++++ > >> 3 files changed, 100 insertions(+) > >> create mode 100644 src/mesa/drivers/dri/i965/brw_packed_float.c > >> create mode 100644 src/mesa/drivers/dri/i965/brw_packed_float.h > >> > >> diff --git a/src/mesa/drivers/dri/i965/Makefile.sources > >> b/src/mesa/drivers/dri/i965/Makefile.sources > >> index 9c006da..6b0f601 100644 > >> --- a/src/mesa/drivers/dri/i965/Makefile.sources > >> +++ b/src/mesa/drivers/dri/i965/Makefile.sources > >> @@ -78,6 +78,7 @@ i965_FILES = \ > >> brw_meta_fast_clear.c \ > >> brw_misc_state.c \ > >> brw_object_purgeable.c \ > >> + brw_packed_float.c \ > >> brw_performance_monitor.c \ > >> brw_program.c \ > >> brw_primitive_restart.c \ > >> diff --git a/src/mesa/drivers/dri/i965/brw_packed_float.c > >> b/src/mesa/drivers/dri/i965/brw_packed_float.c > >> new file mode 100644 > >> index 0000000..d25e7dd > >> --- /dev/null > >> +++ b/src/mesa/drivers/dri/i965/brw_packed_float.c > >> @@ -0,0 +1,74 @@ > >> +/* > >> + * Copyright © 2014 Intel Corporation > >> + * > >> + * Permission is hereby granted, free of charge, to any person obtaining a > >> + * copy of this software and associated documentation files (the > >> "Software"), > >> + * to deal in the Software without restriction, including without > >> limitation > >> + * the rights to use, copy, modify, merge, publish, distribute, > >> sublicense, > >> + * and/or sell copies of the Software, and to permit persons to whom the > >> + * Software is furnished to do so, subject to the following conditions: > >> + * > >> + * The above copyright notice and this permission notice (including the > >> next > >> + * paragraph) shall be included in all copies or substantial portions of > >> the > >> + * Software. > >> + * > >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > >> EXPRESS OR > >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > >> MERCHANTABILITY, > >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT > >> SHALL > >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR > >> OTHER > >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > >> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > >> DEALINGS > >> + * IN THE SOFTWARE. > >> + */ > >> +#include "brw_packed_float.h" > >> + > >> +union fu { > >> + float f; > >> + unsigned u; > >> + struct { > >> + unsigned mantissa:23; > >> + unsigned exponent:8; > >> + unsigned sign:1; > >> + }; > >> +}; > >> + > >> +int > >> +brw_float_to_vf(float f) > >> +{ > >> + union fu fu = { .f = f }; > >> + > >> + /* ±0.0f is special cased. */ > >> + if (f == 0.0f) > >> + return fu.sign << 7; > >> + > >> + unsigned mantissa = fu.mantissa >> (23 - 4); > >> + unsigned exponent = fu.exponent - (127 - 3); > > > > & 0x7 > > No, the exponent >= 8 below handles that.
Oh I thought you were testing the original exponent, but you indeed check the new one. Yeah that makes more sense. -- Ville Syrjälä syrj...@sci.fi http://www.sci.fi/~syrjala/ _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev