summaryrefslogtreecommitdiffstats
path: root/src/util/hash_table.c
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2015-01-05 22:31:23 -0800
committerJason Ekstrand <[email protected]>2015-01-15 07:20:23 -0800
commita3b73ccf6db3efe4ce0eed4c60d1e2709b335cac (patch)
treecda3e43886f11fb94f323aad11108dc2c8680b06 /src/util/hash_table.c
parente4115ca9d824a27176c58fdeede392d4d99b0cab (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.c17
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++;
}