Mesa (perrtblend): mesa/st: code cleanups for new blend functionality

Roland Scheidegger sroland at kemper.freedesktop.org
Tue Jan 26 14:37:05 UTC 2010


Module: Mesa
Branch: perrtblend
Commit: 9bc80ff17496feda3b47cf40e577976237f87957
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9bc80ff17496feda3b47cf40e577976237f87957

Author: Roland Scheidegger <sroland at vmware.com>
Date:   Tue Jan 26 15:35:31 2010 +0100

mesa/st: code cleanups for new blend functionality

minor code changes, style and comment fixes

---

 src/mesa/state_tracker/st_atom_blend.c |   32 +++++++++++++++++++++++---------
 1 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/src/mesa/state_tracker/st_atom_blend.c b/src/mesa/state_tracker/st_atom_blend.c
index 809b10d..1511b88 100644
--- a/src/mesa/state_tracker/st_atom_blend.c
+++ b/src/mesa/state_tracker/st_atom_blend.c
@@ -152,17 +152,33 @@ translate_logicop(GLenum logicop)
    }
 }
 
-static boolean
-colormask_perrt(GLcontext *ctx)
+/**
+ * Figure out if colormasks are different per rt.
+ */
+static GLboolean
+colormask_per_rt(GLcontext *ctx)
 {
-   /* XXX this is ugly beyond belief */
+   /* a bit suboptimal have to compare lots of values */
    unsigned i;
    for (i = 1; i < ctx->Const.MaxDrawBuffers; i++) {
-      if (!TEST_EQ_4V(ctx->Color.ColorMask[0], ctx->Color.ColorMask[i])) {
-         return true;
+      if (memcmp(ctx->Color.ColorMask[0], ctx->Color.ColorMask[i], 4)) {
+         return GL_TRUE;
       }
    }
-   return false;
+   return GL_FALSE;
+}
+
+/**
+ * Figure out if blend enables are different per rt.
+ */
+static GLboolean
+blend_per_rt(GLcontext *ctx)
+{
+   if (ctx->Color.BlendEnabled &&
+      (ctx->Color.BlendEnabled != ((1 << ctx->Const.MaxDrawBuffers) - 1))) {
+      return GL_TRUE;
+   }
+   return GL_FALSE;
 }
 
 static void 
@@ -174,9 +190,7 @@ update_blend( struct st_context *st )
 
    memset(blend, 0, sizeof(*blend));
 
-   if ((st->ctx->Color.BlendEnabled &&
-      (st->ctx->Color.BlendEnabled != ((1 << st->ctx->Const.MaxDrawBuffers) - 1))) ||
-      colormask_perrt(st->ctx)) {
+   if (blend_per_rt(st->ctx) || colormask_per_rt(st->ctx)) {
       num_state = st->ctx->Const.MaxDrawBuffers;
       blend->independent_blend_enable = 1;
    }




More information about the mesa-commit mailing list