Mesa (lp-binning): llvmpipe: simplify llvmpipe_set_framebuffer_state()

Brian Paul brianp at kemper.freedesktop.org
Thu Dec 10 13:56:53 PST 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