H. Verbeet : wined3d: Don't try to clear the depth stencil if there
is none .
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Apr 17 08:12:20 CDT 2007
Module: wine
Branch: master
Commit: e49c480820f0611ddcc3e1e52dcadc80fcf6cbe6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e49c480820f0611ddcc3e1e52dcadc80fcf6cbe6
Author: H. Verbeet <hverbeet at gmail.com>
Date: Mon Apr 16 21:21:06 2007 +0200
wined3d: Don't try to clear the depth stencil if there is none.
---
dlls/wined3d/swapchain.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index e32423a..18d9b3d 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -147,6 +147,7 @@ static void WINAPI IWineD3DSwapChainImpl_Destroy(IWineD3DSwapChain *iface, D3DCB
static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion, DWORD dwFlags) {
IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+ DWORD clear_flags = 0;
ENTER_GL();
@@ -293,18 +294,23 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO
#endif
LEAVE_GL();
+
+ if (This->wineD3DDevice->stencilBufferTarget) {
+ clear_flags |= WINED3DCLEAR_STENCIL|WINED3DCLEAR_ZBUFFER;
+ }
+
/* Although this is not strictly required, a simple demo showed this does occur
on (at least non-debug) d3d */
if (This->presentParms.SwapEffect == WINED3DSWAPEFFECT_DISCARD) {
TRACE("Clearing\n");
- IWineD3DDevice_Clear((IWineD3DDevice*)This->wineD3DDevice, 0, NULL, WINED3DCLEAR_STENCIL|WINED3DCLEAR_ZBUFFER|WINED3DCLEAR_TARGET, 0x00, 1.0, 0);
+ IWineD3DDevice_Clear((IWineD3DDevice*)This->wineD3DDevice, 0, NULL, clear_flags|WINED3DCLEAR_TARGET, 0x00, 1.0, 0);
- } else {
+ } else if (clear_flags) {
TRACE("Clearing z/stencil buffer\n");
- IWineD3DDevice_Clear((IWineD3DDevice*)This->wineD3DDevice, 0, NULL, WINED3DCLEAR_STENCIL|WINED3DCLEAR_ZBUFFER, 0x00, 1.0, 0);
+ IWineD3DDevice_Clear((IWineD3DDevice*)This->wineD3DDevice, 0, NULL, clear_flags, 0x00, 1.0, 0);
}
if(((IWineD3DSurfaceImpl *) This->frontBuffer)->Flags & SFLAG_INSYSMEM ||
More information about the wine-cvs
mailing list