Thank you so much for being patient and showing me how to do this.. with much help from everyone here is what the results are :
Patch 1 :
File : wine-1.0/dlls/wined3d/context.c
--- context.c 2008-06-26 13:52:57.000000000 -0400
+++ context.c.patch1 2008-06-26 15:19:15.000000000 -0400
@@ -145,9 +145,7 @@ static int WineD3D_ChoosePixelFormat(IWi
DepthStencilFormat = WINED3DFMT_D24S8;
- if(DepthStencilFormat) {
- getDepthStencilBits(DepthStencilFormat, &depthBits, &stencilBits);
- }
+ getDepthStencilBits(DepthStencilFormat, &depthBits, &stencilBits);
/* Find a pixel format which EXACTLY matches our requirements (except for depth) */
for(i=0; i<nCfgs; i++) {
Patch 2:
File: wine-1.0/dlls/wined3d/context.c
--- context.c 2008-06-26 13:52:57.000000000 -0400
+++ context.c.patch2 2008-06-26 15:37:25.000000000 -0400
@@ -120,7 +120,9 @@ static int WineD3D_ChoosePixelFormat(IWi
int i = 0;
int nCfgs = This->adapter->nCfgs;
WineD3D_PixelFormat *cfgs = This->adapter->cfgs;
-
+ PIXELFORMATDESCRIPTOR pfd;
+ BOOL exactDepthMatch = TRUE;
+
TRACE("ColorFormat=%s, DepthStencilFormat=%s, auxBuffers=%d, numSamples=%d, pbuffer=%d, findCompatible=%d\n",
debug_d3dformat(ColorFormat), debug_d3dformat(DepthStencilFormat), auxBuffers, numSamples, pbuffer, findCompatible);
@@ -151,7 +153,6 @@ static int WineD3D_ChoosePixelFormat(IWi
/* Find a pixel format which EXACTLY matches our requirements (except for depth) */
for(i=0; i<nCfgs; i++) {
- BOOL exactDepthMatch = TRUE;
cfgs = &This->adapter->cfgs[i];
/* For now only accept RGBA formats. Perhaps some day we will
@@ -180,13 +181,7 @@ static int WineD3D_ChoosePixelFormat(IWi
if(cfgs->alphaSize != alphaBits)
continue;
- /* We try to locate a format which matches our requirements exactly. In case of
- * depth it is no problem to emulate 16-bit using e.g. 24-bit, so accept that. */
- if(cfgs->depthSize < depthBits)
- continue;
- else if(cfgs->depthSize > depthBits)
- exactDepthMatch = FALSE;
-
+
/* In all cases make sure the number of stencil bits matches our requirements
* even when we don't need stencil because it could affect performance EXCEPT
* on cards which don't offer depth formats without stencil like the i915 drivers
@@ -198,6 +193,13 @@ static int WineD3D_ChoosePixelFormat(IWi
if(cfgs->numSamples != numSamples)
continue;
+ /* We try to locate a format which matches our requirements exactly. In case of
+ * depth it is no problem to emulate 16-bit using e.g. 24-bit, so accept that. */
+ if(cfgs->depthSize < depthBits)
+ continue;
+ else if(cfgs->depthSize > depthBits)
+ exactDepthMatch = FALSE;
+
/* When we have passed all the checks then we have found a format which matches our
* requirements. Note that we only check for a limit number of capabilities right now,
* so there can easily be a dozen of pixel formats which appear to be the 'same' but
@@ -216,12 +218,8 @@ static int WineD3D_ChoosePixelFormat(IWi
}
}
- /* When findCompatible is set and no suitable format was found, let ChoosePixelFormat choose a pixel format in order not to crash. */
- if(!iPixelFormat && !findCompatible) {
- ERR("Can't find a suitable iPixelFormat\n");
- return FALSE;
- } else if(!iPixelFormat) {
- PIXELFORMATDESCRIPTOR pfd;
+ if(!iPixelFormat) {
+
TRACE("Falling back to ChoosePixelFormat as we weren't able to find an exactly matching pixel format\n");
/* PixelFormat selection */
Chris Ahrendt
P.S. THANKS everyone.. so now comments please? <G>