diff options
Diffstat (limited to 'src/gallium')
| -rw-r--r-- | src/gallium/drivers/softpipe/sp_context.c | 9 | ||||
| -rw-r--r-- | src/gallium/drivers/softpipe/sp_state_surface.c | 4 | 
2 files changed, 9 insertions, 4 deletions
| diff --git a/src/gallium/drivers/softpipe/sp_context.c b/src/gallium/drivers/softpipe/sp_context.c index 86df320ea8..b4650c0dc5 100644 --- a/src/gallium/drivers/softpipe/sp_context.c +++ b/src/gallium/drivers/softpipe/sp_context.c @@ -105,12 +105,17 @@ static void softpipe_destroy( struct pipe_context *pipe )        softpipe->quad[i].output->destroy( softpipe->quad[i].output );     } -   for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) +   for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) {        sp_destroy_tile_cache(softpipe->cbuf_cache[i]); +      pipe_surface_reference(&softpipe->framebuffer.cbufs[i], NULL); +   }     sp_destroy_tile_cache(softpipe->zsbuf_cache); +   pipe_surface_reference(&softpipe->framebuffer.zsbuf, NULL); -   for (i = 0; i < PIPE_MAX_SAMPLERS; i++) +   for (i = 0; i < PIPE_MAX_SAMPLERS; i++) {        sp_destroy_tile_cache(softpipe->tex_cache[i]); +      pipe_texture_reference(&softpipe->texture[i], NULL); +   }     for (i = 0; i < Elements(softpipe->constants); i++) {        if (softpipe->constants[i].buffer) { diff --git a/src/gallium/drivers/softpipe/sp_state_surface.c b/src/gallium/drivers/softpipe/sp_state_surface.c index 7c06d864a7..181bff8f75 100644 --- a/src/gallium/drivers/softpipe/sp_state_surface.c +++ b/src/gallium/drivers/softpipe/sp_state_surface.c @@ -56,7 +56,7 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,           sp_flush_tile_cache(sp, sp->cbuf_cache[i]);           /* assign new */ -         sp->framebuffer.cbufs[i] = fb->cbufs[i]; +         pipe_surface_reference(&sp->framebuffer.cbufs[i], fb->cbufs[i]);           /* update cache */           sp_tile_cache_set_surface(sp->cbuf_cache[i], fb->cbufs[i]); @@ -71,7 +71,7 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,        sp_flush_tile_cache(sp, sp->zsbuf_cache);        /* assign new */ -      sp->framebuffer.zsbuf = fb->zsbuf; +      pipe_surface_reference(&sp->framebuffer.zsbuf, fb->zsbuf);        /* update cache */        sp_tile_cache_set_surface(sp->zsbuf_cache, fb->zsbuf); | 
