[PATCH] Always report D16 as Windows drivers report it on all cards (likely using emulation). This fixes a 3dmark2000 regression on Geforce8 cards.
Roderick Colenbrander
thunderbird2k at gmx.net
Tue Mar 25 05:02:20 CDT 2008
---
dlls/wined3d/directx.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 2cc7b03..cb6c70a 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1656,6 +1656,7 @@ static BOOL IWineD3DImpl_IsPixelFormatCompatibleWithRenderFmt(const WineD3D_Pixe
static BOOL IWineD3DImpl_IsPixelFormatCompatibleWithDepthFmt(const WineD3D_PixelFormat *cfg, WINED3DFORMAT Format) {
short depthSize, stencilSize;
+ BOOL lockable = FALSE;
if(!cfg)
return FALSE;
@@ -1665,7 +1666,13 @@ static BOOL IWineD3DImpl_IsPixelFormatCompatibleWithDepthFmt(const WineD3D_Pixel
return FALSE;
}
- if(cfg->depthSize != depthSize)
+ if((Format == WINED3DFMT_D16_LOCKABLE) || (Format == WINED3DFMT_D32F_LOCKABLE))
+ lockable = TRUE;
+
+ /* On some modern cards like the Geforce8/9 GLX doesn't offer some dephthstencil formats which D3D9 reports.
+ * We can safely report 'compatible' formats (e.g. D24 can be used for D16) as long as we aren't dealing with
+ * a lockable format. This also helps D3D <= 7 as they expect D16 which isn't offered without this on Geforce8 cards. */
+ if(!(cfg->depthSize == depthSize || (!lockable && cfg->depthSize > depthSize)))
return FALSE;
if(cfg->stencilSize != stencilSize)
--
1.5.3.4
--========GMX245231206440666757618--
More information about the wine-patches
mailing list