i965: When an RB gets a new region, clear the old from the state cache.

This prevents memory usage explosion in blender due to the state cache
hanging on to old fake frontbuffer regions.  Sigh at blender still
using frontbuffer rendering.

Bug #24119.
This commit is contained in:
Eric Anholt
2010-05-04 22:02:18 -07:00
parent 453f0b1f24
commit ce914fff08
4 changed files with 16 additions and 6 deletions

View File

@@ -42,7 +42,9 @@
#include "intel_fbo.h"
#include "intel_mipmap_tree.h"
#include "intel_regions.h"
#ifndef I915
#include "brw_state.h"
#endif
#define FILE_DEBUG_FLAG DEBUG_FBO
@@ -280,7 +282,8 @@ intel_nop_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
void
intel_renderbuffer_set_region(struct intel_renderbuffer *rb,
intel_renderbuffer_set_region(struct intel_context *intel,
struct intel_renderbuffer *rb,
struct intel_region *region)
{
struct intel_region *old;
@@ -288,6 +291,12 @@ intel_renderbuffer_set_region(struct intel_renderbuffer *rb,
old = rb->region;
rb->region = NULL;
intel_region_reference(&rb->region, region);
#ifndef I915
if (old) {
brw_state_cache_bo_delete(&brw_context(&intel->ctx)->surface_cache,
old->buffer);
}
#endif
intel_region_release(&old);
}