Lines Matching refs:cache
83 rehash(struct gl_program_cache *cache) in rehash() argument
89 cache->last = NULL; in rehash()
91 size = cache->size * 3; in rehash()
95 for (i = 0; i < cache->size; i++) in rehash()
96 for (c = cache->items[i]; c; c = next) { in rehash()
102 free(cache->items); in rehash()
103 cache->items = items; in rehash()
104 cache->size = size; in rehash()
109 clear_cache(struct gl_context *ctx, struct gl_program_cache *cache, in clear_cache() argument
115 cache->last = NULL; in clear_cache()
117 for (i = 0; i < cache->size; i++) { in clear_cache()
118 for (c = cache->items[i]; c; c = next) { in clear_cache()
130 cache->items[i] = NULL; in clear_cache()
134 cache->n_items = 0; in clear_cache()
142 struct gl_program_cache *cache = CALLOC_STRUCT(gl_program_cache); in _mesa_new_program_cache() local
143 if (cache) { in _mesa_new_program_cache()
144 cache->size = 17; in _mesa_new_program_cache()
145 cache->items = in _mesa_new_program_cache()
146 calloc(cache->size, sizeof(struct cache_item *)); in _mesa_new_program_cache()
147 if (!cache->items) { in _mesa_new_program_cache()
148 free(cache); in _mesa_new_program_cache()
152 return cache; in _mesa_new_program_cache()
157 _mesa_delete_program_cache(struct gl_context *ctx, struct gl_program_cache *cache) in _mesa_delete_program_cache() argument
159 clear_cache(ctx, cache, GL_FALSE); in _mesa_delete_program_cache()
160 free(cache->items); in _mesa_delete_program_cache()
161 free(cache); in _mesa_delete_program_cache()
166 struct gl_program_cache *cache) in _mesa_delete_shader_cache() argument
168 clear_cache(ctx, cache, GL_TRUE); in _mesa_delete_shader_cache()
169 free(cache->items); in _mesa_delete_shader_cache()
170 free(cache); in _mesa_delete_shader_cache()
175 _mesa_search_program_cache(struct gl_program_cache *cache, in _mesa_search_program_cache() argument
178 if (cache->last && in _mesa_search_program_cache()
179 cache->last->keysize == keysize && in _mesa_search_program_cache()
180 memcmp(cache->last->key, key, keysize) == 0) { in _mesa_search_program_cache()
181 return cache->last->program; in _mesa_search_program_cache()
187 for (c = cache->items[hash % cache->size]; c; c = c->next) { in _mesa_search_program_cache()
192 cache->last = c; in _mesa_search_program_cache()
204 struct gl_program_cache *cache, in _mesa_program_cache_insert() argument
219 if (cache->n_items > cache->size * 1.5) { in _mesa_program_cache_insert()
220 if (cache->size < 1000) in _mesa_program_cache_insert()
221 rehash(cache); in _mesa_program_cache_insert()
223 clear_cache(ctx, cache, GL_FALSE); in _mesa_program_cache_insert()
226 cache->n_items++; in _mesa_program_cache_insert()
227 c->next = cache->items[hash % cache->size]; in _mesa_program_cache_insert()
228 cache->items[hash % cache->size] = c; in _mesa_program_cache_insert()
233 struct gl_program_cache *cache, in _mesa_shader_cache_insert() argument
248 if (cache->n_items > cache->size * 1.5) { in _mesa_shader_cache_insert()
249 if (cache->size < 1000) in _mesa_shader_cache_insert()
250 rehash(cache); in _mesa_shader_cache_insert()
252 clear_cache(ctx, cache, GL_TRUE); in _mesa_shader_cache_insert()
255 cache->n_items++; in _mesa_shader_cache_insert()
256 c->next = cache->items[hash % cache->size]; in _mesa_shader_cache_insert()
257 cache->items[hash % cache->size] = c; in _mesa_shader_cache_insert()