[PATCH] WineD3D: Move a few extension checks into the state =

Stefan Doesinger stefan at codeweavers.com
Sat Jul 5 15:35:53 CDT 2008


template=0A=
=0A=
---=0A=
 dlls/wined3d/state.c |   53 =
+++++++++++++++++++++++++++++--------------------=0A=
 1 files changed, 31 insertions(+), 22 deletions(-)=0A=
=0A=
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c=0A=
index 5f0c598..f202a85 100644=0A=
--- a/dlls/wined3d/state.c=0A=
+++ b/dlls/wined3d/state.c=0A=
@@ -451,14 +451,13 @@ static void state_blend(DWORD state, =
IWineD3DStateBlockImpl *stateblock, WineD3D=0A=
     }=0A=
 }=0A=
 =0A=
+static void state_blendfactor_w(DWORD state, IWineD3DStateBlockImpl =
*stateblock, WineD3DContext *context) {=0A=
+    WARN("Unsupported in local OpenGL implementation: =
glBlendColorEXT\n");=0A=
+}=0A=
+=0A=
 static void state_blendfactor(DWORD state, IWineD3DStateBlockImpl =
*stateblock, WineD3DContext *context) {=0A=
     float col[4];=0A=
 =0A=
-    if(!GL_SUPPORT(EXT_BLEND_COLOR)) {=0A=
-        WARN("Unsupported in local OpenGL implementation: =
glBlendColorEXT\n");=0A=
-        return;=0A=
-    }=0A=
-=0A=
     TRACE("Setting BlendFactor to %d\n", =
stateblock->renderState[WINED3DRS_BLENDFACTOR]);=0A=
     D3DCOLORTOGLFLOAT4(stateblock->renderState[WINED3DRS_BLENDFACTOR], =
col);=0A=
     GL_EXTCALL(glBlendColorEXT (col[0],col[1],col[2],col[3]));=0A=
@@ -594,15 +593,14 @@ static void state_clipping(DWORD state, =
IWineD3DStateBlockImpl *stateblock, Wine=0A=
     }=0A=
 }=0A=
 =0A=
+static void state_blendop_w(DWORD state, IWineD3DStateBlockImpl =
*stateblock, WineD3DContext *context) {=0A=
+    WARN("Unsupported in local OpenGL implementation: =
glBlendEquation\n");=0A=
+}=0A=
+=0A=
 static void state_blendop(DWORD state, IWineD3DStateBlockImpl =
*stateblock, WineD3DContext *context) {=0A=
     int blendEquation =3D GL_FUNC_ADD;=0A=
     int blendEquationAlpha =3D GL_FUNC_ADD;=0A=
 =0A=
-    if(!GL_SUPPORT(EXT_BLEND_MINMAX)) {=0A=
-        WARN("Unsupported in local OpenGL implementation: =
glBlendEquation\n");=0A=
-        return;=0A=
-    }=0A=
-=0A=
     /* BLENDOPALPHA requires GL_EXT_blend_equation_separate, so make =
sure it is around */=0A=
     if(stateblock->renderState[WINED3DRS_BLENDOPALPHA] && =
!GL_SUPPORT(EXT_BLEND_EQUATION_SEPARATE)) {=0A=
         WARN("Unsupported in local OpenGL implementation: =
glBlendEquationSeparateEXT\n");=0A=
@@ -868,7 +866,7 @@ state_stencil(DWORD state, IWineD3DStateBlockImpl =
*stateblock, WineD3DContext *c=0A=
     }=0A=
 }=0A=
 =0A=
-static void state_stencilwrite(DWORD state, IWineD3DStateBlockImpl =
*stateblock, WineD3DContext *context) {=0A=
+static void state_stencilwrite2s(DWORD state, IWineD3DStateBlockImpl =
*stateblock, WineD3DContext *context) {=0A=
     DWORD mask;=0A=
 =0A=
     if(stateblock->wineD3DDevice->stencilBufferTarget) {=0A=
@@ -877,17 +875,25 @@ static void state_stencilwrite(DWORD state, =
IWineD3DStateBlockImpl *stateblock,=0A=
         mask =3D 0;=0A=
     }=0A=
 =0A=
-    if(GL_SUPPORT(EXT_STENCIL_TWO_SIDE)) {=0A=
-        GL_EXTCALL(glActiveStencilFaceEXT(GL_BACK));=0A=
-        checkGLcall("glActiveStencilFaceEXT(GL_BACK)");=0A=
-        glStencilMask(mask);=0A=
-        checkGLcall("glStencilMask");=0A=
-        GL_EXTCALL(glActiveStencilFaceEXT(GL_FRONT));=0A=
-        checkGLcall("glActiveStencilFaceEXT(GL_FRONT)");=0A=
-        glStencilMask(mask);=0A=
+    GL_EXTCALL(glActiveStencilFaceEXT(GL_BACK));=0A=
+    checkGLcall("glActiveStencilFaceEXT(GL_BACK)");=0A=
+    glStencilMask(mask);=0A=
+    checkGLcall("glStencilMask");=0A=
+    GL_EXTCALL(glActiveStencilFaceEXT(GL_FRONT));=0A=
+    checkGLcall("glActiveStencilFaceEXT(GL_FRONT)");=0A=
+    glStencilMask(mask);=0A=
+}=0A=
+=0A=
+static void state_stencilwrite(DWORD state, IWineD3DStateBlockImpl =
*stateblock, WineD3DContext *context) {=0A=
+    DWORD mask;=0A=
+=0A=
+    if(stateblock->wineD3DDevice->stencilBufferTarget) {=0A=
+        mask =3D stateblock->renderState[WINED3DRS_STENCILWRITEMASK];=0A=
     } else {=0A=
-        glStencilMask(mask);=0A=
+        mask =3D 0;=0A=
     }=0A=
+=0A=
+    glStencilMask(mask);=0A=
     checkGLcall("glStencilMask");=0A=
 }=0A=
 =0A=
@@ -3866,6 +3872,7 @@ const struct StateEntryTemplate =
misc_state_template[] =3D {=0A=
     { STATE_RENDER(WINED3DRS_STENCILFUNC),                { =
STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_STENCILREF),                 { =
STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_STENCILMASK),                { =
STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       =
}, 0                               },=0A=
+    { STATE_RENDER(WINED3DRS_STENCILWRITEMASK),           { =
STATE_RENDER(WINED3DRS_STENCILWRITEMASK),           =
state_stencilwrite2s}, EXT_STENCIL_TWO_SIDE            },=0A=
     { STATE_RENDER(WINED3DRS_STENCILWRITEMASK),           { =
STATE_RENDER(WINED3DRS_STENCILWRITEMASK),           state_stencilwrite  =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_TWOSIDEDSTENCILMODE),        { =
STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_CCW_STENCILFAIL),            { =
STATE_RENDER(WINED3DRS_STENCILENABLE),              state_stencil       =
}, 0                               },=0A=
@@ -3904,13 +3911,15 @@ const struct StateEntryTemplate =
misc_state_template[] =3D {=0A=
     { STATE_RENDER(WINED3DRS_MULTISAMPLEANTIALIAS),       { =
STATE_RENDER(WINED3DRS_MULTISAMPLEANTIALIAS),       state_multisampleaa =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_MULTISAMPLEMASK),            { =
STATE_RENDER(WINED3DRS_MULTISAMPLEMASK),            state_multisampmask =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           { =
STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    =
}, 0                               },=0A=
-    { STATE_RENDER(WINED3DRS_BLENDOP),                    { =
STATE_RENDER(WINED3DRS_BLENDOP),                    state_blendop       =
}, 0                               },=0A=
+    { STATE_RENDER(WINED3DRS_BLENDOP),                    { =
STATE_RENDER(WINED3DRS_BLENDOP),                    state_blendop       =
}, EXT_BLEND_MINMAX                },=0A=
+    { STATE_RENDER(WINED3DRS_BLENDOP),                    { =
STATE_RENDER(WINED3DRS_BLENDOP),                    state_blendop_w     =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_SCISSORTESTENABLE),          { =
STATE_RENDER(WINED3DRS_SCISSORTESTENABLE),          state_scissor       =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_SLOPESCALEDEPTHBIAS),        { =
STATE_RENDER(WINED3DRS_DEPTHBIAS),                  state_depthbias     =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_COLORWRITEENABLE1),          { =
STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_COLORWRITEENABLE2),          { =
STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_COLORWRITEENABLE3),          { =
STATE_RENDER(WINED3DRS_COLORWRITEENABLE),           state_colorwrite    =
}, 0                               },=0A=
-    { STATE_RENDER(WINED3DRS_BLENDFACTOR),                { =
STATE_RENDER(WINED3DRS_BLENDFACTOR),                state_blendfactor   =
}, 0                               },=0A=
+    { STATE_RENDER(WINED3DRS_BLENDFACTOR),                { =
STATE_RENDER(WINED3DRS_BLENDFACTOR),                state_blendfactor   =
}, EXT_BLEND_COLOR                 },=0A=
+    { STATE_RENDER(WINED3DRS_BLENDFACTOR),                { =
STATE_RENDER(WINED3DRS_BLENDFACTOR),                state_blendfactor_w =
}, 0                               },=0A=
     { STATE_RENDER(WINED3DRS_DEPTHBIAS),                  { =
STATE_RENDER(WINED3DRS_DEPTHBIAS),                  state_depthbias     =
}, 0                               },=0A=
     /* Samplers */=0A=
     { STATE_SAMPLER(0),                                   { =
STATE_SAMPLER(0),                                   sampler             =
}, 0                               },=0A=
-- =0A=
1.5.4.5=0A=
=0A=

------=_NextPart_000_001F_01C8E78C.10FD69E0--




More information about the wine-patches mailing list