Mesa (lp-binning): llvmpipe: simplify llvmpipe_set_framebuffer_state()
Brian Paul
brianp at kemper.freedesktop.org
Thu Dec 10 21:56:53 UTC 2009
Module: Mesa
Branch: lp-binning
Commit: 6d810e5a7b082b9769a4ede4661536ae0e070dd2
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d810e5a7b082b9769a4ede4661536ae0e070dd2
Author: Brian Paul <brianp at vmware.com>
Date: Thu Dec 10 14:55:28 2009 -0700
llvmpipe: simplify llvmpipe_set_framebuffer_state()
---
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 3eff40e..0263f2a 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 <keith at tungstengraphics.com>
*/
+#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;
More information about the mesa-commit
mailing list