diff options
author | Eric Anholt <eric@anholt.net> | 2012-08-26 21:19:05 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2012-09-07 08:29:48 -0700 |
commit | f144b78dfbb97a70121be6f20d10bad8111267e3 (patch) | |
tree | e8e9f1d63ba522ce8d3f02559ea29111403c6c3b /src/mesa/drivers/dri/i965/brw_state_cache.c | |
parent | 99596cba7828af67bfcd0f2dafcb44b65d39d239 (diff) | |
download | external_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.c | 5 |
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); } |