From: Dmitriy Nester Date: Thu, 27 Feb 2020 13:27:17 +0000 (+0200) Subject: freedreno: replace fnv1a hash function with xxhash X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=edd62619a1c455226a5bc972b024ea77debecfa5;p=mesa.git freedreno: replace fnv1a hash function with xxhash xxhash is faster than fnv1a in almost all circumstances, so we're switching to it globally. Signed-off-by: Dmytro Nester Reviewed-by: Eric Anholt Part-of: --- diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_texture.c b/src/gallium/drivers/freedreno/a6xx/fd6_texture.c index a5396d939c8..4338f1f1f6c 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_texture.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_texture.c @@ -359,9 +359,7 @@ static uint32_t key_hash(const void *_key) { const struct fd6_texture_key *key = _key; - uint32_t hash = _mesa_fnv32_1a_offset_bias; - hash = _mesa_fnv32_1a_accumulate_block(hash, key, sizeof(*key)); - return hash; + return XXH32(key, sizeof(*key), 0); } static bool diff --git a/src/gallium/drivers/freedreno/freedreno_batch_cache.c b/src/gallium/drivers/freedreno/freedreno_batch_cache.c index 253b16e93d8..329ed41fba3 100644 --- a/src/gallium/drivers/freedreno/freedreno_batch_cache.c +++ b/src/gallium/drivers/freedreno/freedreno_batch_cache.c @@ -28,6 +28,8 @@ #include "util/set.h" #include "util/list.h" #include "util/u_string.h" +#define XXH_INLINE_ALL +#include "util/xxhash.h" #include "freedreno_batch.h" #include "freedreno_batch_cache.h" @@ -98,9 +100,9 @@ static uint32_t key_hash(const void *_key) { const struct key *key = _key; - uint32_t hash = _mesa_fnv32_1a_offset_bias; - hash = _mesa_fnv32_1a_accumulate_block(hash, key, offsetof(struct key, surf[0])); - hash = _mesa_fnv32_1a_accumulate_block(hash, key->surf, sizeof(key->surf[0]) * key->num_surfs); + uint32_t hash = 0; + hash = XXH32(key, offsetof(struct key, surf[0]), hash); + hash = XXH32(key->surf, sizeof(key->surf[0]) * key->num_surfs , hash); return hash; } diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cache.c b/src/gallium/drivers/freedreno/ir3/ir3_cache.c index ba96628bd4a..fdf81769f5a 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_cache.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_cache.c @@ -26,6 +26,8 @@ #include "util/ralloc.h" #include "util/hash_table.h" +#define XXH_INLINE_ALL +#include "util/xxhash.h" #include "ir3_cache.h" #include "ir3_gallium.h" @@ -35,9 +37,7 @@ static uint32_t key_hash(const void *_key) { const struct ir3_cache_key *key = _key; - uint32_t hash = _mesa_fnv32_1a_offset_bias; - hash = _mesa_fnv32_1a_accumulate_block(hash, key, sizeof(*key)); - return hash; + return XXH32(key, sizeof(*key), 0); } static bool