• Home
  • Raw
  • Download

Lines Matching full:cache

144 vk_pipeline_cache_lock(struct vk_pipeline_cache *cache)  in vk_pipeline_cache_lock()  argument
147 if (!(cache->flags & VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT)) in vk_pipeline_cache_lock()
148 simple_mtx_lock(&cache->lock); in vk_pipeline_cache_lock()
152 vk_pipeline_cache_unlock(struct vk_pipeline_cache *cache) in vk_pipeline_cache_unlock() argument
154 if (!(cache->flags & VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT)) in vk_pipeline_cache_unlock()
155 simple_mtx_unlock(&cache->lock); in vk_pipeline_cache_unlock()
159 vk_pipeline_cache_remove_object(struct vk_pipeline_cache *cache, in vk_pipeline_cache_remove_object() argument
163 vk_pipeline_cache_lock(cache); in vk_pipeline_cache_remove_object()
165 _mesa_set_search_pre_hashed(cache->object_cache, hash, object); in vk_pipeline_cache_remove_object()
167 /* Drop the reference owned by the cache */ in vk_pipeline_cache_remove_object()
170 _mesa_set_remove(cache->object_cache, entry); in vk_pipeline_cache_remove_object()
172 vk_pipeline_cache_unlock(cache); in vk_pipeline_cache_remove_object()
180 vk_pipeline_cache_replace_object(struct vk_pipeline_cache *cache, in vk_pipeline_cache_replace_object() argument
187 vk_pipeline_cache_lock(cache); in vk_pipeline_cache_replace_object()
189 _mesa_set_search_pre_hashed(cache->object_cache, hash, search); in vk_pipeline_cache_replace_object()
194 /* Drop the reference owned by the cache */ in vk_pipeline_cache_replace_object()
202 /* I guess the object was purged? Re-add it to the cache */ in vk_pipeline_cache_replace_object()
204 _mesa_set_add_pre_hashed(cache->object_cache, hash, replace); in vk_pipeline_cache_replace_object()
206 vk_pipeline_cache_unlock(cache); in vk_pipeline_cache_replace_object()
219 vk_pipeline_cache_object_serialize(struct vk_pipeline_cache *cache, in vk_pipeline_cache_object_serialize() argument
233 * cache or where we've already serialized the cache once. in vk_pipeline_cache_object_serialize()
244 vk_logw(VK_LOG_OBJS(cache), in vk_pipeline_cache_object_serialize()
245 "Failed to serialize pipeline cache object"); in vk_pipeline_cache_object_serialize()
251 vk_logw(VK_LOG_OBJS(cache), in vk_pipeline_cache_object_serialize()
257 vk_logw(VK_LOG_OBJS(cache), in vk_pipeline_cache_object_serialize()
258 "Insufficient memory for pipeline cache data"); in vk_pipeline_cache_object_serialize()
269 vk_pipeline_cache_object_deserialize(struct vk_pipeline_cache *cache, in vk_pipeline_cache_object_deserialize() argument
278 vk_logw(VK_LOG_OBJS(cache), in vk_pipeline_cache_object_deserialize()
279 "Pipeline cache object cannot be deserialized"); in vk_pipeline_cache_object_deserialize()
287 ops->deserialize(cache->base.device, key_data, key_size, &reader); in vk_pipeline_cache_object_deserialize()
290 vk_logw(VK_LOG_OBJS(cache), in vk_pipeline_cache_object_deserialize()
291 "Deserializing pipeline cache object failed"); in vk_pipeline_cache_object_deserialize()
296 assert(object->device == cache->base.device); in vk_pipeline_cache_object_deserialize()
306 vk_pipeline_cache_lookup_object(struct vk_pipeline_cache *cache, in vk_pipeline_cache_lookup_object() argument
325 if (cache != NULL && cache->object_cache != NULL) { in vk_pipeline_cache_lookup_object()
326 vk_pipeline_cache_lock(cache); in vk_pipeline_cache_lookup_object()
328 _mesa_set_search_pre_hashed(cache->object_cache, hash, &key); in vk_pipeline_cache_lookup_object()
334 vk_pipeline_cache_unlock(cache); in vk_pipeline_cache_lookup_object()
339 struct disk_cache *disk_cache = cache->base.device->physical->disk_cache; in vk_pipeline_cache_lookup_object()
340 if (disk_cache != NULL && cache->object_cache != NULL) { in vk_pipeline_cache_lookup_object()
347 object = vk_pipeline_cache_object_deserialize(cache, in vk_pipeline_cache_lookup_object()
353 return vk_pipeline_cache_add_object(cache, object); in vk_pipeline_cache_lookup_object()
358 /* No disk cache or not found in the disk cache */ in vk_pipeline_cache_lookup_object()
370 vk_pipeline_cache_object_deserialize(cache, in vk_pipeline_cache_lookup_object()
376 vk_pipeline_cache_remove_object(cache, hash, object); in vk_pipeline_cache_lookup_object()
380 object = vk_pipeline_cache_replace_object(cache, hash, object, in vk_pipeline_cache_lookup_object()
390 vk_pipeline_cache_add_object(struct vk_pipeline_cache *cache, in vk_pipeline_cache_add_object() argument
395 if (cache->object_cache == NULL) in vk_pipeline_cache_add_object()
400 vk_pipeline_cache_lock(cache); in vk_pipeline_cache_add_object()
403 _mesa_set_search_or_add_pre_hashed(cache->object_cache, in vk_pipeline_cache_add_object()
410 /* The cache now owns a reference */ in vk_pipeline_cache_add_object()
413 vk_pipeline_cache_unlock(cache); in vk_pipeline_cache_add_object()
419 /* If it wasn't in the object cache, it might not be in the disk cache in vk_pipeline_cache_add_object()
424 struct disk_cache *disk_cache = cache->base.device->physical->disk_cache; in vk_pipeline_cache_add_object()
446 vk_pipeline_cache_lookup_nir(struct vk_pipeline_cache *cache, in vk_pipeline_cache_lookup_nir() argument
452 vk_pipeline_cache_lookup_object(cache, key_data, key_size, in vk_pipeline_cache_lookup_nir()
475 vk_pipeline_cache_add_nir(struct vk_pipeline_cache *cache, in vk_pipeline_cache_add_nir() argument
484 vk_logw(VK_LOG_OBJS(cache), "Ran out of memory serializing NIR shader"); in vk_pipeline_cache_add_nir()
490 raw_data_object_create(cache->base.device, in vk_pipeline_cache_add_nir()
496 vk_pipeline_cache_add_object(cache, &data_obj->base); in vk_pipeline_cache_add_nir()
532 vk_pipeline_cache_load(struct vk_pipeline_cache *cache, in vk_pipeline_cache_load() argument
544 if (memcmp(&header, &cache->header, sizeof(header)) != 0) in vk_pipeline_cache_load()
558 find_ops_for_type(cache->base.device->physical, type); in vk_pipeline_cache_load()
561 vk_pipeline_cache_object_deserialize(cache, in vk_pipeline_cache_load()
567 object = vk_pipeline_cache_add_object(cache, object); in vk_pipeline_cache_load()
580 struct vk_pipeline_cache *cache; in vk_pipeline_cache_create() local
587 cache = vk_object_zalloc(device, pAllocator, sizeof(*cache), in vk_pipeline_cache_create()
589 if (cache == NULL) in vk_pipeline_cache_create()
592 cache->flags = pCreateInfo->flags; in vk_pipeline_cache_create()
598 cache->header = (struct vk_pipeline_cache_header) { in vk_pipeline_cache_create()
604 memcpy(cache->header.uuid, pdevice_props.pipelineCacheUUID, VK_UUID_SIZE); in vk_pipeline_cache_create()
606 simple_mtx_init(&cache->lock, mtx_plain); in vk_pipeline_cache_create()
610 cache->object_cache = _mesa_set_create(NULL, object_key_hash, in vk_pipeline_cache_create()
614 if (cache->object_cache && pCreateInfo->initialDataSize > 0) { in vk_pipeline_cache_create()
615 vk_pipeline_cache_load(cache, pCreateInfo->pInitialData, in vk_pipeline_cache_create()
619 return cache; in vk_pipeline_cache_create()
629 vk_pipeline_cache_destroy(struct vk_pipeline_cache *cache, in vk_pipeline_cache_destroy() argument
632 if (cache->object_cache) in vk_pipeline_cache_destroy()
633 _mesa_set_destroy(cache->object_cache, object_unref_cb); in vk_pipeline_cache_destroy()
634 simple_mtx_destroy(&cache->lock); in vk_pipeline_cache_destroy()
635 vk_object_free(cache->base.device, pAllocator, cache); in vk_pipeline_cache_destroy()
645 struct vk_pipeline_cache *cache; in vk_common_CreatePipelineCache() local
650 cache = vk_pipeline_cache_create(device, &info, pAllocator); in vk_common_CreatePipelineCache()
651 if (cache == NULL) in vk_common_CreatePipelineCache()
654 *pPipelineCache = vk_pipeline_cache_to_handle(cache); in vk_common_CreatePipelineCache()
664 VK_FROM_HANDLE(vk_pipeline_cache, cache, pipelineCache); in vk_common_DestroyPipelineCache()
666 if (cache == NULL) in vk_common_DestroyPipelineCache()
669 assert(cache->base.device == vk_device_from_handle(device)); in vk_common_DestroyPipelineCache()
670 vk_pipeline_cache_destroy(cache, pAllocator); in vk_common_DestroyPipelineCache()
680 VK_FROM_HANDLE(vk_pipeline_cache, cache, pipelineCache); in vk_common_GetPipelineCacheData()
689 blob_write_bytes(&blob, &cache->header, sizeof(cache->header)); in vk_common_GetPipelineCacheData()
699 vk_pipeline_cache_lock(cache); in vk_common_GetPipelineCacheData()
702 if (cache->object_cache != NULL) { in vk_common_GetPipelineCacheData()
703 set_foreach(cache->object_cache, entry) { in vk_common_GetPipelineCacheData()
720 if (!vk_pipeline_cache_object_serialize(cache, object, in vk_common_GetPipelineCacheData()
740 vk_pipeline_cache_unlock(cache); in vk_common_GetPipelineCacheData()