[PATCH] WineD3D: Close a pshader on-off switching loophole=0A=

Stefan Doesinger stefan at codeweavers.com
Wed Sep 3 16:07:37 CDT 2008


=0A=
---=0A=
 dlls/wined3d/arb_program_shader.c |    7 +++++++=0A=
 1 files changed, 7 insertions(+), 0 deletions(-)=0A=
=0A=
diff --git a/dlls/wined3d/arb_program_shader.c =
b/dlls/wined3d/arb_program_shader.c=0A=
index ca65e3e..7fa88c0 100644=0A=
--- a/dlls/wined3d/arb_program_shader.c=0A=
+++ b/dlls/wined3d/arb_program_shader.c=0A=
@@ -2912,6 +2912,13 @@ static void fragment_prog_arbfp(DWORD state, =
IWineD3DStateBlockImpl *stateblock,=0A=
     if(isStateDirty(context, STATE_RENDER(WINED3DRS_FOGENABLE))) {=0A=
         if(use_pshader) {=0A=
             IWineD3DPixelShader_CompileShader(stateblock->pixelShader);=0A=
+        } else if(device->shader_backend =3D=3D =
&arb_program_shader_backend && context->last_was_pshader) {=0A=
+            /* Reload fixed function constants since they collide with =
the pixel shader constants */=0A=
+            for(i =3D 0; i < MAX_TEXTURES; i++) {=0A=
+                set_bumpmat_arbfp(STATE_TEXTURESTAGE(i, =
WINED3DTSS_BUMPENVMAT00), stateblock, context);=0A=
+            }=0A=
+            =
state_texfactor_arbfp(STATE_RENDER(WINED3DRS_TEXTUREFACTOR), stateblock, =
context);=0A=
+            =
state_arb_specularenable(STATE_RENDER(WINED3DRS_SPECULARENABLE), =
stateblock, context);=0A=
         }=0A=
         return;=0A=
     }=0A=
-- =0A=
1.5.6.4=0A=
=0A=

------=_NextPart_000_0015_01C90EA1.707C2F00--




More information about the wine-patches mailing list