diff options
author | Brian Paul <[email protected]> | 2009-12-10 14:55:28 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2009-12-10 14:55:28 -0700 |
commit | 6d810e5a7b082b9769a4ede4661536ae0e070dd2 (patch) | |
tree | a29c1b1d0fa481537f92b14cac3523b07b8b6195 /src/gallium/drivers | |
parent | a67f39810b5c88367ae2a9ee564b1a740b27601b (diff) |
llvmpipe: simplify llvmpipe_set_framebuffer_state()
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_state_surface.c | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_state_surface.c b/src/gallium/drivers/llvmpipe/lp_state_surface.c index 3eff40e3f19..0263f2a624a 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_surface.c +++ b/src/gallium/drivers/llvmpipe/lp_state_surface.c @@ -28,6 +28,8 @@ /* Authors: Keith Whitwell <[email protected]> */ +#include "pipe/p_state.h" +#include "util/u_surface.h" #include "lp_context.h" #include "lp_state.h" #include "lp_surface.h" @@ -44,27 +46,12 @@ llvmpipe_set_framebuffer_state(struct pipe_context *pipe, const struct pipe_framebuffer_state *fb) { struct llvmpipe_context *lp = llvmpipe_context(pipe); - uint i; - boolean dirty = FALSE; - for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) { - if (lp->framebuffer.cbufs[i] != fb->cbufs[i]) { - pipe_surface_reference(&lp->framebuffer.cbufs[i], fb->cbufs[i]); - dirty = TRUE; - } - } + boolean changed = util_framebuffer_state_equal(&lp->framebuffer, fb); - if (lp->framebuffer.nr_cbufs != fb->nr_cbufs) { - dirty = TRUE; - lp->framebuffer.nr_cbufs = fb->nr_cbufs; - } + if (changed) { - /* zbuf changing? */ - if (lp->framebuffer.zsbuf != fb->zsbuf) { - dirty = TRUE; - - /* assign new */ - pipe_surface_reference(&lp->framebuffer.zsbuf, fb->zsbuf); + util_copy_framebuffer_state(&lp->framebuffer, fb); /* Tell draw module how deep the Z/depth buffer is */ if (lp->framebuffer.zsbuf) { @@ -80,9 +67,7 @@ llvmpipe_set_framebuffer_state(struct pipe_context *pipe, } draw_set_mrd(lp->draw, mrd); } - } - if (dirty) { lp_setup_bind_framebuffer( lp->setup, fb ); lp->dirty |= LP_NEW_FRAMEBUFFER; |