• Home
  • Raw
  • Download

Lines Matching full:cache

12 vn_renderer_shmem_cache_dump(struct vn_renderer_shmem_cache *cache)  in vn_renderer_shmem_cache_dump()  argument
14 simple_mtx_lock(&cache->mutex); in vn_renderer_shmem_cache_dump()
16 vn_log(NULL, "dumping renderer shmem cache"); in vn_renderer_shmem_cache_dump()
17 vn_log(NULL, " cache skip: %d", cache->debug.cache_skip_count); in vn_renderer_shmem_cache_dump()
18 vn_log(NULL, " cache hit: %d", cache->debug.cache_hit_count); in vn_renderer_shmem_cache_dump()
19 vn_log(NULL, " cache miss: %d", cache->debug.cache_miss_count); in vn_renderer_shmem_cache_dump()
21 uint32_t bucket_mask = cache->bucket_mask; in vn_renderer_shmem_cache_dump()
24 const struct vn_renderer_shmem_bucket *bucket = &cache->buckets[idx]; in vn_renderer_shmem_cache_dump()
33 simple_mtx_unlock(&cache->mutex); in vn_renderer_shmem_cache_dump()
37 vn_renderer_shmem_cache_init(struct vn_renderer_shmem_cache *cache, in vn_renderer_shmem_cache_init() argument
41 /* cache->bucket_mask is 32-bit and u_bit_scan is used */ in vn_renderer_shmem_cache_init()
42 static_assert(ARRAY_SIZE(cache->buckets) <= 32, ""); in vn_renderer_shmem_cache_init()
44 cache->renderer = renderer; in vn_renderer_shmem_cache_init()
45 cache->destroy_func = destroy_func; in vn_renderer_shmem_cache_init()
47 simple_mtx_init(&cache->mutex, mtx_plain); in vn_renderer_shmem_cache_init()
49 for (uint32_t i = 0; i < ARRAY_SIZE(cache->buckets); i++) { in vn_renderer_shmem_cache_init()
50 struct vn_renderer_shmem_bucket *bucket = &cache->buckets[i]; in vn_renderer_shmem_cache_init()
54 cache->initialized = true; in vn_renderer_shmem_cache_init()
58 vn_renderer_shmem_cache_fini(struct vn_renderer_shmem_cache *cache) in vn_renderer_shmem_cache_fini() argument
60 if (!cache->initialized) in vn_renderer_shmem_cache_fini()
63 if (VN_DEBUG(CACHE)) in vn_renderer_shmem_cache_fini()
64 vn_renderer_shmem_cache_dump(cache); in vn_renderer_shmem_cache_fini()
66 while (cache->bucket_mask) { in vn_renderer_shmem_cache_fini()
67 const int idx = u_bit_scan(&cache->bucket_mask); in vn_renderer_shmem_cache_fini()
68 struct vn_renderer_shmem_bucket *bucket = &cache->buckets[idx]; in vn_renderer_shmem_cache_fini()
72 cache->destroy_func(cache->renderer, shmem); in vn_renderer_shmem_cache_fini()
75 simple_mtx_destroy(&cache->mutex); in vn_renderer_shmem_cache_fini()
79 choose_bucket(struct vn_renderer_shmem_cache *cache, in choose_bucket() argument
88 if (unlikely(idx >= ARRAY_SIZE(cache->buckets))) in choose_bucket()
92 return &cache->buckets[idx]; in choose_bucket()
97 struct vn_renderer_shmem_cache *cache, int64_t now) in vn_renderer_shmem_cache_remove_expired_locked() argument
99 uint32_t bucket_mask = cache->bucket_mask; in vn_renderer_shmem_cache_remove_expired_locked()
102 struct vn_renderer_shmem_bucket *bucket = &cache->buckets[idx]; in vn_renderer_shmem_cache_remove_expired_locked()
116 cache->destroy_func(cache->renderer, shmem); in vn_renderer_shmem_cache_remove_expired_locked()
122 vn_renderer_shmem_cache_add(struct vn_renderer_shmem_cache *cache, in vn_renderer_shmem_cache_add() argument
129 choose_bucket(cache, shmem->mmap_size, &idx); in vn_renderer_shmem_cache_add()
136 simple_mtx_lock(&cache->mutex); in vn_renderer_shmem_cache_add()
138 vn_renderer_shmem_cache_remove_expired_locked(cache, now); in vn_renderer_shmem_cache_add()
141 cache->bucket_mask |= 1 << idx; in vn_renderer_shmem_cache_add()
143 simple_mtx_unlock(&cache->mutex); in vn_renderer_shmem_cache_add()
149 vn_renderer_shmem_cache_get(struct vn_renderer_shmem_cache *cache, in vn_renderer_shmem_cache_get() argument
153 struct vn_renderer_shmem_bucket *bucket = choose_bucket(cache, size, &idx); in vn_renderer_shmem_cache_get()
155 VN_TRACE_SCOPE("shmem cache skip"); in vn_renderer_shmem_cache_get()
156 simple_mtx_lock(&cache->mutex); in vn_renderer_shmem_cache_get()
157 cache->debug.cache_skip_count++; in vn_renderer_shmem_cache_get()
158 simple_mtx_unlock(&cache->mutex); in vn_renderer_shmem_cache_get()
164 simple_mtx_lock(&cache->mutex); in vn_renderer_shmem_cache_get()
165 if (cache->bucket_mask & (1 << idx)) { in vn_renderer_shmem_cache_get()
172 cache->bucket_mask &= ~(1 << idx); in vn_renderer_shmem_cache_get()
174 cache->debug.cache_hit_count++; in vn_renderer_shmem_cache_get()
176 VN_TRACE_SCOPE("shmem cache miss"); in vn_renderer_shmem_cache_get()
177 cache->debug.cache_miss_count++; in vn_renderer_shmem_cache_get()
179 simple_mtx_unlock(&cache->mutex); in vn_renderer_shmem_cache_get()