mesa: fix blend enable/disable calls in meta.c code
authorFrancis Galiegue <fgaliegue@gmail.com>
Sun, 3 Jan 2010 16:42:17 +0000 (09:42 -0700)
committerBrian Paul <brianp@vmware.com>
Sun, 3 Jan 2010 16:43:24 +0000 (09:43 -0700)
Fixes regression in some DRI drivers since the GL_EXT_draw_buffers2 changes.

Signed-off-by: Brian Paul <brianp@vmware.com>
src/mesa/drivers/common/meta.c

index 0676173..c4dbfa6 100644 (file)
@@ -336,9 +336,14 @@ _mesa_meta_begin(GLcontext *ctx, GLbitfield state)
    if (state & META_BLEND) {
       save->BlendEnabled = ctx->Color.BlendEnabled;
       if (ctx->Color.BlendEnabled) {
-         GLuint i;
-         for (i = 0; i < ctx->Const.MaxDrawBuffers; i++) {
-            _mesa_set_enablei(ctx, GL_BLEND, i, GL_FALSE);
+         if (ctx->Extensions.EXT_draw_buffers2) {
+            GLuint i;
+            for (i = 0; i < ctx->Const.MaxDrawBuffers; i++) {
+               _mesa_set_enablei(ctx, GL_BLEND, i, GL_FALSE);
+            }
+         }
+         else {
+            _mesa_set_enable(ctx, GL_BLEND, GL_FALSE);
          }
       }
       save->ColorLogicOpEnabled = ctx->Color.ColorLogicOpEnabled;
@@ -572,9 +577,14 @@ _mesa_meta_end(GLcontext *ctx)
 
    if (state & META_BLEND) {
       if (ctx->Color.BlendEnabled != save->BlendEnabled) {
-         GLuint i;
-         for (i = 0; i < ctx->Const.MaxDrawBuffers; i++) {
-            _mesa_set_enablei(ctx, GL_BLEND, i, (save->BlendEnabled >> i) & 1);
+         if (ctx->Extensions.EXT_draw_buffers2) {
+            GLuint i;
+            for (i = 0; i < ctx->Const.MaxDrawBuffers; i++) {
+               _mesa_set_enablei(ctx, GL_BLEND, i, (save->BlendEnabled >> i) & 1);
+            }
+         }
+         else {
+            _mesa_set_enable(ctx, GL_BLEND, (save->BlendEnabled & 1));
          }
       }
       if (ctx->Color.ColorLogicOpEnabled != save->ColorLogicOpEnabled)