diff options
author | Anthony Pesch <[email protected]> | 2020-01-18 00:54:10 -0500 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-01-23 17:06:57 +0000 |
commit | 931388ceca323750682604c7b70d355fa00d9900 (patch) | |
tree | 6f466ae8ef362de5afb06dbadd5b9195852aa33a | |
parent | 032f8807f7c1aa2d0c973b6664b9ab6be6863e90 (diff) |
util/hash_table: replace _mesa_hash_data's fnv1a hash function with xxhash
For most key sizes, xxhash outperforms fnv1a's hash rate substantially (bug
2153). In particular, the V3D driver hashes multiple ~200 byte keys as part
of the shader cache lookup which can easily eat up 10-20% of the runtime on
the Raspberry Pi. Swapping over to xxhash drops this to ~1% of the runtime.
Reviewed-by: Eric Anholt <[email protected]>
Reviewed-by: Iago Toral Quiroga <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3475>
-rw-r--r-- | src/util/hash_table.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/util/hash_table.c b/src/util/hash_table.c index 9d982708868..48d59e48431 100644 --- a/src/util/hash_table.c +++ b/src/util/hash_table.c @@ -50,6 +50,9 @@ #include "main/hash.h" #include "fast_urem_by_const.h" +#define XXH_INLINE_ALL +#include "xxhash.h" + static const uint32_t deleted_key_value; /** @@ -549,8 +552,7 @@ _mesa_hash_table_random_entry(struct hash_table *ht, uint32_t _mesa_hash_data(const void *data, size_t size) { - return _mesa_fnv32_1a_accumulate_block(_mesa_fnv32_1a_offset_bias, - data, size); + return XXH32(data, size, 0); } /** FNV-1a string hash implementation */ |