mesa/st: code cleanups for new blend functionality
authorRoland Scheidegger <sroland@vmware.com>
Tue, 26 Jan 2010 14:35:31 +0000 (15:35 +0100)
committerRoland Scheidegger <sroland@vmware.com>
Tue, 26 Jan 2010 14:35:31 +0000 (15:35 +0100)
minor code changes, style and comment fixes

src/mesa/state_tracker/st_atom_blend.c

index 809b10d4799a4671a2d3269c3ed060ba0cead256..1511b88dd1fd1233166d5ea67d7cd7b0c7928105 100644 (file)
@@ -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;
    }