Stefan Dösinger : wined3d: Move WINED3DRS_COLORWRITEENABLEx to the state table.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Dec 11 10:34:51 CST 2006


Module: wine
Branch: master
Commit: 4c64b86f5bd3504a612ba64569239f3096970cc5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4c64b86f5bd3504a612ba64569239f3096970cc5

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Sun Dec 10 23:20:22 2006 +0100

wined3d: Move WINED3DRS_COLORWRITEENABLEx to the state table.

---

 dlls/wined3d/device.c |   29 ++++-------------------------
 dlls/wined3d/state.c  |   33 +++++++++++++++++++++++++++++----
 2 files changed, 33 insertions(+), 29 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 221e1b0..85e65d0 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3399,24 +3399,13 @@ static HRESULT WINAPI IWineD3DDeviceImpl
     case WINED3DRS_POINTSCALE_B              :
     case WINED3DRS_POINTSCALE_C              :
     case WINED3DRS_POINTSCALEENABLE          :
+    case WINED3DRS_COLORWRITEENABLE          :
+    case WINED3DRS_COLORWRITEENABLE1         :
+    case WINED3DRS_COLORWRITEENABLE2         :
+    case WINED3DRS_COLORWRITEENABLE3         :
         StateTable[STATE_RENDER(State)].apply(STATE_RENDER(State), This->stateBlock);
         break;
 
-    case WINED3DRS_COLORWRITEENABLE          :
-      {
-        TRACE("Color mask: r(%d) g(%d) b(%d) a(%d)\n",
-              Value & WINED3DCOLORWRITEENABLE_RED   ? 1 : 0,
-              Value & WINED3DCOLORWRITEENABLE_GREEN ? 1 : 0,
-              Value & WINED3DCOLORWRITEENABLE_BLUE  ? 1 : 0,
-              Value & WINED3DCOLORWRITEENABLE_ALPHA ? 1 : 0);
-        glColorMask(Value & WINED3DCOLORWRITEENABLE_RED   ? GL_TRUE : GL_FALSE,
-                    Value & WINED3DCOLORWRITEENABLE_GREEN ? GL_TRUE : GL_FALSE,
-                    Value & WINED3DCOLORWRITEENABLE_BLUE  ? GL_TRUE : GL_FALSE,
-                    Value & WINED3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE);
-        checkGLcall("glColorMask(...)");
-      }
-      break;
-
     case WINED3DRS_LOCALVIEWER               :
       {
         GLint state = (Value) ? 1 : 0;
@@ -3677,16 +3666,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl
         break;
     }
 
-    case WINED3DRS_COLORWRITEENABLE1         :
-    case WINED3DRS_COLORWRITEENABLE2         :
-    case WINED3DRS_COLORWRITEENABLE3         :
-    {
-        /* depends on WINED3DRS_COLORWRITEENABLE. */
-        if(0x0000000F != Value)
-            ERR("(%p)->(%s,%d) not yet implemented. Missing of cap D3DPMISCCAPS_INDEPENDENTWRITEMASKS wasn't honored?\n", This, debug_d3drenderstate(State), Value);
-        break;
-    }
-
     case WINED3DRS_SRGBWRITEENABLE           :
     {
         if(Value)
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 89bddbb..e30cc65 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -1001,6 +1001,31 @@ static void state_pscale(DWORD state, IW
     }
 }
 
+static void state_colorwrite(DWORD state, IWineD3DStateBlockImpl *stateblock) {
+    DWORD Value = stateblock->renderState[WINED3DRS_COLORWRITEENABLE];
+
+    TRACE("Color mask: r(%d) g(%d) b(%d) a(%d)\n",
+        Value & D3DCOLORWRITEENABLE_RED   ? 1 : 0,
+        Value & D3DCOLORWRITEENABLE_GREEN ? 1 : 0,
+        Value & D3DCOLORWRITEENABLE_BLUE  ? 1 : 0,
+        Value & D3DCOLORWRITEENABLE_ALPHA ? 1 : 0);
+    glColorMask(Value & D3DCOLORWRITEENABLE_RED   ? GL_TRUE : GL_FALSE,
+                Value & D3DCOLORWRITEENABLE_GREEN ? GL_TRUE : GL_FALSE,
+                Value & D3DCOLORWRITEENABLE_BLUE  ? GL_TRUE : GL_FALSE,
+                Value & D3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE);
+    checkGLcall("glColorMask(...)");
+
+    /* depends on WINED3DRS_COLORWRITEENABLE. */
+    if(stateblock->renderState[WINED3DRS_COLORWRITEENABLE1] != 0x0000000F ||
+       stateblock->renderState[WINED3DRS_COLORWRITEENABLE2] != 0x0000000F ||
+       stateblock->renderState[WINED3DRS_COLORWRITEENABLE3] != 0x0000000F ) {
+        ERR("(WINED3DRS_COLORWRITEENABLE1/2/3,%d,%d,%d) not yet implemented. Missing of cap D3DPMISCCAPS_INDEPENDENTWRITEMASKS wasn't honored?\n",
+            stateblock->renderState[WINED3DRS_COLORWRITEENABLE1],
+            stateblock->renderState[WINED3DRS_COLORWRITEENABLE2],
+            stateblock->renderState[WINED3DRS_COLORWRITEENABLE3]);
+    }
+}
+
 const struct StateEntry StateTable[] =
 {
       /* State name                                         representative,                                     apply function */
@@ -1174,7 +1199,7 @@ const struct StateEntry StateTable[] =
     { /*165, WINED3DRS_DEBUGMONITORTOKEN            */      STATE_RENDER(WINED3DRS_DEBUGMONITORTOKEN),          state_unknown       },
     { /*166, WINED3DRS_POINTSIZE_MAX                */      STATE_RENDER(WINED3DRS_POINTSIZE_MAX),              state_psizemax      },
     { /*167, WINED3DRS_INDEXEDVERTEXBLENDENABLE     */      0,                                                  state_nogl          },
-    { /*168, WINED3DRS_COLORWRITEENABLE             */      STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_unknown       },
+    { /*168, WINED3DRS_COLORWRITEENABLE             */      STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    },
     { /*169, Undefined                              */      0,                                                  state_undefined     },
     { /*170, WINED3DRS_TWEENFACTOR                  */      0,                                                  state_nogl          },
     { /*171, WINED3DRS_BLENDOP                      */      STATE_RENDER(WINED3DRS_BLENDOP),                    state_blendop       },
@@ -1198,9 +1223,9 @@ const struct StateEntry StateTable[] =
     { /*187, WINED3DRS_CCW_STENCILZFAIL             */      STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       },
     { /*188, WINED3DRS_CCW_STENCILPASS              */      STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       },
     { /*189, WINED3DRS_CCW_STENCILFUNC              */      STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       },
-    { /*190, WINED3DRS_COLORWRITEENABLE1            */      STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_unknown       },
-    { /*191, WINED3DRS_COLORWRITEENABLE2            */      STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_unknown       },
-    { /*192, WINED3DRS_COLORWRITEENABLE3            */      STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_unknown       },
+    { /*190, WINED3DRS_COLORWRITEENABLE1            */      STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    },
+    { /*191, WINED3DRS_COLORWRITEENABLE2            */      STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    },
+    { /*192, WINED3DRS_COLORWRITEENABLE3            */      STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    },
     { /*193, WINED3DRS_BLENDFACTOR                  */      STATE_RENDER(WINED3DRS_ALPHABLENDENABLE),           state_blend         },
     { /*194, WINED3DRS_SRGBWRITEENABLE              */      0,                                                  state_nogl          },
     { /*195, WINED3DRS_DEPTHBIAS                    */      STATE_RENDER(WINED3DRS_DEPTHBIAS),                  state_unknown       },




More information about the wine-cvs mailing list