wined3d: Don't try to clear the depth stencil if there is none.
This commit is contained in:
parent
deeeda6802
commit
e49c480820
|
@ -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) {
|
static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion, DWORD dwFlags) {
|
||||||
IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
|
IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
|
||||||
|
DWORD clear_flags = 0;
|
||||||
|
|
||||||
ENTER_GL();
|
ENTER_GL();
|
||||||
|
|
||||||
|
@ -293,18 +294,23 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LEAVE_GL();
|
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
|
/* Although this is not strictly required, a simple demo showed this does occur
|
||||||
on (at least non-debug) d3d */
|
on (at least non-debug) d3d */
|
||||||
if (This->presentParms.SwapEffect == WINED3DSWAPEFFECT_DISCARD) {
|
if (This->presentParms.SwapEffect == WINED3DSWAPEFFECT_DISCARD) {
|
||||||
|
|
||||||
TRACE("Clearing\n");
|
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");
|
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 ||
|
if(((IWineD3DSurfaceImpl *) This->frontBuffer)->Flags & SFLAG_INSYSMEM ||
|
||||||
|
|
Loading…
Reference in New Issue