On Tue, Jan 6, 2015 at 5:03 PM, Matt Turner <matts...@gmail.com> wrote:
> On Tue, Jan 6, 2015 at 4:34 PM, Jason Ekstrand <ja...@jlekstrand.net> > wrote: > > This way the basics of the FNV-a1 hash can be reused to easily create > other > > hashing functions. > > > > Cc: Eric Anholt <e...@anholt.net> > > This didn't actually Cc him. > My e-mail says it did... > > > --- > > src/util/hash_table.c | 17 ++++------------- > > src/util/hash_table.h | 19 +++++++++++++++++++ > > 2 files changed, 23 insertions(+), 13 deletions(-) > > > > diff --git a/src/util/hash_table.c b/src/util/hash_table.c > > index 920bdfd..ece72bc 100644 > > --- a/src/util/hash_table.c > > +++ b/src/util/hash_table.c > > @@ -396,27 +396,18 @@ _mesa_hash_table_random_entry(struct hash_table > *ht, > > uint32_t > > _mesa_hash_data(const void *data, size_t size) > > { > > - uint32_t hash = 2166136261ul; > > - const uint8_t *bytes = data; > > - > > - while (size-- != 0) { > > - hash ^= *bytes; > > - hash = hash * 0x01000193; > > - bytes++; > > - } > > - > > - return hash; > > + return _mesa_FNV32_1a_accumulate_block(_mesa_FNV32_1a_offset_bias, > > + data, size); > > } > > > > /** FNV-1a string hash implementation */ > > uint32_t > > _mesa_hash_string(const char *key) > > { > > - uint32_t hash = 2166136261ul; > > + uint32_t hash = _mesa_FNV32_1a_offset_bias; > > > > while (*key != 0) { > > - hash ^= *key; > > - hash = hash * 0x01000193; > > + hash = _mesa_FNV32_1a_accumulate(hash, *key); > > key++; > > } > > > > diff --git a/src/util/hash_table.h b/src/util/hash_table.h > > index d6b6ebf..3d98cea 100644 > > --- a/src/util/hash_table.h > > +++ b/src/util/hash_table.h > > @@ -90,6 +90,25 @@ static inline uint32_t _mesa_hash_pointer(const void > *pointer) > > return _mesa_hash_data(&pointer, sizeof(pointer)); > > } > > > > +static const uint32_t _mesa_FNV32_1a_offset_bias = 2166136261u; > > I don't think you want this in the header. > Explain? The whole point is to make the bits of FNV-1a re-usable by other bits of mesa. That requires them to have access to that constant.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev