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