diff options
author | Jason Ekstrand <[email protected]> | 2015-01-05 22:31:23 -0800 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2015-01-15 07:20:23 -0800 |
commit | a3b73ccf6db3efe4ce0eed4c60d1e2709b335cac (patch) | |
tree | cda3e43886f11fb94f323aad11108dc2c8680b06 /src/util/hash_table.c | |
parent | e4115ca9d824a27176c58fdeede392d4d99b0cab (diff) |
util/hash_table: Pull the details of the FNV-1a into helpers
This way the basics of the FNV-1a hash can be reused to easily create other
hashing functions.
Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/util/hash_table.c')
-rw-r--r-- | src/util/hash_table.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/src/util/hash_table.c b/src/util/hash_table.c index 0ad03837760..ac187b24ca4 100644 --- a/src/util/hash_table.c +++ b/src/util/hash_table.c @@ -431,27 +431,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++; } |