Mesa (mesa_7_7_branch): svga: Fix PIPE_LOGICOP_INVERT.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Wed Jan 27 14:46:12 UTC 2010


Module: Mesa
Branch: mesa_7_7_branch
Commit: ac597f5acc8886a0c44aaa4f2484f9d569ae5d6d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ac597f5acc8886a0c44aaa4f2484f9d569ae5d6d

Author: José Fonseca <jfonseca at vmware.com>
Date:   Wed Jan 27 14:45:56 2010 +0000

svga: Fix PIPE_LOGICOP_INVERT.

Actually the current XOR implementation is an INVERT.

This fixes rectangle selection in Maya.

---

 src/gallium/drivers/svga/svga_pipe_blend.c |    7 +------
 1 files changed, 1 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/svga/svga_pipe_blend.c b/src/gallium/drivers/svga/svga_pipe_blend.c
index 3ad3f97..c0cbda3 100644
--- a/src/gallium/drivers/svga/svga_pipe_blend.c
+++ b/src/gallium/drivers/svga/svga_pipe_blend.c
@@ -92,6 +92,7 @@ svga_create_blend_state(struct pipe_context *pipe,
       if (templ->logicop_enable) {
          switch (templ->logicop_func) {
          case PIPE_LOGICOP_XOR:
+         case PIPE_LOGICOP_INVERT:
             blend->need_white_fragments = TRUE;
             blend->rt[i].blend_enable = TRUE;
             blend->rt[i].srcblend       = SVGA3D_BLENDOP_ONE;
@@ -125,12 +126,6 @@ svga_create_blend_state(struct pipe_context *pipe,
             blend->rt[i].dstblend       = SVGA3D_BLENDOP_ONE;
             blend->rt[i].blendeq        = SVGA3D_BLENDEQ_MAXIMUM;
             break;
-         case PIPE_LOGICOP_INVERT:
-            blend->rt[i].blend_enable = TRUE;
-            blend->rt[i].srcblend       = SVGA3D_BLENDOP_INVSRCCOLOR;
-            blend->rt[i].dstblend       = SVGA3D_BLENDOP_ZERO;
-            blend->rt[i].blendeq        = SVGA3D_BLENDEQ_ADD;
-            break;
          case PIPE_LOGICOP_AND:
             /* Approximate with minimum - works for the 0 & anything case: */
             blend->rt[i].blend_enable = TRUE;




More information about the mesa-commit mailing list