Clear should not be affected by write masks.
diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c index 72b7541..721e466 100644 --- a/dlls/d3d8/device.c +++ b/dlls/d3d8/device.c
@@ -1363,6 +1363,7 @@ glClearStencil(Stencil); checkGLcall("glClearStencil"); glMask = glMask | GL_STENCIL_BUFFER_BIT; + glStencilMask(0xFFFFFFFF); } if (Flags & D3DCLEAR_ZBUFFER) { @@ -1419,6 +1420,7 @@ /* Restore the old values (why..?) */ if (Flags & D3DCLEAR_STENCIL) { glClearStencil(old_stencil_clear_value); + glStencilMask(This->StateBlock->renderstate[D3DRS_STENCILWRITEMASK]); } if (Flags & D3DCLEAR_ZBUFFER) { glDepthMask(old_ztest);