• Home
  • Raw
  • Download

Lines Matching full:cache

54 cache_dump_stats(struct v3dv_pipeline_cache *cache)  in cache_dump_stats()  argument
59 fprintf(stderr, " NIR cache entries: %d\n", cache->nir_stats.count); in cache_dump_stats()
60 fprintf(stderr, " NIR cache miss count: %d\n", cache->nir_stats.miss); in cache_dump_stats()
61 fprintf(stderr, " NIR cache hit count: %d\n", cache->nir_stats.hit); in cache_dump_stats()
63 fprintf(stderr, " variant cache entries: %d\n", cache->variant_stats.count); in cache_dump_stats()
64 fprintf(stderr, " variant cache miss count: %d\n", cache->variant_stats.miss); in cache_dump_stats()
65 fprintf(stderr, " variant cache hit count: %d\n", cache->variant_stats.hit); in cache_dump_stats()
70 struct v3dv_pipeline_cache *cache, in v3dv_pipeline_cache_upload_nir() argument
74 if (!cache || !cache->nir_cache) in v3dv_pipeline_cache_upload_nir()
77 if (cache->nir_stats.count > V3DV_MAX_PIPELINE_CACHE_ENTRIES) in v3dv_pipeline_cache_upload_nir()
80 pthread_mutex_lock(&cache->mutex); in v3dv_pipeline_cache_upload_nir()
82 _mesa_hash_table_search(cache->nir_cache, sha1_key); in v3dv_pipeline_cache_upload_nir()
83 pthread_mutex_unlock(&cache->mutex); in v3dv_pipeline_cache_upload_nir()
96 pthread_mutex_lock(&cache->mutex); in v3dv_pipeline_cache_upload_nir()
101 entry = _mesa_hash_table_search(cache->nir_cache, sha1_key); in v3dv_pipeline_cache_upload_nir()
104 pthread_mutex_unlock(&cache->mutex); in v3dv_pipeline_cache_upload_nir()
109 ralloc_size(cache->nir_cache, sizeof(*snir) + blob.size); in v3dv_pipeline_cache_upload_nir()
116 cache->nir_stats.count++; in v3dv_pipeline_cache_upload_nir()
120 fprintf(stderr, "pipeline cache %p, new nir entry %s\n", cache, sha1buf); in v3dv_pipeline_cache_upload_nir()
121 cache_dump_stats(cache); in v3dv_pipeline_cache_upload_nir()
124 _mesa_hash_table_insert(cache->nir_cache, snir->sha1_key, snir); in v3dv_pipeline_cache_upload_nir()
126 pthread_mutex_unlock(&cache->mutex); in v3dv_pipeline_cache_upload_nir()
131 struct v3dv_pipeline_cache *cache, in v3dv_pipeline_cache_search_for_nir() argument
135 if (!cache || !cache->nir_cache) in v3dv_pipeline_cache_search_for_nir()
142 fprintf(stderr, "pipeline cache %p, search for nir %s\n", cache, sha1buf); in v3dv_pipeline_cache_search_for_nir()
147 pthread_mutex_lock(&cache->mutex); in v3dv_pipeline_cache_search_for_nir()
149 _mesa_hash_table_search(cache->nir_cache, sha1_key); in v3dv_pipeline_cache_search_for_nir()
152 pthread_mutex_unlock(&cache->mutex); in v3dv_pipeline_cache_search_for_nir()
160 * after cache creation in v3dv_pipeline_cache_search_for_nir()
166 cache->nir_stats.hit++; in v3dv_pipeline_cache_search_for_nir()
167 cache_dump_stats(cache); in v3dv_pipeline_cache_search_for_nir()
172 cache->nir_stats.miss++; in v3dv_pipeline_cache_search_for_nir()
173 cache_dump_stats(cache); in v3dv_pipeline_cache_search_for_nir()
179 v3dv_pipeline_cache_init(struct v3dv_pipeline_cache *cache, in v3dv_pipeline_cache_init() argument
183 cache->_loader_data.loaderMagic = ICD_LOADER_MAGIC; in v3dv_pipeline_cache_init()
185 cache->device = device; in v3dv_pipeline_cache_init()
186 pthread_mutex_init(&cache->mutex, NULL); in v3dv_pipeline_cache_init()
189 cache->nir_cache = _mesa_hash_table_create(NULL, sha1_hash_func, in v3dv_pipeline_cache_init()
191 cache->nir_stats.miss = 0; in v3dv_pipeline_cache_init()
192 cache->nir_stats.hit = 0; in v3dv_pipeline_cache_init()
193 cache->nir_stats.count = 0; in v3dv_pipeline_cache_init()
195 cache->variant_cache = _mesa_hash_table_create(NULL, sha1_hash_func, in v3dv_pipeline_cache_init()
197 cache->variant_stats.miss = 0; in v3dv_pipeline_cache_init()
198 cache->variant_stats.hit = 0; in v3dv_pipeline_cache_init()
199 cache->variant_stats.count = 0; in v3dv_pipeline_cache_init()
201 cache->nir_cache = NULL; in v3dv_pipeline_cache_init()
202 cache->variant_cache = NULL; in v3dv_pipeline_cache_init()
209 struct v3dv_pipeline_cache *cache, in v3dv_pipeline_cache_search_for_variant() argument
212 if (!cache || !cache->variant_cache) in v3dv_pipeline_cache_search_for_variant()
219 fprintf(stderr, "pipeline cache %p, search variant with key %s\n", cache, sha1buf); in v3dv_pipeline_cache_search_for_variant()
222 pthread_mutex_lock(&cache->mutex); in v3dv_pipeline_cache_search_for_variant()
225 _mesa_hash_table_search(cache->variant_cache, sha1_key); in v3dv_pipeline_cache_search_for_variant()
231 cache->variant_stats.hit++; in v3dv_pipeline_cache_search_for_variant()
234 cache_dump_stats(cache); in v3dv_pipeline_cache_search_for_variant()
240 pthread_mutex_unlock(&cache->mutex); in v3dv_pipeline_cache_search_for_variant()
244 cache->variant_stats.miss++; in v3dv_pipeline_cache_search_for_variant()
247 cache_dump_stats(cache); in v3dv_pipeline_cache_search_for_variant()
250 pthread_mutex_unlock(&cache->mutex); in v3dv_pipeline_cache_search_for_variant()
256 struct v3dv_pipeline_cache *cache, in v3dv_pipeline_cache_upload_variant() argument
259 if (!cache || !cache->variant_cache) in v3dv_pipeline_cache_upload_variant()
262 if (cache->variant_stats.count > V3DV_MAX_PIPELINE_CACHE_ENTRIES) in v3dv_pipeline_cache_upload_variant()
265 pthread_mutex_lock(&cache->mutex); in v3dv_pipeline_cache_upload_variant()
267 _mesa_hash_table_search(cache->variant_cache, variant->variant_sha1); in v3dv_pipeline_cache_upload_variant()
270 pthread_mutex_unlock(&cache->mutex); in v3dv_pipeline_cache_upload_variant()
275 _mesa_hash_table_insert(cache->variant_cache, variant->variant_sha1, variant); in v3dv_pipeline_cache_upload_variant()
276 cache->variant_stats.count++; in v3dv_pipeline_cache_upload_variant()
281 fprintf(stderr, "pipeline cache %p, new variant entry with key %s\n\t%p\n", in v3dv_pipeline_cache_upload_variant()
282 cache, sha1buf, variant); in v3dv_pipeline_cache_upload_variant()
283 cache_dump_stats(cache); in v3dv_pipeline_cache_upload_variant()
286 pthread_mutex_unlock(&cache->mutex); in v3dv_pipeline_cache_upload_variant()
290 serialized_nir_create_from_blob(struct v3dv_pipeline_cache *cache, in serialized_nir_create_from_blob() argument
300 ralloc_size(cache->nir_cache, sizeof(*snir) + snir_size); in serialized_nir_create_from_blob()
369 pipeline_cache_load(struct v3dv_pipeline_cache *cache, in pipeline_cache_load() argument
373 struct v3dv_device *device = cache->device; in pipeline_cache_load()
377 if (cache->variant_cache == NULL) in pipeline_cache_load()
404 serialized_nir_create_from_blob(cache, &blob); in pipeline_cache_load()
409 _mesa_hash_table_insert(cache->nir_cache, snir->sha1_key, snir); in pipeline_cache_load()
410 cache->nir_stats.count++; in pipeline_cache_load()
422 _mesa_hash_table_insert(cache->variant_cache, variant->variant_sha1, variant); in pipeline_cache_load()
423 cache->variant_stats.count++; in pipeline_cache_load()
427 fprintf(stderr, "pipeline cache %p, loaded %i nir shaders and " in pipeline_cache_load()
428 "%i variant entries\n", cache, nir_count, count); in pipeline_cache_load()
429 cache_dump_stats(cache); in pipeline_cache_load()
440 struct v3dv_pipeline_cache *cache; in v3dv_CreatePipelineCache() local
445 cache = vk_alloc2(&device->alloc, pAllocator, in v3dv_CreatePipelineCache()
446 sizeof(*cache), 8, in v3dv_CreatePipelineCache()
449 if (cache == NULL) in v3dv_CreatePipelineCache()
452 v3dv_pipeline_cache_init(cache, device, in v3dv_CreatePipelineCache()
456 pipeline_cache_load(cache, in v3dv_CreatePipelineCache()
461 *pPipelineCache = v3dv_pipeline_cache_to_handle(cache); in v3dv_CreatePipelineCache()
467 v3dv_pipeline_cache_finish(struct v3dv_pipeline_cache *cache) in v3dv_pipeline_cache_finish() argument
469 pthread_mutex_destroy(&cache->mutex); in v3dv_pipeline_cache_finish()
471 if (cache->nir_cache) { in v3dv_pipeline_cache_finish()
472 hash_table_foreach(cache->nir_cache, entry) in v3dv_pipeline_cache_finish()
475 _mesa_hash_table_destroy(cache->nir_cache, NULL); in v3dv_pipeline_cache_finish()
478 if (cache->variant_cache) { in v3dv_pipeline_cache_finish()
479 hash_table_foreach(cache->variant_cache, entry) { in v3dv_pipeline_cache_finish()
482 v3dv_shader_variant_unref(cache->device, variant); in v3dv_pipeline_cache_finish()
485 _mesa_hash_table_destroy(cache->variant_cache, NULL); in v3dv_pipeline_cache_finish()
496 V3DV_FROM_HANDLE(v3dv_pipeline_cache, cache, _cache); in v3dv_DestroyPipelineCache()
498 if (!cache) in v3dv_DestroyPipelineCache()
501 v3dv_pipeline_cache_finish(cache); in v3dv_DestroyPipelineCache()
503 vk_free2(&device->alloc, pAllocator, cache); in v3dv_DestroyPipelineCache()
530 * convenient to create and store on the cache, but requires to do a in v3dv_MergePipelineCaches()
547 fprintf(stderr, "pipeline cache %p, added nir entry %s " in v3dv_MergePipelineCaches()
548 "from pipeline cache %p\n", in v3dv_MergePipelineCaches()
569 fprintf(stderr, "pipeline cache %p, added variant entry %s " in v3dv_MergePipelineCaches()
570 "from pipeline cache %p\n", in v3dv_MergePipelineCaches()
614 V3DV_FROM_HANDLE(v3dv_pipeline_cache, cache, _cache); in v3dv_GetPipelineCacheData()
626 pthread_mutex_lock(&cache->mutex); in v3dv_GetPipelineCacheData()
642 pthread_mutex_unlock(&cache->mutex); in v3dv_GetPipelineCacheData()
646 if (cache->nir_cache) { in v3dv_GetPipelineCacheData()
647 hash_table_foreach(cache->nir_cache, entry) { in v3dv_GetPipelineCacheData()
658 pthread_mutex_unlock(&cache->mutex); in v3dv_GetPipelineCacheData()
673 pthread_mutex_unlock(&cache->mutex); in v3dv_GetPipelineCacheData()
677 if (cache->variant_cache) { in v3dv_GetPipelineCacheData()
678 hash_table_foreach(cache->variant_cache, entry) { in v3dv_GetPipelineCacheData()
685 pthread_mutex_unlock(&cache->mutex); in v3dv_GetPipelineCacheData()
701 assert(count <= cache->variant_stats.count); in v3dv_GetPipelineCacheData()
702 fprintf(stderr, "GetPipelineCacheData: serializing cache %p, " in v3dv_GetPipelineCacheData()
705 cache, nir_count, count, (uint32_t) *pDataSize); in v3dv_GetPipelineCacheData()
708 pthread_mutex_unlock(&cache->mutex); in v3dv_GetPipelineCacheData()