[Mesa-dev] Mesa (master): i965: Double the size of the state cache.

Stéphane Marchesin stephane.marchesin at gmail.com
Mon Aug 27 15:00:59 PDT 2012


On Mon, Aug 27, 2012 at 2:24 PM, Kenneth Graunke
<kwg at kemper.freedesktop.org> wrote:
> Module: Mesa
> Branch: master
> Commit: 87cdefed405da1a57a006737297d20ba0c25fa1b
> URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=87cdefed405da1a57a006737297d20ba0c25fa1b
>
> Author: Kenneth Graunke <kenneth at whitecape.org>
> Date:   Sun Aug 26 00:07:56 2012 -0700
>
> i965: Double the size of the state cache.
>
> We probably want to do something more sophisticated here, but this at
> least makes it through L4D2 without dumping the program cache.
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> Reviewed-by: Eric Anholt <eric at anholt.net>
>
> ---
>
>  src/mesa/drivers/dri/i965/brw_state_cache.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_state_cache.c b/src/mesa/drivers/dri/i965/brw_state_cache.c
> index 57a5ee9..8823b22 100644
> --- a/src/mesa/drivers/dri/i965/brw_state_cache.c
> +++ b/src/mesa/drivers/dri/i965/brw_state_cache.c
> @@ -372,10 +372,10 @@ brw_clear_cache(struct brw_context *brw, struct brw_cache *cache)
>  void
>  brw_state_cache_check_size(struct brw_context *brw)
>  {
> -   /* un-tuned guess.  Each object is generally a page, so 1000 of them is 4 MB of
> +   /* un-tuned guess.  Each object is generally a page, so 2000 of them is 8 MB of

The problem is that this statement ("Each object is generally a page") is wrong.

A wm prog cache entry always contains prog_data as aux data.
brw_wm_prog_data has those two fields:
const float *param[MAX_UNIFORMS * 4]; /* should be: BRW_MAX_CURBE */
const float *pull_param[MAX_UNIFORMS * 4];

MAX_UNIFORMS is 4096. So in 64 bit, brw_wm_prog_data is more than 256k.

Therefore by doubling the cache, you are going from 256 MB to 512 MB,
not 4 MB to 8 MB. As far as I know, that cache is the biggest consumer
of memory in i965.

Stéphane


More information about the mesa-dev mailing list