cleanup and some WGL PIXELFORMAT issues
authorDaniel Borca <dborca@users.sourceforge.net>
Mon, 16 Feb 2004 07:32:27 +0000 (07:32 +0000)
committerDaniel Borca <dborca@users.sourceforge.net>
Mon, 16 Feb 2004 07:32:27 +0000 (07:32 +0000)
src/mesa/drivers/glide/fxapi.c
src/mesa/drivers/glide/fxdd.c
src/mesa/drivers/glide/fxdrv.h
src/mesa/drivers/glide/fxg.c
src/mesa/drivers/glide/fxg.h
src/mesa/drivers/glide/fxtexman.c
src/mesa/drivers/glide/fxwgl.c

index 8ffa36c9c36e65d681861165ee3db1be9f18a33a..10d572a9e0cd6781b7960f056f7bec3117a25c28 100644 (file)
@@ -262,7 +262,7 @@ fxMesaCreateContext(GLuint win,
 
  int i;
  const char *str;
- int sliaa, numSLI, samplesPerChip, tmuRam, fbRam;
+ int sliaa, numSLI, samplesPerChip;
  struct SstCard_St *voodoo;
  struct tdfx_glide *Glide;
 
@@ -273,8 +273,6 @@ fxMesaCreateContext(GLuint win,
  GLuint redBits, greenBits, blueBits, alphaBits;
  GrPixelFormat_t pixFmt;
    
- GLboolean useBGR;
-
  if (TDFX_DEBUG & VERBOSE_DRIVER) {
     fprintf(stderr, "fxMesaCreateContext(...)\n");
  }
@@ -312,11 +310,7 @@ fxMesaCreateContext(GLuint win,
                   break;
               /* XXX ugly hack here for sharing display lists */
               case FXMESA_SHARE_CONTEXT:
-                  {
-                   const void *vPtr = &attribList[++i];
-                   GLcontext **ctx = (GLcontext **)vPtr;
-                   shareCtx = *ctx;
-                   }
+                   shareCtx = (GLcontext *)attribList[++i];
                   break;
               default:
                    fprintf(stderr, "fxMesaCreateContext: ERROR: wrong parameter (%d) passed\n", attribList[i]);
@@ -373,11 +367,11 @@ fxMesaCreateContext(GLuint win,
  switch (voodoo->type) {
         case GR_SSTTYPE_VOODOO:
         case GR_SSTTYPE_Banshee:
-             useBGR = GL_TRUE;
+             fxMesa->bgrOrder = GL_TRUE;
              fxMesa->snapVertices = GL_TRUE;
              break;
         case GR_SSTTYPE_Voodoo2:
-             useBGR = GL_TRUE;
+             fxMesa->bgrOrder = GL_TRUE;
              fxMesa->snapVertices = GL_FALSE;
              break;
         case GR_SSTTYPE_Voodoo4:
@@ -387,7 +381,7 @@ fxMesaCreateContext(GLuint win,
              }
         case GR_SSTTYPE_Voodoo3:
         default:
-             useBGR = GL_FALSE;
+             fxMesa->bgrOrder = GL_FALSE;
              fxMesa->snapVertices = GL_FALSE;
              break;
  }
@@ -579,29 +573,6 @@ fxMesaCreateContext(GLuint win,
     goto errorhandler;
  }
 
-  /* Not that it matters, but tmuRam and fbRam change after grSstWinOpen. */
-  tmuRam = voodoo->tmuConfig[GR_TMU0].tmuRam;
-  fbRam  = voodoo->fbRam;
-  BEGIN_BOARD_LOCK();
-  {
-    FxI32 result;
-    grGet(GR_MEMORY_TMU, 4, &result);
-    tmuRam = result / (1024 * 1024);
-    grGet(GR_MEMORY_FB, 4, &result);
-    fbRam = result / (1024 * 1024);
-  }
-  END_BOARD_LOCK();
-
-  sprintf(fxMesa->rendererString, "Mesa %s v0.60 %s %dMB FB, %dMB TM, %d TMU, %s",
-                           grGetString(GR_RENDERER),
-                           grGetString(GR_HARDWARE),
-                           fbRam,
-                           tmuRam * voodoo->nTexelfx,
-                           voodoo->nTexelfx,
-                           (voodoo->numChips > 1) ? "SLI" : "NOSLI");
-
-  fxMesa->bgrOrder = useBGR;
-
    /* screen */
    fxMesa->screen_width = FX_grSstScreenWidth();
    fxMesa->screen_height = FX_grSstScreenHeight();
@@ -617,22 +588,38 @@ fxMesaCreateContext(GLuint win,
    fxMesa->clipMaxY = fxMesa->height;
 
    if (fxMesa->verbose) {
-      char buf[80];
-
-      strcpy(buf, grGetString(GR_VERSION));
-      fprintf(stderr, "Voodoo Using Glide %s\n", buf);
-      fprintf(stderr, "Voodoo Number of boards: %d\n", glbHWConfig.num_sst);
-      fprintf(stderr, "Voodoo Number of TMUs: %d\n", voodoo->nTexelfx);
-      fprintf(stderr, "Voodoo fbRam: %d\n", voodoo->fbRam);
-      fprintf(stderr, "Voodoo fbiRev: %d\n", voodoo->fbiRev);
-      fprintf(stderr, "Voodoo chips detected: %d\n", voodoo->numChips);
-      fprintf(stderr, "Voodoo pixel order = %s, vertex snapping = %d\n",
-                      useBGR ? "BGR" : "RGB",
-                      fxMesa->snapVertices);
-      fprintf(stderr, "Voodoo screen: %dx%d:%d\n",
-                     fxMesa->screen_width, fxMesa->screen_height, colDepth);
+      FxI32 tmuRam, fbRam;
+
+      /* Not that it matters, but tmuRam and fbRam change after grSstWinOpen. */
+      tmuRam = voodoo->tmuConfig[GR_TMU0].tmuRam;
+      fbRam  = voodoo->fbRam;
+      BEGIN_BOARD_LOCK();
+      grGet(GR_MEMORY_TMU, 4, &tmuRam);
+      grGet(GR_MEMORY_FB, 4, &fbRam);
+      END_BOARD_LOCK();
+
+      fprintf(stderr, "Voodoo Using Glide %s\n", grGetString(GR_VERSION));
+      fprintf(stderr, "Voodoo Board: %d/%d, %s, %d GPU\n",
+                      fxMesa->board + 1,
+                      glbHWConfig.num_sst,
+                      grGetString(GR_HARDWARE),
+                      voodoo->numChips);
+      fprintf(stderr, "Voodoo Memory: FB = %ld, TM = %d x %ld\n",
+                      fbRam,
+                      voodoo->nTexelfx,
+                      tmuRam);
+      fprintf(stderr, "Voodoo Screen: %dx%d:%d %s, %svertex snapping\n",
+                     fxMesa->screen_width,
+                      fxMesa->screen_height,
+                      colDepth,
+                      fxMesa->bgrOrder ? "BGR" : "RGB",
+                      fxMesa->snapVertices ? "" : "no ");
    }
 
+  sprintf(fxMesa->rendererString, "Mesa %s v0.60 %s",
+                           grGetString(GR_RENDERER),
+                           grGetString(GR_HARDWARE));
+
    fxMesa->glVis = _mesa_create_visual(GL_TRUE,                /* RGB mode */
                                       doubleBuffer,
                                       GL_FALSE,        /* stereo */
@@ -759,10 +746,10 @@ fxMesaDestroyContext(fxMesaContext fxMesa)
         fxMesa->stats.swapBuffer = 1;
 
       fprintf(stderr, "Textures Stats:\n");
-      fprintf(stderr, "  Free texture memory on TMU0: %d:\n",
+      fprintf(stderr, "  Free texture memory on TMU0: %d\n",
              fxMesa->freeTexMem[FX_TMU0]);
       if (fxMesa->haveTwoTMUs)
-        fprintf(stderr, "  Free texture memory on TMU1: %d:\n",
+        fprintf(stderr, "  Free texture memory on TMU1: %d\n",
                 fxMesa->freeTexMem[FX_TMU1]);
       fprintf(stderr, "  # request to TMM to upload a texture objects: %u\n",
              fxMesa->stats.reqTexUpload);
@@ -872,6 +859,7 @@ fxMesaSwapBuffers(void)
 
         grBufferSwap(fxMesaCurrentCtx->swapInterval);
 
+#if 0
         /*
          * Don't allow swap buffer commands to build up!
          */
@@ -883,6 +871,7 @@ fxMesaSwapBuffers(void)
               in order to enable this option) */
            /* usleep(10000); */
            ;
+#endif
 
         fxMesaCurrentCtx->stats.swapBuffer++;
       }
@@ -897,7 +886,7 @@ void GLAPIENTRY
 fxCloseHardware(void)
 {
    if (glbGlideInitialized) {
-      if (fxMesaCurrentCtx && fxMesaCurrentCtx->verbose) {
+      if (getenv("MESA_FX_INFO")) {
         GrSstPerfStats_t st;
 
         FX_grSstPerfStats(&st);
index 2f0d4fc9b2876432db6be452d36d02508a864f46..cbd906627db4499fee6dd9f7069a00cf3082fe52 100644 (file)
@@ -1338,6 +1338,10 @@ fxDDInitFxMesaContext(fxMesaContext fxMesa)
       grLfbWriteColorFormat(GR_COLORFORMAT_ABGR);
    }
 
+   if (fxMesa->Glide.grSetNumPendingBuffers != NULL) {
+      fxMesa->Glide.grSetNumPendingBuffers(fxMesa->maxPendingSwapBuffers);
+   }
+
    fxMesa->textureAlign = FX_grGetInteger(GR_TEXTURE_ALIGN);
    /* [koolsmoky] */
    {
@@ -1499,6 +1503,10 @@ fxDDInitExtensions(GLcontext * ctx)
    }
 
    /* core-level extensions */
+#if 0
+   /* not until texel fetchers are right */
+   _mesa_enable_extension(ctx, "GL_SGIS_generate_mipmaps");
+#endif
 #if 1
    _mesa_enable_extension(ctx, "GL_ARB_vertex_buffer_object");
 #endif
@@ -1507,10 +1515,6 @@ fxDDInitExtensions(GLcontext * ctx)
    _mesa_enable_extension(ctx, "GL_ARB_fragment_program");
    _mesa_enable_extension(ctx, "GL_ARB_vertex_program");
 #endif
-#if 0
-   /* not until texel fetchers are right */
-   _mesa_enable_extension(ctx, "GL_SGIS_generate_mipmaps");
-#endif
 }
 
 
index 3e7e433f249da853ca9b600ded8f306b40341d33..a619cf10148c1f6a0247dcc087dbde4ef911e3d6 100644 (file)
@@ -539,7 +539,7 @@ struct tfxMesaContext
    FxBool HaveTexUma;  /* TEXUMA */
    FxBool HaveTexus2;  /* Texus 2 - FXT1 */
    struct tdfx_glide Glide;
-   char rendererString[100];
+   char rendererString[64];
 };
 
 
index 7f75f1292c2242d8b64df60be902142a1119b09c..d49878ae18de3835a87c6a03d17ae9754cdf5877 100644 (file)
@@ -814,6 +814,7 @@ const char *TRP_TXCOMPRESS (FxU32 compress)
 /*
 ** glide extensions
 */
+void (FX_CALL *real_grSetNumPendingBuffers) (FxI32 NumPendingBuffers);
 char * (FX_CALL *real_grGetRegistryOrEnvironmentStringExt) (char *theEntry);
 void (FX_CALL *real_grGetGammaTableExt) (FxU32 nentries, FxU32 *red, FxU32 *green, FxU32 *blue);
 void (FX_CALL *real_grChromaRangeModeExt) (GrChromakeyMode_t mode);
@@ -1024,14 +1025,6 @@ FxBool FX_CALL trap_grSstWinClose (GrContext_t context)
 #undef FN_NAME
 }
 
-void FX_CALL trap_grSetNumPendingBuffers (FxI32 NumPendingBuffers)
-{
-#define FN_NAME "grSetNumPendingBuffers"
- TRAP_LOG("%s(%ld)\n", FN_NAME, NumPendingBuffers);
- grSetNumPendingBuffers(NumPendingBuffers);
-#undef FN_NAME
-}
-
 FxBool FX_CALL trap_grSelectContext (GrContext_t context)
 {
 #define FN_NAME "grSelectContext"
@@ -1821,6 +1814,15 @@ void FX_CALL trap_guFogGenerateLinear (GrFog_t *fogtable,
 /*
 ** glide extensions
 */
+void FX_CALL trap_grSetNumPendingBuffers (FxI32 NumPendingBuffers)
+{
+#define FN_NAME "grSetNumPendingBuffers"
+ TRAP_LOG("%s(%ld)\n", FN_NAME, NumPendingBuffers);
+ assert(real_grSetNumPendingBuffers);
+ (*real_grSetNumPendingBuffers)(NumPendingBuffers);
+#undef FN_NAME
+}
+
 char *FX_CALL trap_grGetRegistryOrEnvironmentStringExt (char *theEntry)
 {
 #define FN_NAME "grGetRegistryOrEnvironmentStringExt"
@@ -2243,14 +2245,17 @@ void tdfx_hook_glide (struct tdfx_glide *Glide)
 #if DEBUG_TRAP
 #define GET_EXT_ADDR(name) *(GrProc *)&real_##name = grGetProcAddress(#name), Glide->name = trap_##name
 #define GET_EXT_FAKE(name) GET_EXT_ADDR(name); if (real_##name == NULL) real_##name = fake_##name
+#define GET_EXT_NULL(name) GET_EXT_ADDR(name); if (real_##name == NULL) Glide->name = NULL
 #else  /* DEBUG_TRAP */
 #define GET_EXT_ADDR(name) *(GrProc *)&Glide->name = grGetProcAddress(#name)
 #define GET_EXT_FAKE(name) GET_EXT_ADDR(name); if (Glide->name == NULL) Glide->name = fake_##name
+#define GET_EXT_NULL(name) GET_EXT_ADDR(name)
 #endif /* DEBUG_TRAP */
 
  /*
  ** glide extensions
  */
+ GET_EXT_NULL(grSetNumPendingBuffers);
  GET_EXT_FAKE(grGetRegistryOrEnvironmentStringExt);
  GET_EXT_ADDR(grGetGammaTableExt);
  GET_EXT_ADDR(grChromaRangeModeExt);
@@ -2284,9 +2289,9 @@ void tdfx_hook_glide (struct tdfx_glide *Glide)
  /*
  ** texus
  */
- GET_EXT_ADDR(txImgQuantize);
- GET_EXT_ADDR(txMipQuantize);
- GET_EXT_ADDR(txPalToNcc);
+ GET_EXT_NULL(txImgQuantize);
+ GET_EXT_NULL(txMipQuantize);
+ GET_EXT_NULL(txPalToNcc);
 
 #undef GET_EXT_ADDR
 }
index cc8c059cd2323d7e1935f9697af899c45f6f9c43..57a891b6a99cf26347009a70c2d5236b6b5af8a8 100644 (file)
@@ -74,7 +74,6 @@ void FX_CALL trap_grFinish (void);
 void FX_CALL trap_grFlush (void);
 GrContext_t FX_CALL trap_grSstWinOpen (FxU32 hWnd, GrScreenResolution_t screen_resolution, GrScreenRefresh_t refresh_rate, GrColorFormat_t color_format, GrOriginLocation_t origin_location, int nColBuffers, int nAuxBuffers);
 FxBool FX_CALL trap_grSstWinClose (GrContext_t context);
-void FX_CALL trap_grSetNumPendingBuffers (FxI32 NumPendingBuffers);
 FxBool FX_CALL trap_grSelectContext (GrContext_t context);
 void FX_CALL trap_grSstOrigin (GrOriginLocation_t origin);
 void FX_CALL trap_grSstSelect (int which_sst);
@@ -207,7 +206,6 @@ void FX_CALL trap_guFogGenerateLinear (GrFog_t *fogtable, float nearZ, float far
 #define grFlush                         trap_grFlush
 #define grSstWinOpen                    trap_grSstWinOpen
 #define grSstWinClose                   trap_grSstWinClose
-#define grSetNumPendingBuffers          trap_grSetNumPendingBuffers
 #define grSelectContext                 trap_grSelectContext
 #define grSstOrigin                     trap_grSstOrigin
 #define grSstSelect                     trap_grSstSelect
@@ -335,6 +333,7 @@ struct tdfx_glide {
    /*
    ** glide extensions
    */
+   void (FX_CALL *grSetNumPendingBuffers) (FxI32 NumPendingBuffers);
    char * (FX_CALL *grGetRegistryOrEnvironmentStringExt) (char *theEntry);
    void (FX_CALL *grGetGammaTableExt) (FxU32 nentries, FxU32 *red, FxU32 *green, FxU32 *blue);
    void (FX_CALL *grChromaRangeModeExt) (GrChromakeyMode_t mode);
index 5a6f18a16904e7044c45cffa9f7f674d263e3408..0208d15f3c2706c01baca5571c68b4d4176c111b 100644 (file)
@@ -152,13 +152,7 @@ fxTMUInit(fxMesaContext fxMesa, int tmu)
    chunk = (fxMesa->type >= GR_SSTTYPE_Banshee) ? (end - start) : FX_2MB_SPLIT;
        
    if (fxMesa->verbose) {
-      fprintf(stderr, "Voodoo %s configuration:\n",
-             (tmu == FX_TMU0) ? "TMU0" : "TMU1");
-      fprintf(stderr, "Voodoo  Lower texture memory address (%u)\n",
-             (unsigned int) start);
-      fprintf(stderr, "Voodoo  Higher texture memory address (%u)\n",
-             (unsigned int) end);
-      fprintf(stderr, "Voodoo  Splitting Texture memory in %luMB blocks:\n", chunk >> 20);
+      fprintf(stderr, "Voodoo TMU%d configuration:\n", tmu);
    }
 
    fxMesa->freeTexMem[tmu] = end - start;
@@ -173,7 +167,7 @@ fxTMUInit(fxMesaContext fxMesa, int tmu)
         blockend = blockstart + chunk;
 
       if (fxMesa->verbose)
-        fprintf(stderr, "Voodoo    %07u-%07u\n",
+        fprintf(stderr, "Voodoo   %08u-%08u\n",
                 (unsigned int) blockstart, (unsigned int) blockend);
 
       tmn = fxTMNewRangeNode(fxMesa, blockstart, blockend);
index c70bb3b892402b25d2a1ca27de4a8801825a7adf..3abb1a0c85d2b0f0b2e0520538636b50b741c38f 100644 (file)
@@ -334,9 +334,7 @@ wglCreateContext(HDC hdc)
    {
     char *env;
     /* always log when debugging, or if user demands */
-#if !FX_DEBUG
-    if ((env = getenv("MESA_FX_INFO")) && env[0] == 'r')
-#endif
+    if (TDFX_DEBUG || ((env = getenv("MESA_FX_INFO")) && env[0] == 'r'))
       freopen("MESA.LOG", "w", stderr);
    }
 
@@ -702,47 +700,12 @@ wglChoosePixelFormat(HDC hdc, const PIXELFORMATDESCRIPTOR * ppfd)
    int i, best = -1, qt_valid_pix;
    PIXELFORMATDESCRIPTOR pfd = *ppfd;
 
-#if 0
-  FILE *pix_file;
-  pix_file = fopen("pix_log.txt", "a");
-  if (pix_file) {
-  fprintf(pix_file, "wglChoosePixelFormat\n");
-  fprintf(pix_file, "nSize           = %d\n",pfd.nSize);
-  fprintf(pix_file, "nVersion        = %d\n",pfd.nVersion);
-  fprintf(pix_file, "dwFlags         = %d\n",pfd.dwFlags);
-  fprintf(pix_file, "iPixelType      = %d\n",pfd.iPixelType);
-  fprintf(pix_file, "cColorBits      = %d\n",pfd.cColorBits);
-  fprintf(pix_file, "cRedBits        = %d\n",pfd.cRedBits);
-  fprintf(pix_file, "cRedShift       = %d\n",pfd.cRedShift);
-  fprintf(pix_file, "cGreenBits      = %d\n",pfd.cGreenBits);
-  fprintf(pix_file, "cGreenShift     = %d\n",pfd.cGreenShift);
-  fprintf(pix_file, "cBlueBits       = %d\n",pfd.cBlueBits);
-  fprintf(pix_file, "cBlueShift      = %d\n",pfd.cBlueShift);
-  fprintf(pix_file, "cAlphaBits      = %d\n",pfd.cAlphaBits);
-  fprintf(pix_file, "cAlphaShift     = %d\n",pfd.cAlphaShift);
-  fprintf(pix_file, "cAccumBits      = %d\n",pfd.cAccumBits);
-  fprintf(pix_file, "cAccumRedBits   = %d\n",pfd.cAccumRedBits);
-  fprintf(pix_file, "cAccumGreenBits = %d\n",pfd.cAccumGreenBits);
-  fprintf(pix_file, "cAccumBlueBits  = %d\n",pfd.cAccumBlueBits);
-  fprintf(pix_file, "cAccumAlphaBits = %d\n",pfd.cAccumAlphaBits);
-  fprintf(pix_file, "cDepthBits      = %d\n",pfd.cDepthBits);
-  fprintf(pix_file, "cStencilBits    = %d\n",pfd.cStencilBits);
-  fprintf(pix_file, "cAuxBuffers     = %d\n",pfd.cAuxBuffers);
-  fprintf(pix_file, "iLayerType      = %d\n",pfd.iLayerType);
-  fprintf(pix_file, "bReserved       = %d\n",pfd.bReserved);
-  fprintf(pix_file, "dwLayerMask     = %d\n",pfd.dwLayerMask);
-  fprintf(pix_file, "dwVisibleMask   = %d\n",pfd.dwVisibleMask);
-  fprintf(pix_file, "dwDamageMask    = %d\n",pfd.dwDamageMask);
-  fclose(pix_file);
-  }
-#endif
-
    qt_valid_pix = pfd_tablen();
 
 #if 1 || QUAKE2 || GORE
   /* QUAKE2: 24+32 */
   /* GORE  : 24+16 */
-  if (pfd.cColorBits == 24) {
+  if ((pfd.cColorBits == 24) || (pfd.cColorBits == 32)) {
      /* the first 2 entries are 16bit */
      pfd.cColorBits = (qt_valid_pix > 2) ? 32 : 16;
   }
@@ -783,10 +746,8 @@ wglChoosePixelFormat(HDC hdc, const PIXELFORMATDESCRIPTOR * ppfd)
       if (pfd.cAlphaBits > 0 && pix[i].pfd.cAlphaBits == 0)
         continue;              /* need alpha buffer */
 
-#if 0
-      if ((pfd.cColorBits == 32) && (pfd.cStencilBits > 0 && pix[i].pfd.cStencilBits == 0))
-        continue;              /* need stencil */
-#endif
+      if (pfd.cStencilBits > 0 && pix[i].pfd.cStencilBits == 0)
+        continue;              /* need stencil buffer */
 
       if (pfd.iPixelType == pix[i].pfd.iPixelType) {
         best = i + 1;
@@ -795,6 +756,38 @@ wglChoosePixelFormat(HDC hdc, const PIXELFORMATDESCRIPTOR * ppfd)
    }
 
    if (best == -1) {
+      FILE *err = fopen("MESA.LOG", "w");
+      if (err != NULL) {
+         fprintf(err, "wglChoosePixelFormat failed\n");
+         fprintf(err, "\tnSize           = %d\n", ppfd->nSize);
+         fprintf(err, "\tnVersion        = %d\n", ppfd->nVersion);
+         fprintf(err, "\tdwFlags         = %d\n", ppfd->dwFlags);
+         fprintf(err, "\tiPixelType      = %d\n", ppfd->iPixelType);
+         fprintf(err, "\tcColorBits      = %d\n", ppfd->cColorBits);
+         fprintf(err, "\tcRedBits        = %d\n", ppfd->cRedBits);
+         fprintf(err, "\tcRedShift       = %d\n", ppfd->cRedShift);
+         fprintf(err, "\tcGreenBits      = %d\n", ppfd->cGreenBits);
+         fprintf(err, "\tcGreenShift     = %d\n", ppfd->cGreenShift);
+         fprintf(err, "\tcBlueBits       = %d\n", ppfd->cBlueBits);
+         fprintf(err, "\tcBlueShift      = %d\n", ppfd->cBlueShift);
+         fprintf(err, "\tcAlphaBits      = %d\n", ppfd->cAlphaBits);
+         fprintf(err, "\tcAlphaShift     = %d\n", ppfd->cAlphaShift);
+         fprintf(err, "\tcAccumBits      = %d\n", ppfd->cAccumBits);
+         fprintf(err, "\tcAccumRedBits   = %d\n", ppfd->cAccumRedBits);
+         fprintf(err, "\tcAccumGreenBits = %d\n", ppfd->cAccumGreenBits);
+         fprintf(err, "\tcAccumBlueBits  = %d\n", ppfd->cAccumBlueBits);
+         fprintf(err, "\tcAccumAlphaBits = %d\n", ppfd->cAccumAlphaBits);
+         fprintf(err, "\tcDepthBits      = %d\n", ppfd->cDepthBits);
+         fprintf(err, "\tcStencilBits    = %d\n", ppfd->cStencilBits);
+         fprintf(err, "\tcAuxBuffers     = %d\n", ppfd->cAuxBuffers);
+         fprintf(err, "\tiLayerType      = %d\n", ppfd->iLayerType);
+         fprintf(err, "\tbReserved       = %d\n", ppfd->bReserved);
+         fprintf(err, "\tdwLayerMask     = %d\n", ppfd->dwLayerMask);
+         fprintf(err, "\tdwVisibleMask   = %d\n", ppfd->dwVisibleMask);
+         fprintf(err, "\tdwDamageMask    = %d\n", ppfd->dwDamageMask);
+         fclose(err);
+      }
+
       SetLastError(0);
       return (0);
    }