ok lets try this yet again

James Hawkins truiken at gmail.com
Thu Jun 26 13:45:12 CDT 2008


On Thu, Jun 26, 2008 at 1:38 PM,  <celticht32 at aol.com> wrote:
> I am sorry everyone for the spam =)
> been awhile since I developed stuff, been so used to designing things  =)
>
> here in all its glorry is the diff -u context.c context.c.new > diff.txt
> file
>
> I couldnt get the -c option to work so here is just the -u
>
> --- context.c    2008-06-26 13:52:57.000000000 -0400
> +++ context.c.change    2008-06-26 14:32:48.000000000 -0400
> @@ -116,13 +116,12 @@
>      int iPixelFormat=0;
>      short redBits, greenBits, blueBits, alphaBits, colorBits;
>      short depthBits=0, stencilBits=0;
> -
>      int i = 0;
>      int nCfgs = This->adapter->nCfgs;
> -    WineD3D_PixelFormat *cfgs = This->adapter->cfgs;
>
> -    TRACE("ColorFormat=%s, DepthStencilFormat=%s, auxBuffers=%d,
> numSamples=%d, pbuffer=%d, findCompatible=%d\n",
> -          debug_d3dformat(ColorFormat),
> debug_d3dformat(DepthStencilFormat), auxBuffers, numSamples, pbuffer,
> findCompatible);
> +    WineD3D_PixelFormat *cfgs = This->adapter->cfgs;
> +    BOOL exactDepthMatch = FALSE;  /*Changed june 23,08 */
> +    PIXELFORMATDESCRIPTOR pfd;     /*Changed june 23,08 */
>
>      if(!getColorBits(ColorFormat, &redBits, &greenBits, &blueBits,
> &alphaBits, &colorBits)) {
>          ERR("Unable to get color bits for format %s (%#x)!\n",
> debug_d3dformat(ColorFormat), ColorFormat);
> @@ -145,84 +144,91 @@
>
>      DepthStencilFormat = WINED3DFMT_D24S8;
>
> -    if(DepthStencilFormat) {
> -        getDepthStencilBits(DepthStencilFormat, &depthBits, &stencilBits);
> -    }
> +/* Changed Section June 24,08 */
> +
> +#if 0
> +    if(DepthStencilFormat)
> +      {
> +    getDepthStencilBits(DepthStencilFormat, &depthBits, &stencilBits);
> +    }
> +#endif
> +
> +/* Just call getDepthStencilBits as the above IF will always in this case
> be true */
> +
> +    getDepthStencilBits(DepthStencilFormat, &depthBits, &stencilBits);
>
>      /* Find a pixel format which EXACTLY matches our requirements (except
> for depth) */
> -    for(i=0; i<nCfgs; i++) {
> -        BOOL exactDepthMatch = TRUE;
> +    for(i=0; i<nCfgs; i++)
> +      {
>          cfgs = &This->adapter->cfgs[i];
> -
> +
>          /* For now only accept RGBA formats. Perhaps some day we will
>           * allow floating point formats for pbuffers. */
>          if(cfgs->iPixelType != WGL_TYPE_RGBA_ARB)
> -            continue;
> +           continue;
>
>          /* In window mode (!pbuffer) we need a window drawable format and
> double buffering. */
>          if(!pbuffer && !(cfgs->windowDrawable && cfgs->doubleBuffer))
> -            continue;
> +           continue;
>
> -        /* We like to have aux buffers in backbuffer mode */
> +       /* We like to have aux buffers in backbuffer mode */
>          if(auxBuffers && !cfgs->auxBuffers)
> -            continue;
> +           continue;
>
>          /* In pbuffer-mode we need a pbuffer-capable format but we don't
> want double buffering */
>          if(pbuffer && (!cfgs->pbufferDrawable || cfgs->doubleBuffer))
> -            continue;
> +             continue;
>
> -        if(cfgs->redSize != redBits)
> -            continue;
> -        if(cfgs->greenSize != greenBits)
> -            continue;
> -        if(cfgs->blueSize != blueBits)
> -            continue;
> -        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;
> +        if ((cfgs->redSize != redBits) || (cfgs->greenSize != greenBits) ||
> (cfgs->blueSize != blueBits) || (cfgs->alphaSize != alphaBits))
> +             continue;
>
>          /* 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
>           * on Linux. */
> -        if(stencilBits != cfgs->stencilSize &&
> !(This->adapter->brokenStencil && stencilBits <= cfgs->stencilSize))
> -            continue;
> +        if((stencilBits != cfgs->stencilSize) &&
> !((This->adapter->brokenStencil && stencilBits) <= cfgs->stencilSize))
> +             continue;
>
>          /* Check multisampling support */
>          if(cfgs->numSamples != numSamples)
> -            continue;
> +             continue;
>
> -        /* 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
> -         * can still differ in things like multisampling, stereo, SRGB and
> other flags.
> -         */
> +        /* 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;
>
>          /* Exit the loop as we have found a format :) */
> -        if(exactDepthMatch) {
> +        if (exactDepthMatch)
> +           {
> +            TRACE("Exact Depth Match\n");
>              iPixelFormat = cfgs->iPixelFormat;
>              break;
> -        } else if(!iPixelFormat) {
> +           }
> +        if (!iPixelFormat)
> +          {
>              /* In the end we might end up with a format which doesn't
> exactly match our depth
>               * requirements. Accept the first format we found because
> formats with higher iPixelFormat
>               * values tend to have more extended capabilities (e.g.
> multisampling) which we don't need. */
> +
> +            TRACE("Emulating %d\n",cfgs->iPixelFormat);
>              iPixelFormat = cfgs->iPixelFormat;
> -        }
> +            break; /* Added June 24,08 */
> +          }
>      }
>
>      /* When findCompatible is set and no suitable format was found, let
> ChoosePixelFormat choose a pixel format in order not to crash. */
> -    if(!iPixelFormat && !findCompatible) {
> +
> +#if 0
> +if (!iPixelFormat && !findCompatible)
> +      {
>          ERR("Can't find a suitable iPixelFormat\n");
>          return FALSE;
> -    } else if(!iPixelFormat) {
> -        PIXELFORMATDESCRIPTOR pfd;
> -
> +      }
> +#endif
> +
> +    if (!iPixelFormat)
> +      {
>          TRACE("Falling back to ChoosePixelFormat as we weren't able to find
> an exactly matching pixel format\n");
>          /* PixelFormat selection */
>          ZeroMemory(&pfd, sizeof(pfd));
> @@ -235,16 +241,17 @@
>          pfd.cDepthBits = depthBits;
>          pfd.cStencilBits = stencilBits;
>          pfd.iLayerType = PFD_MAIN_PLANE;
> -
> +
>          iPixelFormat = ChoosePixelFormat(hdc, &pfd);
> -        if(!iPixelFormat) {
> -            /* If this happens something is very wrong as ChoosePixelFormat
> barely fails */
> -            ERR("Can't find a suitable iPixelFormat\n");
> -            return FALSE;
> -        }
> -    }
> +        if (!iPixelFormat)
> +          {
> +           /* If this happens something is very wrong as ChoosePixelFormat
> barely fails */
> +           ERR("Can't find a suitable iPixelFormat\n");
> +           return FALSE;
> +          }
> +      }
>
> -    TRACE("Found iPixelFormat=%d for ColorFormat=%s,
> DepthStencilFormat=%s\n", iPixelFormat, debug_d3dformat(ColorFormat),
> debug_d3dformat(DepthStencilFormat));
> +    TRACE("Found iPixelFormat\n");
>      return iPixelFormat;
>  }
>
> @@ -372,6 +379,7 @@
>
>          /* If we still don't have a pixel format, something is very wrong
> as ChoosePixelFormat barely fails */
>          if(!iPixelFormat) {
> +            TRACE("Choose Pixel Format Failed\n");
>              ERR("Can't find a suitable iPixelFormat\n");
>              return FALSE;
>          }
>
>
> Better?
>

Not really.  You made a lot of superfluous changes (line spacing,
formatting, etc) that make it hard to see what you actually changed.

-- 
James Hawkins



More information about the wine-devel mailing list