From: Dmitriy Nester Date: Thu, 27 Feb 2020 13:38:45 +0000 (+0200) Subject: zink: replace fnv1a hash function with xxhash X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bf4d652f3f44da7837d5ca7c514533bf8661e31e;p=mesa.git zink: 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/zink/nir_to_spirv/spirv_builder.c b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c index 9fb447611f3..101eed1aafa 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c +++ b/src/gallium/drivers/zink/nir_to_spirv/spirv_builder.c @@ -27,6 +27,8 @@ #include "util/u_bitcast.h" #include "util/u_memory.h" #include "util/hash_table.h" +#define XXH_INLINE_ALL +#include "util/xxhash.h" #include #include @@ -677,10 +679,9 @@ non_aggregate_type_hash(const void *arg) { const struct spirv_type *type = arg; - uint32_t hash = _mesa_fnv32_1a_offset_bias; - hash = _mesa_fnv32_1a_accumulate(hash, type->op); - hash = _mesa_fnv32_1a_accumulate_block(hash, type->args, sizeof(uint32_t) * - type->num_args); + uint32_t hash = 0; + hash = XXH32(&type->op, sizeof(type->op), hash); + hash = XXH32(type->args, sizeof(uint32_t) * type->num_args, hash); return hash; } @@ -883,11 +884,10 @@ const_hash(const void *arg) { const struct spirv_const *key = arg; - uint32_t hash = _mesa_fnv32_1a_offset_bias; - hash = _mesa_fnv32_1a_accumulate(hash, key->op); - hash = _mesa_fnv32_1a_accumulate(hash, key->type); - hash = _mesa_fnv32_1a_accumulate_block(hash, key->args, sizeof(uint32_t) * - key->num_args); + uint32_t hash = 0; + hash = XXH32(&key->op, sizeof(key->op), hash); + hash = XXH32(&key->type, sizeof(key->type), hash); + hash = XXH32(key->args, sizeof(uint32_t) * key->num_args, hash); return hash; }