hash fnv from seed
This commit is contained in:
parent
fd486bb71b
commit
1d2e7c0b9f
@ -96,7 +96,7 @@ INTERNAL struct asset *asset_cache_get_slot_assume_locked(struct string key, u64
|
|||||||
u64 asset_cache_hash(struct string key)
|
u64 asset_cache_hash(struct string key)
|
||||||
{
|
{
|
||||||
/* TODO: Better hash */
|
/* TODO: Better hash */
|
||||||
return hash_fnv64(BUFFER_FROM_STRING(key));
|
return hash_fnv64(HASH_FNV64_SEED, BUFFER_FROM_STRING(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* `key` text is copied by this function
|
/* `key` text is copied by this function
|
||||||
|
|||||||
@ -711,7 +711,7 @@ INTERNAL struct json_val json_format_internal(struct arena *arena, const struct
|
|||||||
.value = json_format_internal(arena, cur)
|
.value = json_format_internal(arena, cur)
|
||||||
};
|
};
|
||||||
|
|
||||||
u64 hash = hash_fnv64(BUFFER_FROM_STRING(cur->key));
|
u64 hash = hash_fnv64(HASH_FNV64_SEED, BUFFER_FROM_STRING(cur->key));
|
||||||
u32 slot_index_home = hash % capacity;
|
u32 slot_index_home = hash % capacity;
|
||||||
u32 slot_index = slot_index_home;
|
u32 slot_index = slot_index_home;
|
||||||
while (true) {
|
while (true) {
|
||||||
@ -862,7 +862,7 @@ const struct json_val *json_object_get(const struct json_val *obj, struct string
|
|||||||
u32 *hash_table = (u32 *)obj->val.object_table;
|
u32 *hash_table = (u32 *)obj->val.object_table;
|
||||||
const struct json_object_entry *entries = get_object_entries(obj);
|
const struct json_object_entry *entries = get_object_entries(obj);
|
||||||
|
|
||||||
u64 hash = hash_fnv64(BUFFER_FROM_STRING(key));
|
u64 hash = hash_fnv64(HASH_FNV64_SEED, BUFFER_FROM_STRING(key));
|
||||||
u32 slot_index_home = hash % capacity;
|
u32 slot_index_home = hash % capacity;
|
||||||
u32 slot_index = slot_index_home;
|
u32 slot_index = slot_index_home;
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|||||||
@ -40,6 +40,7 @@ GLOBAL struct {
|
|||||||
struct sys_window *window;
|
struct sys_window *window;
|
||||||
struct renderer_canvas *world_canvas;
|
struct renderer_canvas *world_canvas;
|
||||||
struct renderer_canvas *screen_canvas;
|
struct renderer_canvas *screen_canvas;
|
||||||
|
struct xform world_view_last_frame;
|
||||||
struct xform world_view;
|
struct xform world_view;
|
||||||
|
|
||||||
struct blend_tick *head_free_blend_tick;
|
struct blend_tick *head_free_blend_tick;
|
||||||
@ -512,9 +513,11 @@ INTERNAL void user_update(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ========================== *
|
/* ========================== *
|
||||||
* Update view from debug camera
|
* Update view
|
||||||
* ========================== */
|
* ========================== */
|
||||||
|
|
||||||
|
L.world_view_last_frame = L.world_view;
|
||||||
|
|
||||||
if (L.bind_states[USER_BIND_KIND_DEBUG_DRAW].num_presses > 0) {
|
if (L.bind_states[USER_BIND_KIND_DEBUG_DRAW].num_presses > 0) {
|
||||||
L.debug_draw = !L.debug_draw;
|
L.debug_draw = !L.debug_draw;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,9 +18,10 @@ struct string util_file_name_from_path(struct string path);
|
|||||||
|
|
||||||
/* FNV-1a hash function
|
/* FNV-1a hash function
|
||||||
* TODO: Something faster if necessary */
|
* TODO: Something faster if necessary */
|
||||||
INLINE u64 hash_fnv64(struct buffer buff)
|
#define HASH_FNV64_SEED 0xcbf29ce484222325
|
||||||
|
INLINE u64 hash_fnv64(u64 seed, struct buffer buff)
|
||||||
{
|
{
|
||||||
u64 hash = 0xcbf29ce484222325;
|
u64 hash = seed;
|
||||||
for (u64 i = 0; i < buff.size; ++i) {
|
for (u64 i = 0; i < buff.size; ++i) {
|
||||||
hash ^= (u8)buff.data[i];
|
hash ^= (u8)buff.data[i];
|
||||||
hash *= 0x100000001b3;
|
hash *= 0x100000001b3;
|
||||||
@ -79,7 +80,7 @@ INLINE void fixed_dict_set(struct arena *arena, struct fixed_dict *dict, struct
|
|||||||
{
|
{
|
||||||
__prof;
|
__prof;
|
||||||
|
|
||||||
u64 hash = hash_fnv64(BUFFER_FROM_STRING(key));
|
u64 hash = hash_fnv64(HASH_FNV64_SEED, BUFFER_FROM_STRING(key));
|
||||||
u64 index = hash % dict->buckets_count;
|
u64 index = hash % dict->buckets_count;
|
||||||
struct fixed_dict_bucket *bucket = &dict->buckets[index];
|
struct fixed_dict_bucket *bucket = &dict->buckets[index];
|
||||||
|
|
||||||
@ -108,7 +109,7 @@ INLINE void *fixed_dict_get(const struct fixed_dict *dict, struct string key)
|
|||||||
{
|
{
|
||||||
__prof;
|
__prof;
|
||||||
|
|
||||||
u64 hash = hash_fnv64(BUFFER_FROM_STRING(key));
|
u64 hash = hash_fnv64(HASH_FNV64_SEED, BUFFER_FROM_STRING(key));
|
||||||
u64 index = hash % dict->buckets_count;
|
u64 index = hash % dict->buckets_count;
|
||||||
struct fixed_dict_bucket *bucket = &dict->buckets[index];
|
struct fixed_dict_bucket *bucket = &dict->buckets[index];
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user