mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
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 <eric@anholt.net> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3475>
This commit is contained in:
parent
032f8807f7
commit
931388ceca
1 changed files with 4 additions and 2 deletions
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue