Lines Matching refs:cache

82 rehash(struct gl_program_cache *cache)
88 cache->last = NULL;
90 size = cache->size * 3;
94 for (i = 0; i < cache->size; i++)
95 for (c = cache->items[i]; c; c = next) {
101 free(cache->items);
102 cache->items = items;
103 cache->size = size;
108 clear_cache(struct gl_context *ctx, struct gl_program_cache *cache,
114 cache->last = NULL;
116 for (i = 0; i < cache->size; i++) {
117 for (c = cache->items[i]; c; c = next) {
129 cache->items[i] = NULL;
133 cache->n_items = 0;
141 struct gl_program_cache *cache = CALLOC_STRUCT(gl_program_cache);
142 if (cache) {
143 cache->size = 17;
144 cache->items = (struct cache_item **)
145 calloc(1, cache->size * sizeof(struct cache_item));
146 if (!cache->items) {
147 free(cache);
151 return cache;
156 _mesa_delete_program_cache(struct gl_context *ctx, struct gl_program_cache *cache)
158 clear_cache(ctx, cache, GL_FALSE);
159 free(cache->items);
160 free(cache);
165 struct gl_program_cache *cache)
167 clear_cache(ctx, cache, GL_TRUE);
168 free(cache->items);
169 free(cache);
174 _mesa_search_program_cache(struct gl_program_cache *cache,
177 if (cache->last &&
178 memcmp(cache->last->key, key, keysize) == 0) {
179 return cache->last->program;
185 for (c = cache->items[hash % cache->size]; c; c = c->next) {
187 cache->last = c;
199 struct gl_program_cache *cache,
213 if (cache->n_items > cache->size * 1.5) {
214 if (cache->size < 1000)
215 rehash(cache);
217 clear_cache(ctx, cache, GL_FALSE);
220 cache->n_items++;
221 c->next = cache->items[hash % cache->size];
222 cache->items[hash % cache->size] = c;
227 struct gl_program_cache *cache,
241 if (cache->n_items > cache->size * 1.5) {
242 if (cache->size < 1000)
243 rehash(cache);
245 clear_cache(ctx, cache, GL_TRUE);
248 cache->n_items++;
249 c->next = cache->items[hash % cache->size];
250 cache->items[hash % cache->size] = c;