Provide looser device matching for backbuffer and depth buffer

formats. It should allow some games and applications to run without X
being in the correct backbuffer format (e.g. 16 bit games will run
with a 24bit X backbuffer).
This commit is contained in:
Oliver Stieber 2005-10-04 15:50:57 +00:00 committed by Alexandre Julliard
parent 8630b8ab6e
commit 80c60f5bad
1 changed files with 39 additions and 0 deletions

View File

@ -980,6 +980,7 @@ HRESULT WINAPI IWineD3DImpl_GetAdapterIdentifier(IWineD3D *iface, UINT Adapter,
}
static BOOL IWineD3DImpl_IsGLXFBConfigCompatibleWithRenderFmt(WineD3D_Context* ctx, GLXFBConfig cfgs, WINED3DFORMAT Format) {
#if 0 /* This code performs a strict test between the format and the current X11 buffer depth, which may give the best performance */
int gl_test;
int rb, gb, bb, ab, type, buf_sz;
@ -1024,9 +1025,29 @@ static BOOL IWineD3DImpl_IsGLXFBConfigCompatibleWithRenderFmt(WineD3D_Context* c
break;
}
return FALSE;
#else /* Most of the time performance is less of an issue than compatability, this code allows for most common opengl/d3d formats */
switch (Format) {
case WINED3DFMT_X8R8G8B8:
case WINED3DFMT_R8G8B8:
case WINED3DFMT_A8R8G8B8:
case WINED3DFMT_A2R10G10B10:
case WINED3DFMT_X1R5G5B5:
case WINED3DFMT_A1R5G5B5:
case WINED3DFMT_R5G6B5:
case WINED3DFMT_R3G3B2:
case WINED3DFMT_A8P8:
case WINED3DFMT_P8:
return TRUE;
default:
ERR("unsupported format %s\n", debug_d3dformat(Format));
break;
}
return FALSE;
#endif
}
static BOOL IWineD3DImpl_IsGLXFBConfigCompatibleWithDepthFmt(WineD3D_Context* ctx, GLXFBConfig cfgs, WINED3DFORMAT Format) {
#if 0/* This code performs a strict test between the format and the current X11 buffer depth, which may give the best performance */
int gl_test;
int db, sb;
@ -1064,6 +1085,24 @@ static BOOL IWineD3DImpl_IsGLXFBConfigCompatibleWithDepthFmt(WineD3D_Context* ct
break;
}
return FALSE;
#else /* Most of the time performance is less of an issue than compatability, this code allows for most common opengl/d3d formats */
switch (Format) {
case WINED3DFMT_D16:
case WINED3DFMT_D16_LOCKABLE:
case WINED3DFMT_D32:
case WINED3DFMT_D15S1:
case WINED3DFMT_D24S8:
case WINED3DFMT_D24FS8:
case WINED3DFMT_D24X8:
case WINED3DFMT_D24X4S4:
case WINED3DFMT_D32F_LOCKABLE:
return TRUE;
default:
ERR("unsupported format %s\n", debug_d3dformat(Format));
break;
}
return FALSE;
#endif
}
HRESULT WINAPI IWineD3DImpl_CheckDepthStencilMatch(IWineD3D *iface, UINT Adapter, D3DDEVTYPE DeviceType,