From 6b65685def525a8023ee936e82e53af2bc4e38b2 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Thu, 8 Oct 2009 16:33:12 +0100 Subject: llvmpipe: remove tex tile cache and related code --- src/gallium/drivers/llvmpipe/lp_state_surface.c | 41 +++++++------------------ 1 file changed, 11 insertions(+), 30 deletions(-) (limited to 'src/gallium/drivers/llvmpipe/lp_state_surface.c') diff --git a/src/gallium/drivers/llvmpipe/lp_state_surface.c b/src/gallium/drivers/llvmpipe/lp_state_surface.c index c06ce8b75c..06560335d7 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_surface.c +++ b/src/gallium/drivers/llvmpipe/lp_state_surface.c @@ -31,16 +31,12 @@ #include "lp_context.h" #include "lp_state.h" #include "lp_surface.h" -#include "lp_tile_cache.h" #include "draw/draw_context.h" /** - * XXX this might get moved someday * Set the framebuffer surface info: color buffers, zbuffer, stencil buffer. - * Here, we flush the old surfaces and update the tile cache to point to the new - * surfaces. */ void llvmpipe_set_framebuffer_state(struct pipe_context *pipe, @@ -48,38 +44,23 @@ llvmpipe_set_framebuffer_state(struct pipe_context *pipe, { struct llvmpipe_context *lp = llvmpipe_context(pipe); uint i; + boolean dirty = FALSE; for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) { - /* check if changing cbuf */ if (lp->framebuffer.cbufs[i] != fb->cbufs[i]) { - /* flush old */ - lp_tile_cache_map_transfers(lp->cbuf_cache[i]); - lp_flush_tile_cache(lp->cbuf_cache[i]); - - /* assign new */ pipe_surface_reference(&lp->framebuffer.cbufs[i], fb->cbufs[i]); - - /* update cache */ - lp_tile_cache_set_surface(lp->cbuf_cache[i], fb->cbufs[i]); + dirty = TRUE; } } - lp->framebuffer.nr_cbufs = fb->nr_cbufs; + if (lp->framebuffer.nr_cbufs != fb->nr_cbufs) { + dirty = TRUE; + lp->framebuffer.nr_cbufs = fb->nr_cbufs; + } /* zbuf changing? */ if (lp->framebuffer.zsbuf != fb->zsbuf) { - - if(lp->zsbuf_transfer) { - struct pipe_screen *screen = pipe->screen; - - if(lp->zsbuf_map) { - screen->transfer_unmap(screen, lp->zsbuf_transfer); - lp->zsbuf_map = NULL; - } - - screen->tex_transfer_destroy(lp->zsbuf_transfer); - lp->zsbuf_transfer = NULL; - } + dirty = TRUE; /* assign new */ pipe_surface_reference(&lp->framebuffer.zsbuf, fb->zsbuf); @@ -100,8 +81,8 @@ llvmpipe_set_framebuffer_state(struct pipe_context *pipe, } } - lp->framebuffer.width = fb->width; - lp->framebuffer.height = fb->height; - - lp->dirty |= LP_NEW_FRAMEBUFFER; + if (dirty) { + lp_setup_set_framebuffer( llvmpipe->setup, fb ); + lp->dirty |= LP_NEW_FRAMEBUFFER; + } } -- cgit v1.2.3