<font face="Arial, Helvetica, sans-serif">the code is in :<br>
<br>
wine-1.0/dlls/wined3d/context.c<br>
<br>
<br>
here is the changed code :<br>
<br>
<br>
<br>
/* This function takes care of WineD3D pixel format selection. */<br>
<br>
static int WineD3D_ChoosePixelFormat(IWineD3DDeviceImpl *This, HDC hdc, WINED3DFORMAT ColorFormat, WINED3DFORMAT DepthStencilFormat, BOOL auxBuffers, int numSamples, BOOL pbuffer, BOOL findCompatible)<br>
{<br>
&nbsp;&nbsp;&nbsp; int iPixelFormat=0;<br>
&nbsp;&nbsp;&nbsp; short redBits, greenBits, blueBits, alphaBits, colorBits;<br>
&nbsp;&nbsp;&nbsp; short depthBits=0, stencilBits=0;<br>
&nbsp;&nbsp;&nbsp; int i = 0;<br>
&nbsp;&nbsp;&nbsp; int nCfgs = This-&gt;adapter-&gt;nCfgs;<br>
<br>
&nbsp;&nbsp;&nbsp; WineD3D_PixelFormat *cfgs = This-&gt;adapter-&gt;cfgs;<br>
&nbsp;&nbsp;&nbsp; BOOL exactDepthMatch = FALSE;&nbsp; /*Changed june 23,08 */&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; PIXELFORMATDESCRIPTOR pfd;&nbsp;&nbsp;&nbsp;&nbsp; /*Changed june 23,08 */<br>
<br>
<br>
&nbsp;&nbsp;&nbsp; TRACE("ColorFormat=%s, DepthStencilFormat=%s, auxBuffers=%d, numSamples=%d, pbuffer=%d, findCompatible=%d\n",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug_d3dformat(ColorFormat), debug_d3dformat(DepthStencilFormat), auxBuffers, numSamples, pbuffer, findCompatible);<br>
<br>
&nbsp;&nbsp;&nbsp; if (!getColorBits(ColorFormat, &amp;redBits, &amp;greenBits, &amp;blueBits, &amp;alphaBits, &amp;colorBits)) <br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ERR("Unable to get color bits for format %s (%#x)!\n", debug_d3dformat(ColorFormat), ColorFormat);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; /* In WGL both color, depth and stencil are features of a pixel format. In case of D3D they are separate.<br>
&nbsp;&nbsp;&nbsp;&nbsp; * You are able to add a depth + stencil surface at a later stage when you need it.<br>
&nbsp;&nbsp;&nbsp;&nbsp; * In order to support this properly in WineD3D we need the ability to recreate the opengl context and<br>
&nbsp;&nbsp;&nbsp;&nbsp; * drawable when this is required. This is very tricky as we need to reapply ALL opengl states for the new<br>
&nbsp;&nbsp;&nbsp;&nbsp; * context, need torecreate shaders, textures and other resources.<br>
&nbsp;&nbsp;&nbsp;&nbsp; *<br>
&nbsp;&nbsp;&nbsp;&nbsp; * The context manager already takes care of the state problem and for the other tasks code from Reset<br>
&nbsp;&nbsp;&nbsp;&nbsp; * can be used. These changes are way to risky during the 1.0 code freeze which is taking place right now.<br>
&nbsp;&nbsp;&nbsp;&nbsp; * Likely a lot of other new bugs will be exposed. For that reason request a depth stencil surface all the<br>
&nbsp;&nbsp;&nbsp;&nbsp; * time. It can cause a slight performance hit but fixes a lot of regressions. A fixme reminds of that this<br>
&nbsp;&nbsp;&nbsp;&nbsp; * issue needs to be fixed. */<br>
&nbsp;&nbsp;&nbsp; if (DepthStencilFormat != WINED3DFMT_D24S8)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FIXME("Add OpenGL context recreation support to SetDepthStencilSurface\n");<br>
<br>
&nbsp;&nbsp;&nbsp; DepthStencilFormat = WINED3DFMT_D24S8;<br>
<br>
/* <b>Changed Section June 24,08</b> */<br>
<br>
/*&nbsp;&nbsp;&nbsp; if(DepthStencilFormat) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Changed June 19,08*/<br>
&nbsp;&nbsp;&nbsp; getDepthStencilBits(DepthStencilFormat, &amp;depthBits, &amp;stencilBits);<br>
/*&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <b>This if will always be true because of the above&nbsp; so just call getDepthStencilBits</b> */<br>
<br>
&nbsp;&nbsp;&nbsp; /* Find a pixel format which EXACTLY matches our requirements (except for depth) */<br>
&nbsp;&nbsp;&nbsp; for(i=0; i&lt;nCfgs; i++) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cfgs = &amp;This-&gt;adapter-&gt;cfgs[i];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* For now only accept RGBA formats. Perhaps some day we will<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * allow floating point formats for pbuffers. */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cfgs-&gt;iPixelType != WGL_TYPE_RGBA_ARB)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* In window mode (!pbuffer) we need a window drawable format and double buffering. */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!pbuffer &amp;&amp; !(cfgs-&gt;windowDrawable &amp;&amp; cfgs-&gt;doubleBuffer))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* We like to have aux buffers in backbuffer mode */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (auxBuffers &amp;&amp; !cfgs-&gt;auxBuffers)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* In pbuffer-mode we need a pbuffer-capable format but we don't want double buffering */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (pbuffer &amp;&amp; (!cfgs-&gt;pbufferDrawable || cfgs-&gt;doubleBuffer))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>
<br>
/* <b>This is faster and more efficient code wise since they are all related so evaluate them together Changed June 19,08 </b>*/<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((cfgs-&gt;redSize != redBits) || (cfgs-&gt;greenSize != greenBits) || (cfgs-&gt;blueSize != blueBits) || (cfgs-&gt;alphaSize != alphaBits))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* In all cases make sure the number of stencil bits matches our requirements<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * even when we don't need stencil because it could affect performance EXCEPT<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * on cards which don't offer depth formats without stencil like the i915 drivers<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * on Linux. */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((stencilBits != cfgs-&gt;stencilSize) &amp;&amp; !((This-&gt;adapter-&gt;brokenStencil &amp;&amp; stencilBits) &lt;= cfgs-&gt;stencilSize))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Check multisampling support */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cfgs-&gt;numSamples != numSamples)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* We try to locate a format which matches our requirements exactly. In case of<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * depth it is no problem to emulate 16-bit using e.g. 24-bit, so accept that. */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cfgs-&gt;depthSize !=&nbsp; depthBits)&nbsp; /* Changed June 24,08 */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Exit the loop as we have found a format :) */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (exactDepthMatch) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRACE("Exact Depth Match\n");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iPixelFormat = cfgs-&gt;iPixelFormat;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!iPixelFormat) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* In the end we might end up with a format which doesn't exactly match our depth<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * requirements. Accept the first format we found because formats with higher iPixelFormat<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * values tend to have more extended capabilities (e.g. multisampling) which we don't need. */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRACE("Emulating %d\n",cfgs-&gt;iPixelFormat);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iPixelFormat = cfgs-&gt;iPixelFormat;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; /* Added June 24,08 */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; /* When findCompatible is set and no suitable format was found, let ChoosePixelFormat choose a pixel format in order not to crash. */<br>
<br>
/*&nbsp;&nbsp;&nbsp; if (!iPixelFormat &amp;&amp; !findCompatible) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ERR("Can't find a suitable iPixelFormat\n");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return FALSE;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>
<b>Remarked this out. Yes it will cycle through the 3 adapters (I am running dual head and for some reason it thinks I have 3 adapters not just the 2 for dual head)</b> <br>
<b>Why would findCompatible not be set for all adapters&nbsp; this is what the DX 9c specs&nbsp; say it should do then the application picks the best of all </b>*/<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; if (!iPixelFormat) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRACE("iPixelFormat = %d FindCompatible=%d\n",iPixelFormat, findCompatible);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRACE("Falling back to ChoosePixelFormat as we weren't able to find an exactly matching pixel format\n");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* PixelFormat selection */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZeroMemory(&amp;pfd, sizeof(pfd));<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pfd.nSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = sizeof(pfd);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pfd.nVersion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 1; /* <b>Should this be hard Coded or put into a #DEFINE so it can be changed later if needed</b> */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pfd.dwFlags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_DRAW_TO_WINDOW;/*PFD_GENERIC_ACCELERATED*/<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pfd.iPixelType&nbsp;&nbsp; = PFD_TYPE_RGBA;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pfd.cAlphaBits&nbsp;&nbsp; = alphaBits;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pfd.cColorBits&nbsp;&nbsp;&nbsp; = colorBits;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pfd.cDepthBits&nbsp;&nbsp; = depthBits;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pfd.cStencilBits&nbsp; = stencilBits;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pfd.iLayerType&nbsp; = PFD_MAIN_PLANE;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iPixelFormat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ChoosePixelFormat(hdc, &amp;pfd);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!iPixelFormat) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* If this happens something is very wrong as ChoosePixelFormat barely fails */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ERR("Can't find a suitable iPixelFormat\n");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return FALSE;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; TRACE("Found iPixelFormat\n");<br>
&nbsp;&nbsp;&nbsp; return iPixelFormat;<br>
}<br>
<br>
<br>
<br>
<br>
Chris</font><div id='u8CAA47C3D4CC3F1-8F8-3F94' class='aol_ad_footer'><FONT style="color: black; font: normal 10pt ARIAL, SAN-SERIF;"><HR style="MARGIN-TOP: 10px"><A title="http://toolbar.aol.com/moviefone/download.html?ncid=aolcmp00050000000011" href="http://toolbar.aol.com/moviefone/download.html?ncid=aolcmp00050000000011" target="_blank">Get the Moviefone Toolbar</A>. Showtimes, theaters, movie news, & more!</FONT> </div>