From df262d80da3ee019b364f3f83db9237130bdfec9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Sch=C3=BCrmann?= Date: Thu, 27 Apr 2023 15:20:06 +0200 Subject: [PATCH] vulkan/pipeline_cache: use vk_pipeline_cache_insert_object() to replace raw data objects Part-of: --- src/vulkan/runtime/vk_pipeline_cache.c | 44 ++-------------------------------- 1 file changed, 2 insertions(+), 42 deletions(-) diff --git a/src/vulkan/runtime/vk_pipeline_cache.c b/src/vulkan/runtime/vk_pipeline_cache.c index d5b9f34..6a2cd1e 100644 --- a/src/vulkan/runtime/vk_pipeline_cache.c +++ b/src/vulkan/runtime/vk_pipeline_cache.c @@ -177,46 +177,6 @@ vk_pipeline_cache_remove_object(struct vk_pipeline_cache *cache, vk_pipeline_cache_object_unref(cache->base.device, object); } -/* Consumes references to both search and replace and produces a reference */ -static struct vk_pipeline_cache_object * -vk_pipeline_cache_replace_object(struct vk_pipeline_cache *cache, - uint32_t hash, - struct vk_pipeline_cache_object *search, - struct vk_pipeline_cache_object *replace) -{ - assert(object_keys_equal(search, replace)); - - vk_pipeline_cache_lock(cache); - struct set_entry *entry = - _mesa_set_search_pre_hashed(cache->object_cache, hash, search); - - struct vk_pipeline_cache_object *found = NULL; - if (entry) { - if (entry->key == (const void *)search) { - /* Drop the reference owned by the cache */ - vk_pipeline_cache_object_unref(cache->base.device, search); - - entry->key = vk_pipeline_cache_object_ref(replace); - } else { - found = vk_pipeline_cache_object_ref((void *)entry->key); - } - } else { - /* I guess the object was purged? Re-add it to the cache */ - vk_pipeline_cache_object_ref(replace); - _mesa_set_add_pre_hashed(cache->object_cache, hash, replace); - } - vk_pipeline_cache_unlock(cache); - - vk_pipeline_cache_object_unref(cache->base.device, search); - - if (found) { - vk_pipeline_cache_object_unref(cache->base.device, replace); - return found; - } else { - return replace; - } -} - static bool vk_pipeline_cache_object_serialize(struct vk_pipeline_cache *cache, struct vk_pipeline_cache_object *object, @@ -419,8 +379,8 @@ vk_pipeline_cache_lookup_object(struct vk_pipeline_cache *cache, return NULL; } - object = vk_pipeline_cache_replace_object(cache, hash, object, - real_object); + vk_pipeline_cache_object_unref(cache->base.device, object); + object = vk_pipeline_cache_insert_object(cache, real_object); } assert(object->ops == ops); -- 2.7.4