summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_state_cache.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2012-08-26 21:19:05 -0700
committerEric Anholt <eric@anholt.net>2012-09-07 08:29:48 -0700
commitf144b78dfbb97a70121be6f20d10bad8111267e3 (patch)
treee8e9f1d63ba522ce8d3f02559ea29111403c6c3b /src/mesa/drivers/dri/i965/brw_state_cache.c
parent99596cba7828af67bfcd0f2dafcb44b65d39d239 (diff)
downloadexternal_mesa3d-f144b78dfbb97a70121be6f20d10bad8111267e3.zip
external_mesa3d-f144b78dfbb97a70121be6f20d10bad8111267e3.tar.gz
external_mesa3d-f144b78dfbb97a70121be6f20d10bad8111267e3.tar.bz2
i965: Make the param pointer arrays for the WM dynamically sized.
Saves 26.5MB of wasted memory allocation in the l4d2 demo. v2: Rebase on compare func change, fix comments. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (v1) Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_state_cache.c')
-rw-r--r--src/mesa/drivers/dri/i965/brw_state_cache.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_state_cache.c b/src/mesa/drivers/dri/i965/brw_state_cache.c
index 92b81c7..b8a2fc3 100644
--- a/src/mesa/drivers/dri/i965/brw_state_cache.c
+++ b/src/mesa/drivers/dri/i965/brw_state_cache.c
@@ -343,6 +343,7 @@ brw_init_caches(struct brw_context *brw)
cache->aux_compare[BRW_VS_PROG] = brw_vs_prog_data_compare;
cache->aux_compare[BRW_WM_PROG] = brw_wm_prog_data_compare;
+ cache->aux_free[BRW_WM_PROG] = brw_wm_prog_data_free;
}
static void
@@ -357,6 +358,10 @@ brw_clear_cache(struct brw_context *brw, struct brw_cache *cache)
for (i = 0; i < cache->size; i++) {
for (c = cache->items[i]; c; c = next) {
next = c->next;
+ if (cache->aux_free[c->cache_id]) {
+ const void *item_aux = c->key + c->key_size;
+ cache->aux_free[c->cache_id](item_aux);
+ }
free((void *)c->key);
free(c);
}