[Vm-dev] [commit] r2405 - Merging support files from cogvm branch.

commits at squeakvm.org commits at squeakvm.org
Thu Jun 9 07:33:56 UTC 2011


Author: andreas
Date: 2011-06-09 00:33:56 -0700 (Thu, 09 Jun 2011)
New Revision: 2405

Modified:
   trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32D3D.c
   trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32OpenGL.c
   trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32OpenGL.h
Log:
Merging support files from cogvm branch.

Modified: trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32D3D.c
===================================================================
--- trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32D3D.c	2011-06-09 07:00:37 UTC (rev 2404)
+++ trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32D3D.c	2011-06-09 07:33:56 UTC (rev 2405)
@@ -6,7 +6,7 @@
 *   AUTHOR:  Andreas Raab (ar)
 *   ADDRESS: Walt Disney Imagineering, Glendale, CA
 *   EMAIL:   Andreas.Raab at disney.com
-*   RCSID:   $Id: sqWin32D3D.c,v 1.8 2002/09/05 19:30:45 andreasraab Exp $
+*   RCSID:   $Id$
 *
 *   NOTES:
 *
@@ -36,7 +36,7 @@
 #define forceFlush 1
 
 /* Note: Print this stuff into a file in case we lock up*/
-# define DPRINTF(vLevel, args) if(vLevel <= verboseLevel) {\
+# define DPRINTF3D(vLevel, args) if(vLevel <= verboseLevel) {\
 	FILE *fp = fopen("Squeak3D.log", "at");\
 	if(fp) { fprintf args; if(forceFlush) fflush(fp); fclose(fp); }}
 
@@ -59,7 +59,7 @@
 extern int verboseLevel;
 #endif
 
-#define ERROR_CHECK if(FAILED(hRes)) { DPRINTF(2, (fp, "Error (%x) in %s, line %d\n", hRes, __FILE__, __LINE__))}
+#define ERROR_CHECK if(FAILED(hRes)) { DPRINTF3D(2, (fp, "Error (%x) in %s, line %d\n", hRes, __FILE__, __LINE__))}
 
 /*****************************************************************************/
 /*****************************************************************************/
@@ -145,7 +145,7 @@
 #define RELEASE(lp) if(lp) { lp->lpVtbl->Release(lp); lp = NULL; }
 
 d3dRenderer *d3dRendererFromHandle(int handle) {
-  DPRINTF(7, (fp, "Looking for renderer id: %d\n", handle));
+  DPRINTF3D(7, (fp, "Looking for renderer id: %d\n", handle));
   if(handle < 0 || handle >= MAX_RENDERER) return NULL;
   if(allRenderer[handle].fUsed) return allRenderer+handle;
   return NULL;
@@ -169,26 +169,26 @@
 	 DDLOCK_NOSYSLOCK | DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT, NULL);
   if(!FAILED(hRes)) return DD_OK;
   if(printWarnings)
-    DPRINTF(3,(fp,"WARNING: Failed to lock surface using DDLOCK_NOSYSLOCK | DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT (errCode=%X)\n",hRes));
+    DPRINTF3D(3,(fp,"WARNING: Failed to lock surface using DDLOCK_NOSYSLOCK | DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT (errCode=%X)\n",hRes));
   hRes = lpdd->lpVtbl->
     Lock(lpdd, NULL, ddsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT, NULL);
   if(!FAILED(hRes)) return DD_OK;
   if(printWarnings)
-    DPRINTF(3,(fp,"WARNING: Failed to lock surface using DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT (errCode=%X)\n",hRes));
+    DPRINTF3D(3,(fp,"WARNING: Failed to lock surface using DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT (errCode=%X)\n",hRes));
   hRes = lpdd->lpVtbl->Lock(lpdd, NULL, ddsd, DDLOCK_WAIT, NULL);
   if(!FAILED(hRes)) return DD_OK;
   if(printWarnings)
-    DPRINTF(3,(fp,"WARNING: Failed to lock surface using DDLOCK_WAIT (errCode=%X)\n",hRes));
+    DPRINTF3D(3,(fp,"WARNING: Failed to lock surface using DDLOCK_WAIT (errCode=%X)\n",hRes));
   /* Wait until the blt completed */
   do {
     hRes = lpdd->lpVtbl->GetBltStatus(lpdd, DDGBS_ISBLTDONE);
   } while(hRes == DDERR_WASSTILLDRAWING);
   if(FAILED(hRes)) {
-    DPRINTF(3,(fp,"WARNING: Blt not completed on surface (errCode=%X)\n",hRes));
+    DPRINTF3D(3,(fp,"WARNING: Blt not completed on surface (errCode=%X)\n",hRes));
   }
   hRes = lpdd->lpVtbl->Lock(lpdd, NULL, ddsd, 0, NULL);
   if(!FAILED(hRes)) return DD_OK;
-  DPRINTF(1,(fp,"ERROR: Failed to lock surface using (errCode=%X)\n",hRes));
+  DPRINTF3D(1,(fp,"ERROR: Failed to lock surface using (errCode=%X)\n",hRes));
   return hRes;
 }
 
@@ -202,7 +202,7 @@
   desc.dwSize = sizeof(DDSURFACEDESC2);
   hRes = lpddSurface->lpVtbl->GetSurfaceDesc(lpddSurface, &desc);
   if(FAILED(hRes)) {
-    DPRINTF(1,(fp,"ERROR: Failed to obtain surface descriptor (d3dGetSurfaceFormat) (errCode=%X)\n",hRes));
+    DPRINTF3D(1,(fp,"ERROR: Failed to obtain surface descriptor (d3dGetSurfaceFormat) (errCode=%X)\n",hRes));
     return 0;
   }
   *width = desc.dwWidth;
@@ -233,7 +233,7 @@
 
   hRes = lpddSurface->lpVtbl->Unlock(lpddSurface, NULL);
   if(FAILED(hRes)) {
-    DPRINTF(1,(fp,"ERROR: Failed to unlock surface (d3dUnlockSurface) (errCode=%X)\n",hRes));
+    DPRINTF3D(1,(fp,"ERROR: Failed to unlock surface (d3dUnlockSurface) (errCode=%X)\n",hRes));
     return 0;
   }
   return 1;
@@ -294,70 +294,70 @@
   /* Check the triangle capabilities of this device */
   triCaps = &lpDeviceDesc->dpcTriCaps;
 
-  DPRINTF(3,(fp, "\n#### Checking new device\n"));
-  DPRINTF(3,(fp, "Device name: %s\n", lpszDeviceName));
-  DPRINTF(3,(fp, "Device description: %s\n", lpszDeviceDesc));
-  DPRINTF(3,(fp, "Hardware accelerated: %s\n", fIsHardware ? "YES" : "NO"));
-  DPRINTF(3,(fp, "Available render depths: "));
-  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_1) DPRINTF(3,(fp, "1 "));
-  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_2) DPRINTF(3,(fp, "2 "));
-  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_4) DPRINTF(3,(fp, "4 "));
-  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_8) DPRINTF(3,(fp, "8 "));
-  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_16) DPRINTF(3,(fp, "16 "));
-  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_24) DPRINTF(3,(fp, "24 "));
-  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_32) DPRINTF(3,(fp, "32 "));
-  DPRINTF(3,(fp, "\n"));
+  DPRINTF3D(3,(fp, "\n#### Checking new device\n"));
+  DPRINTF3D(3,(fp, "Device name: %s\n", lpszDeviceName));
+  DPRINTF3D(3,(fp, "Device description: %s\n", lpszDeviceDesc));
+  DPRINTF3D(3,(fp, "Hardware accelerated: %s\n", fIsHardware ? "YES" : "NO"));
+  DPRINTF3D(3,(fp, "Available render depths: "));
+  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_1) DPRINTF3D(3,(fp, "1 "));
+  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_2) DPRINTF3D(3,(fp, "2 "));
+  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_4) DPRINTF3D(3,(fp, "4 "));
+  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_8) DPRINTF3D(3,(fp, "8 "));
+  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_16) DPRINTF3D(3,(fp, "16 "));
+  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_24) DPRINTF3D(3,(fp, "24 "));
+  if(lpDeviceDesc->dwDeviceRenderBitDepth & DDBD_32) DPRINTF3D(3,(fp, "32 "));
+  DPRINTF3D(3,(fp, "\n"));
 
-  DPRINTF(3,(fp, "Available Z-buffer depths: "));
-  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_1) DPRINTF(3,(fp, "1 "));
-  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_2) DPRINTF(3,(fp, "2 "));
-  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_4) DPRINTF(3,(fp, "4 "));
-  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_8) DPRINTF(3,(fp, "8 "));
-  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_16) DPRINTF(3,(fp, "16 "));
-  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_24) DPRINTF(3,(fp, "24 "));
-  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_32) DPRINTF(3,(fp, "32 "));
-  DPRINTF(3,(fp, "\n"));
+  DPRINTF3D(3,(fp, "Available Z-buffer depths: "));
+  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_1) DPRINTF3D(3,(fp, "1 "));
+  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_2) DPRINTF3D(3,(fp, "2 "));
+  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_4) DPRINTF3D(3,(fp, "4 "));
+  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_8) DPRINTF3D(3,(fp, "8 "));
+  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_16) DPRINTF3D(3,(fp, "16 "));
+  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_24) DPRINTF3D(3,(fp, "24 "));
+  if(lpDeviceDesc->dwDeviceZBufferBitDepth & DDBD_32) DPRINTF3D(3,(fp, "32 "));
+  DPRINTF3D(3,(fp, "\n"));
 
-  DPRINTF(3,(fp, "Z-buffer tests: "));
-  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_NEVER) DPRINTF(3,(fp, "NEVER "));
-  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_LESS) DPRINTF(3,(fp, "LESS "));
-  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_EQUAL) DPRINTF(3,(fp, "EQUAL "));
-  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_LESSEQUAL) DPRINTF(3,(fp, "LESSEQUAL "));
-  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_GREATER) DPRINTF(3,(fp, "GREATER "));
-  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_NOTEQUAL) DPRINTF(3,(fp, "NOTEQUAL "));
-  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_GREATEREQUAL) DPRINTF(3,(fp, "GREATEREQUAL "));
-  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_ALWAYS) DPRINTF(3,(fp, "ALWAYS "));
-  DPRINTF(3,(fp, "\n"));
+  DPRINTF3D(3,(fp, "Z-buffer tests: "));
+  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_NEVER) DPRINTF3D(3,(fp, "NEVER "));
+  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_LESS) DPRINTF3D(3,(fp, "LESS "));
+  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_EQUAL) DPRINTF3D(3,(fp, "EQUAL "));
+  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_LESSEQUAL) DPRINTF3D(3,(fp, "LESSEQUAL "));
+  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_GREATER) DPRINTF3D(3,(fp, "GREATER "));
+  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_NOTEQUAL) DPRINTF3D(3,(fp, "NOTEQUAL "));
+  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_GREATEREQUAL) DPRINTF3D(3,(fp, "GREATEREQUAL "));
+  if(triCaps->dwZCmpCaps & D3DPCMPCAPS_ALWAYS) DPRINTF3D(3,(fp, "ALWAYS "));
+  DPRINTF3D(3,(fp, "\n"));
 
-  DPRINTF(3,(fp, "Gouraud shading (RGB): %s\n",
+  DPRINTF3D(3,(fp, "Gouraud shading (RGB): %s\n",
 	     (triCaps->dwShadeCaps & D3DPSHADECAPS_COLORGOURAUDRGB) ? "YES" : "NO"));
-  DPRINTF(3,(fp, "Texture perspective correction: %s\n",
+  DPRINTF3D(3,(fp, "Texture perspective correction: %s\n",
 	     (triCaps->dwTextureCaps & D3DPTEXTURECAPS_PERSPECTIVE) ? "YES" : "NO"));
-  DPRINTF(3,(fp, "Bilinear texture interpolation: %s\n",
+  DPRINTF3D(3,(fp, "Bilinear texture interpolation: %s\n",
 	     (triCaps->dwTextureFilterCaps & D3DPTFILTERCAPS_LINEAR) ? "YES" : "NO"));
 
-  DPRINTF(3, (fp, "Dithering: %s\n",
+  DPRINTF3D(3, (fp, "Dithering: %s\n",
     (triCaps->dwRasterCaps & D3DPRASTERCAPS_DITHER) ? "YES" : "NO"));
 
-  DPRINTF(3, (fp, "Range based fog: %s\n",
+  DPRINTF3D(3, (fp, "Range based fog: %s\n",
     (triCaps->dwRasterCaps & D3DPRASTERCAPS_FOGRANGE) ? "YES" : "NO"));
-  DPRINTF(3, (fp, "Pixel based fog: %s\n",
+  DPRINTF3D(3, (fp, "Pixel based fog: %s\n",
     (triCaps->dwRasterCaps & D3DPRASTERCAPS_FOGTABLE) ? "YES" : "NO"));
-  DPRINTF(3, (fp, "Vertex based fog: %s\n",
+  DPRINTF3D(3, (fp, "Vertex based fog: %s\n",
     (triCaps->dwRasterCaps & D3DPRASTERCAPS_FOGVERTEX) ? "YES" : "NO"));
 
-  DPRINTF(3, (fp, "W-Buffering: %s\n",
+  DPRINTF3D(3, (fp, "W-Buffering: %s\n",
     (triCaps->dwRasterCaps & D3DPRASTERCAPS_WBUFFER) ? "YES" : "NO"));
-  DPRINTF(3, (fp, "W-based fog: %s\n",
+  DPRINTF3D(3, (fp, "W-based fog: %s\n",
     (triCaps->dwRasterCaps & D3DPRASTERCAPS_WFOG) ? "YES" : "NO"));
-  DPRINTF(3, (fp, "Z-based fog: %s\n",
+  DPRINTF3D(3, (fp, "Z-based fog: %s\n",
     (triCaps->dwRasterCaps & D3DPRASTERCAPS_ZFOG) ? "YES" : "NO"));
 
-  DPRINTF(3, (fp, "Flat fog: %s\n",
+  DPRINTF3D(3, (fp, "Flat fog: %s\n",
     (triCaps->dwShadeCaps & D3DPSHADECAPS_FOGFLAT) ? "YES" : "NO"));
-  DPRINTF(3, (fp, "Gouraud fog: %s\n",
+  DPRINTF3D(3, (fp, "Gouraud fog: %s\n",
     (triCaps->dwShadeCaps & D3DPSHADECAPS_FOGGOURAUD) ? "YES" : "NO"));
-  DPRINTF(3, (fp, "Phong fog: %s\n",
+  DPRINTF3D(3, (fp, "Phong fog: %s\n",
     (triCaps->dwShadeCaps & D3DPSHADECAPS_FOGPHONG) ? "YES" : "NO"));
 
   /* The device must support the current display depth */
@@ -420,9 +420,9 @@
 {
   DDPIXELFORMAT* dest = (DDPIXELFORMAT*)lParam;
 
-  DPRINTF(3,(fp, "### New Z-Buffer format:\n"));
-  DPRINTF(3,(fp, "flags: %x\n", ddpf->dwFlags));
-  DPRINTF(3,(fp, "depth: %d\n", ddpf->dwZBufferBitDepth));
+  DPRINTF3D(3,(fp, "### New Z-Buffer format:\n"));
+  DPRINTF3D(3,(fp, "flags: %x\n", ddpf->dwFlags));
+  DPRINTF3D(3,(fp, "depth: %d\n", ddpf->dwZBufferBitDepth));
   if(ddpf->dwFlags != DDPF_ZBUFFER) 
     D3DENUMRET_OK; /* not a z-buffer */
   if(!dest->dwSize) {
@@ -455,24 +455,24 @@
 
   /* Check for a 8 bit palette indexed texture */
   if(ddpf->dwFlags & DDPF_PALETTEINDEXED8) {
-    DPRINTF(3,(fp, "\nTexture: 8bit palette indexed\n"));
+    DPRINTF3D(3,(fp, "\nTexture: 8bit palette indexed\n"));
     CopyMemory(&renderer->ddpfTextureFormat08, ddpf, sizeof(*ddpf));
     renderer->fTextureFound08 = TRUE;
     return DDENUMRET_OK;
   }
   /* Check for 16 bit textures */
   if((ddpf->dwRGBBitCount == 16) && (ddpf->dwFlags & DDPF_RGB)) {
-    DPRINTF(3,(fp, "\nTexture: 16bit RGB\n"));
-    DPRINTF(3,(fp, "Red mask: %x\n", ddpf->dwRBitMask));
-    DPRINTF(3,(fp, "Green mask: %x\n", ddpf->dwGBitMask));
-    DPRINTF(3,(fp, "Blue mask: %x\n", ddpf->dwBBitMask));
-    DPRINTF(3,(fp, "Alpha mask: %x\n", ddpf->dwRGBAlphaBitMask));
+    DPRINTF3D(3,(fp, "\nTexture: 16bit RGB\n"));
+    DPRINTF3D(3,(fp, "Red mask: %x\n", ddpf->dwRBitMask));
+    DPRINTF3D(3,(fp, "Green mask: %x\n", ddpf->dwGBitMask));
+    DPRINTF3D(3,(fp, "Blue mask: %x\n", ddpf->dwBBitMask));
+    DPRINTF3D(3,(fp, "Alpha mask: %x\n", ddpf->dwRGBAlphaBitMask));
     if((ddpf->dwFlags & DDPF_ALPHAPIXELS) && 
        ddpf->dwRBitMask	== 0x0F00 && 
        ddpf->dwGBitMask	== 0x00F0 && 
        ddpf->dwBBitMask	== 0x000F &&
        ddpf->dwRGBAlphaBitMask == 0xF000) {
-      DPRINTF(3,(fp, "[Note: Perfect 4x4x4x4 texture format]\n"));
+      DPRINTF3D(3,(fp, "[Note: Perfect 4x4x4x4 texture format]\n"));
       CopyMemory(&renderer->ddpfTextureFormat4x4x4x4, ddpf, sizeof(*ddpf));
       renderer->fTextureFound4x4x4x4 = TRUE;
       return DDENUMRET_OK;
@@ -482,23 +482,23 @@
        ddpf->dwBBitMask == 0x001F) {
       if(ddpf->dwFlags & DDPF_ALPHAPIXELS) {
 	if(ddpf->dwRGBAlphaBitMask == 0x8000) {
-	  DPRINTF(3,(fp, "[Note: Perfect 1x5x5x5 texture format]\n"));
+	  DPRINTF3D(3,(fp, "[Note: Perfect 1x5x5x5 texture format]\n"));
 	  CopyMemory(&renderer->ddpfTextureFormat1x5x5x5, ddpf, sizeof(*ddpf));
 	  renderer->fTextureFound1x5x5x5 = TRUE;
 	}
       } else {
-	DPRINTF(3,(fp, "[Note: Perfect 0x5x5x5 texture format]\n"));
+	DPRINTF3D(3,(fp, "[Note: Perfect 0x5x5x5 texture format]\n"));
 	CopyMemory(&renderer->ddpfTextureFormat0x5x5x5, ddpf, sizeof(*ddpf));
 	renderer->fTextureFound0x5x5x5 = TRUE;
       }
     } else {
       if(ddpf->dwFlags & DDPF_ALPHAPIXELS) {
-	DPRINTF(3,(fp, "[Note: Lousy 1x5x5x5 texture format]\n"));
+	DPRINTF3D(3,(fp, "[Note: Lousy 1x5x5x5 texture format]\n"));
 	if(renderer->fTextureFound1x5x5x5) return DDENUMRET_OK;
 	CopyMemory(&renderer->ddpfTextureFormat1x5x5x5, ddpf, sizeof(*ddpf));
 	renderer->fTextureFound1x5x5x5 = TRUE;
       } else {
-	DPRINTF(3,(fp, "[Note: Lousy 0x5x5x5 texture format]\n"));
+	DPRINTF3D(3,(fp, "[Note: Lousy 0x5x5x5 texture format]\n"));
 	if(renderer->fTextureFound0x5x5x5) return DDENUMRET_OK;
 	CopyMemory(&renderer->ddpfTextureFormat0x5x5x5, ddpf, sizeof(*ddpf));
 	renderer->fTextureFound0x5x5x5 = TRUE;
@@ -507,33 +507,33 @@
   }
   /* Check for 32bit textures */
   if( (ddpf->dwRGBBitCount == 32) && (ddpf->dwFlags & DDPF_RGB)) {
-    DPRINTF(3,(fp, "\nTexture: 32bit RGB\n"));
-    DPRINTF(3,(fp, "Red mask: %x\n", ddpf->dwRBitMask));
-    DPRINTF(3,(fp, "Green mask: %x\n", ddpf->dwGBitMask));
-    DPRINTF(3,(fp, "Blue mask: %x\n", ddpf->dwBBitMask));
-    DPRINTF(3,(fp, "Alpha mask: %x\n", ddpf->dwRGBAlphaBitMask));
+    DPRINTF3D(3,(fp, "\nTexture: 32bit RGB\n"));
+    DPRINTF3D(3,(fp, "Red mask: %x\n", ddpf->dwRBitMask));
+    DPRINTF3D(3,(fp, "Green mask: %x\n", ddpf->dwGBitMask));
+    DPRINTF3D(3,(fp, "Blue mask: %x\n", ddpf->dwBBitMask));
+    DPRINTF3D(3,(fp, "Alpha mask: %x\n", ddpf->dwRGBAlphaBitMask));
     if(ddpf->dwRBitMask == 0x00FF0000 && 
        ddpf->dwGBitMask == 0x0000FF00 && 
        ddpf->dwBBitMask == 0x000000FF) {
       if(ddpf->dwFlags & DDPF_ALPHAPIXELS) {
 	if(ddpf->dwRGBAlphaBitMask == 0xFF000000) {
-	  DPRINTF(3,(fp, "[Note: Perfect 8x8x8x8 texture format]\n"));
+	  DPRINTF3D(3,(fp, "[Note: Perfect 8x8x8x8 texture format]\n"));
 	  CopyMemory(&renderer->ddpfTextureFormat8x8x8x8, ddpf, sizeof(*ddpf));
 	  renderer->fTextureFound8x8x8x8 = TRUE;
 	}
       } else {
-	DPRINTF(3,(fp, "[Note: Perfect 0x8x8x8 texture format]\n"));
+	DPRINTF3D(3,(fp, "[Note: Perfect 0x8x8x8 texture format]\n"));
 	CopyMemory(&renderer->ddpfTextureFormat0x8x8x8, ddpf, sizeof(*ddpf));
 	renderer->fTextureFound0x8x8x8 = TRUE;
       }
     } else {
       if(ddpf->dwFlags & DDPF_ALPHAPIXELS) {
-	DPRINTF(3,(fp, "[Note: Lousy 8x8x8x8 texture format]\n"));
+	DPRINTF3D(3,(fp, "[Note: Lousy 8x8x8x8 texture format]\n"));
 	if(renderer->fTextureFound8x8x8x8) return DDENUMRET_OK;
 	CopyMemory(&renderer->ddpfTextureFormat8x8x8x8, ddpf, sizeof(*ddpf));
 	renderer->fTextureFound0x8x8x8 = TRUE;
       } else {
-	DPRINTF(3,(fp, "[Note: Lousy 0x8x8x8 texture format]\n"));
+	DPRINTF3D(3,(fp, "[Note: Lousy 0x8x8x8 texture format]\n"));
 	if(renderer->fTextureFound0x5x5x5) return DDENUMRET_OK;
 	CopyMemory(&renderer->ddpfTextureFormat0x8x8x8, ddpf, sizeof(*ddpf));
 	renderer->fTextureFound0x8x8x8 = TRUE;
@@ -559,19 +559,19 @@
   ddsCaps.dwCaps = DDSCAPS_VIDEOMEMORY;
   hRes = lpDD->lpVtbl->GetAvailableVidMem(lpDD, &ddsCaps, &dwTotal, &dwFree);
   ERROR_CHECK;
-  DPRINTF(3,(fp,"Video memory: %d (available total) %d (available free)\n",
+  DPRINTF3D(3,(fp,"Video memory: %d (available total) %d (available free)\n",
 	     dwTotal, dwFree));
   dwTotal = dwFree = 0;
   ddsCaps.dwCaps = DDSCAPS_TEXTURE;
   hRes = lpDD->lpVtbl->GetAvailableVidMem(lpDD, &ddsCaps, &dwTotal, &dwFree);
   ERROR_CHECK;
-  DPRINTF(3,(fp,"Texture memory: %d (available total) %d (available free)\n",
+  DPRINTF3D(3,(fp,"Texture memory: %d (available total) %d (available free)\n",
 	     dwTotal, dwFree));
   dwTotal = dwFree = 0;
   ddsCaps.dwCaps = DDSCAPS_ZBUFFER;
   hRes = lpDD->lpVtbl->GetAvailableVidMem(lpDD, &ddsCaps, &dwTotal, &dwFree);
   ERROR_CHECK;
-  DPRINTF(3,(fp,"Z-Buffer memory: %d (available total) %d (available free)\n",
+  DPRINTF3D(3,(fp,"Z-Buffer memory: %d (available total) %d (available free)\n",
 	     dwTotal, dwFree));
 }
 
@@ -582,9 +582,9 @@
 
 int d3dInitializePrimary(void) {
   HRESULT hRes;
-  DPRINTF(5,(fp, "[Initializing primary surface]\n"));
+  DPRINTF3D(5,(fp, "[Initializing primary surface]\n"));
   if(!lpDD) {
-    DPRINTF(5,(fp, "[Creating DDraw object]\n"));
+    DPRINTF3D(5,(fp, "[Creating DDraw object]\n"));
     hRes = CoCreateInstance(&CLSID_DirectDraw,
 			    NULL, 
 			    CLSCTX_INPROC_SERVER,
@@ -593,14 +593,14 @@
     ERROR_CHECK;
     if(FAILED(hRes)) return 0;
     if(!lpDD) {
-      DPRINTF(1,(fp,"ERROR: Could not create IDirectDraw7\n"));
+      DPRINTF3D(1,(fp,"ERROR: Could not create IDirectDraw7\n"));
       return 0;
     }
-    DPRINTF(5,(fp, "[Initializing DDraw object]\n"));
+    DPRINTF3D(5,(fp, "[Initializing DDraw object]\n"));
     hRes = lpDD->lpVtbl->Initialize(lpDD, NULL);
     ERROR_CHECK;
     if(FAILED(hRes)) return 0;
-    DPRINTF(5,(fp, "[Setting cooperation level]\n"));
+    DPRINTF3D(5,(fp, "[Setting cooperation level]\n"));
     hRes = lpDD->lpVtbl->
       SetCooperativeLevel(lpDD, *theSTWindow, 
 			  DDSCL_NORMAL | DDSCL_FPUPRESERVE);
@@ -609,12 +609,12 @@
   }
   if(!lpD3D) {
     /* query for the direct3d object */
-    DPRINTF(5,(fp, "[Querying for IDirect3D7]\n"));
+    DPRINTF3D(5,(fp, "[Querying for IDirect3D7]\n"));
     hRes = lpDD->lpVtbl->QueryInterface(lpDD,&IID_IDirect3D7, (LPVOID*)&lpD3D);
     ERROR_CHECK;
     if(FAILED(hRes)) return 0;
     if(!lpD3D) {
-      DPRINTF(1,(fp,"ERROR: Could not retrieve IDirect3D7\n"));
+      DPRINTF3D(1,(fp,"ERROR: Could not retrieve IDirect3D7\n"));
       return 0;
     }
   }
@@ -626,12 +626,12 @@
     ddsd.dwFlags        = DDSD_CAPS;
     ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
 
-    DPRINTF(5,(fp, "[Creating primary surface]\n"));
+    DPRINTF3D(5,(fp, "[Creating primary surface]\n"));
     hRes = lpDD->lpVtbl->CreateSurface( lpDD, &ddsd, &lpddPrimary, NULL );
     ERROR_CHECK;
     if (FAILED(hRes)) return 0;
     if(!lpddPrimary) {
-      DPRINTF(1,(fp,"ERROR: Could not create primary surface\n"));
+      DPRINTF3D(1,(fp,"ERROR: Could not create primary surface\n"));
       return 0;
     }
   }
@@ -643,12 +643,12 @@
    * outside the visible region of the window.
    */
   if(!lpddClipper) {
-    DPRINTF(5,(fp, "[Creating clipper]\n"));
+    DPRINTF3D(5,(fp, "[Creating clipper]\n"));
     hRes = lpDD->lpVtbl->CreateClipper(lpDD, 0UL, &lpddClipper, NULL);
     ERROR_CHECK;
     if(FAILED(hRes)) return 0;
     if(!lpddClipper) {
-      DPRINTF(1,(fp,"ERROR: Could not create clipper\n"));
+      DPRINTF3D(1,(fp,"ERROR: Could not create clipper\n"));
       return 0;
     }
     hRes = lpddClipper->lpVtbl->SetHWnd(lpddClipper, 0UL, *theSTWindow);
@@ -685,18 +685,18 @@
   displayDesc.dwSize = sizeof(displayDesc);
   hRes = lpDD->lpVtbl->GetDisplayMode(lpDD, &displayDesc);
   if(FAILED(hRes)) {
-    DPRINTF(1,(fp, "ERROR: Failed to get current display mode (errCode=%X)\n",hRes));
+    DPRINTF3D(1,(fp, "ERROR: Failed to get current display mode (errCode=%X)\n",hRes));
     goto cleanup;
   }
-  DPRINTF(3,(fp,"Current display width: %d\n",displayDesc.dwWidth));
-  DPRINTF(3,(fp,"Current display height: %d\n",displayDesc.dwHeight));
-  DPRINTF(3,(fp,"Current display depth: %d\n",displayDesc.ddpfPixelFormat.dwRGBBitCount));
+  DPRINTF3D(3,(fp,"Current display width: %d\n",displayDesc.dwWidth));
+  DPRINTF3D(3,(fp,"Current display height: %d\n",displayDesc.dwHeight));
+  DPRINTF3D(3,(fp,"Current display depth: %d\n",displayDesc.ddpfPixelFormat.dwRGBBitCount));
   /* Set the display depth bit */
   switch(displayDesc.ddpfPixelFormat.dwRGBBitCount) {
   case 16: dwDisplayBitDepth = DDBD_16; break;
   case 32: dwDisplayBitDepth = DDBD_32; break;
   default:
-    DPRINTF(1,(fp, "ERROR: Display depth %d is not supported\n", 
+    DPRINTF3D(1,(fp, "ERROR: Display depth %d is not supported\n", 
 	       displayDesc.ddpfPixelFormat.dwRGBBitCount));
     goto cleanup; /* we only deal with 16-32 bit */
   };
@@ -715,7 +715,7 @@
     return 0;
   }
 
-  DPRINTF(3, (fp, "### Using %s\n(%s)\n", 
+  DPRINTF3D(3, (fp, "### Using %s\n(%s)\n", 
 	      renderer->szDeviceName, renderer->szDeviceDesc));
 
   /* enumerate z-buffer formats and find a nice one */
@@ -758,7 +758,7 @@
   hRes = lpDD->lpVtbl->CreateSurface(lpDD, &ddsd, &lpdsZBuffer, NULL);
   if (FAILED(hRes)) {
     /* Scond try in system memory */
-    DPRINTF(2,(fp,"WARNING: Failed to create VRAM z-buffer (errCode=%X)\n",hRes));
+    DPRINTF3D(2,(fp,"WARNING: Failed to create VRAM z-buffer (errCode=%X)\n",hRes));
     ddsd.ddsCaps.dwCaps = DDSCAPS_ZBUFFER | DDSCAPS_SYSTEMMEMORY;
     hRes = lpDD->lpVtbl->CreateSurface(lpDD, &ddsd, &lpdsZBuffer, NULL);
   }
@@ -852,16 +852,16 @@
   d3dRenderer *renderer;
 
   if(flags & ~SUPPORTED_FLAGS) {
-    DPRINTF(1, (fp, "ERROR: Unsupported flags requested( %d)\n", flags));
+    DPRINTF3D(1, (fp, "ERROR: Unsupported flags requested( %d)\n", flags));
     return -1;
   }
 
-  DPRINTF(3, (fp, "---- Initializing D3D ----\n"));
+  DPRINTF3D(3, (fp, "---- Initializing D3D ----\n"));
   for(i=0; i < MAX_RENDERER; i++) {
     if(allRenderer[i].fUsed == 0) break;
   }
   if(i >= MAX_RENDERER) {
-    DPRINTF(1, (fp, "ERROR: Maximum number of renderers (%d) exceeded\n", MAX_RENDERER));
+    DPRINTF3D(1, (fp, "ERROR: Maximum number of renderers (%d) exceeded\n", MAX_RENDERER));
     return -1;
   }
   index = i;
@@ -886,7 +886,7 @@
   if(!(*registerSurface)((int)renderer->lpdsTarget, 
 			 &d3dTargetDispatch, &renderer->surfaceID)) {
     d3dReleaseRenderer(renderer);
-    DPRINTF(1,(fp,"ERROR: Failed to register rendering target\n"));
+    DPRINTF3D(1,(fp,"ERROR: Failed to register rendering target\n"));
     return -1;
   }
   /* all fine now */
@@ -1133,7 +1133,7 @@
 
   if(w & (w-1)) return -1; /* not power of two */
   if(h & (h-1)) return -1; /* not power of two */
-  DPRINTF(5, (fp, "### Allocating new texture (w = %d, h = %d, d = %d)\n", w, h, d));
+  DPRINTF3D(5, (fp, "### Allocating new texture (w = %d, h = %d, d = %d)\n", w, h, d));
 
   /* fill in basic surface structure */
   ZeroMemory( &ddsd, sizeof(DDSURFACEDESC2) );
@@ -1169,7 +1169,7 @@
   /* register texture */
   if(!(*registerSurface)((int)lpdsTexture, &d3dTextureDispatch, &surfaceID)) {
     RELEASE(lpdsTexture);
-    DPRINTF(1,(fp,"ERROR: Failed to register texture\n"));
+    DPRINTF3D(1,(fp,"ERROR: Failed to register texture\n"));
     return -1;
   }
   return surfaceID;
@@ -1239,7 +1239,7 @@
   LPDIRECTDRAWSURFACE7 lpdsTexture;
   /* Look if the surface was registered as D3D surface */
   if(!(*findSurface)(handle, &d3dTextureDispatch, (int*) (&lpdsTexture))) {
-    DPRINTF(3, (fp, "WARNING: Texture (%d) not registered\n", handle));
+    DPRINTF3D(3, (fp, "WARNING: Texture (%d) not registered\n", handle));
     return -1;
   }
   return handle;
@@ -1272,8 +1272,8 @@
   if(!renderer) return 0;
   lpDevice = renderer->lpDevice;
 
-  DPRINTF(5, (fp, "### New Viewport\n"));
-  DPRINTF(5, (fp, "\tx: %d\n\ty: %d\n\tw: %d\n\th: %d\n", x, y, w, h));
+  DPRINTF3D(5, (fp, "### New Viewport\n"));
+  DPRINTF3D(5, (fp, "\tx: %d\n\ty: %d\n\tw: %d\n\th: %d\n", x, y, w, h));
   renderer->viewport[0] = x;
   renderer->viewport[1] = y;
   renderer->viewport[2] = w;
@@ -1331,7 +1331,7 @@
   lpdsTarget = renderer->lpdsTarget;
 
   if(renderer->fSceneStarted) {
-    DPRINTF(5,(fp,"Ending current scene\n"));
+    DPRINTF3D(5,(fp,"Ending current scene\n"));
     hRes = lpDevice->lpVtbl->EndScene(lpDevice);
     ERROR_CHECK;
     renderer->fSceneStarted = 0;
@@ -1353,7 +1353,7 @@
   lpDevice = renderer->lpDevice;
 
   if(renderer->fSceneStarted) {
-    DPRINTF(5,(fp,"Ending current scene\n"));
+    DPRINTF3D(5,(fp,"Ending current scene\n"));
     hRes = lpDevice->lpVtbl->EndScene(lpDevice);
     ERROR_CHECK;
     renderer->fSceneStarted = 0;
@@ -1413,7 +1413,7 @@
 	if(!fClipperAttached) {
 	  hRes = lpddPrimary->lpVtbl->SetClipper(lpddPrimary, lpddClipper);
 	  if(FAILED(hRes)) {
-	    DPRINTF(2,(fp,"WARNING: Failed to attach clipper (errCode=%X)\n",hRes));
+	    DPRINTF3D(2,(fp,"WARNING: Failed to attach clipper (errCode=%X)\n",hRes));
 	  } else {
 	    fClipperAttached = 1;
 	  }
@@ -1423,7 +1423,7 @@
 	if(fClipperAttached) {
 	  hRes = lpddPrimary->lpVtbl->SetClipper(lpddPrimary, NULL);
 	  if(FAILED(hRes)) {
-	    DPRINTF(2,(fp,"WARNING: Failed to detach clipper (errCode=%X)\n",hRes));
+	    DPRINTF3D(2,(fp,"WARNING: Failed to detach clipper (errCode=%X)\n",hRes));
 	  } else {
 	    fClipperAttached = 0;
 	  }
@@ -1434,7 +1434,7 @@
 	 (meaning there's lots of stuff to clip). Attach it. */
       hRes = lpddPrimary->lpVtbl->SetClipper(lpddPrimary, lpddClipper);
       if(FAILED(hRes)) {
-	DPRINTF(2,(fp,"WARNING: Failed to attach clipper (errCode=%X)\n",hRes));
+	DPRINTF3D(2,(fp,"WARNING: Failed to attach clipper (errCode=%X)\n",hRes));
       } else {
 	fClipperAttached = 1;
       }
@@ -1489,7 +1489,7 @@
       BltFast(lpddPrimary, dstRect.left, dstRect.top, 
 	      lpddSurface, &dxRect, DDBLTFAST_WAIT | DDBLTFAST_NOCOLORKEY);
     if(FAILED(hRes)) {
-      DPRINTF(2,(fp,"WARNING: IDirectDrawSurface::BltFast() failed (errCode=%X)\n",hRes));
+      DPRINTF3D(2,(fp,"WARNING: IDirectDrawSurface::BltFast() failed (errCode=%X)\n",hRes));
     }
   }
   if(fClipperAttached || FAILED(hRes)) {
@@ -1499,7 +1499,7 @@
       Blt(lpddPrimary,&dstRect,lpddSurface, &dxRect, DDBLT_WAIT, NULL);
   }
   if(FAILED(hRes)) {
-    DPRINTF(1,(fp,"ERROR: Failed to blt to primary surface (errCode=%X)\n",hRes));
+    DPRINTF3D(1,(fp,"ERROR: Failed to blt to primary surface (errCode=%X)\n",hRes));
     return 0;
   }
 #if 0
@@ -1529,7 +1529,7 @@
   if(!renderer) return 0;
   lpDevice = renderer->lpDevice;
 
-  DPRINTF(5, (fp, "### Installing new transformations\n"));
+  DPRINTF3D(5, (fp, "### Installing new transformations\n"));
   if(modelViewMatrix) {
     m = modelViewMatrix;
     d._11 = *m++; d._21 = *m++; d._31 = *m++; d._41 = *m++;
@@ -1556,19 +1556,19 @@
     SetTransform(lpDevice, D3DTRANSFORMSTATE_PROJECTION, &d);
   ERROR_CHECK;
 #if 0
-  DPRINTF(1, (fp, "Projection matrix before:\n"));
-  DPRINTF(1, (fp, "\t%g\t%g\t%g\t%g\n", d._11, d._12,d._13,d._14));
-  DPRINTF(1, (fp, "\t%g\t%g\t%g\t%g\n", d._21, d._22,d._23,d._24));
-  DPRINTF(1, (fp, "\t%g\t%g\t%g\t%g\n", d._31, d._32,d._33,d._34));
-  DPRINTF(1, (fp, "\t%g\t%g\t%g\t%g\n", d._41, d._42,d._43,d._44));
+  DPRINTF3D(1, (fp, "Projection matrix before:\n"));
+  DPRINTF3D(1, (fp, "\t%g\t%g\t%g\t%g\n", d._11, d._12,d._13,d._14));
+  DPRINTF3D(1, (fp, "\t%g\t%g\t%g\t%g\n", d._21, d._22,d._23,d._24));
+  DPRINTF3D(1, (fp, "\t%g\t%g\t%g\t%g\n", d._31, d._32,d._33,d._34));
+  DPRINTF3D(1, (fp, "\t%g\t%g\t%g\t%g\n", d._41, d._42,d._43,d._44));
   hRes = lpDevice->lpVtbl->
     GetTransform(lpDevice, D3DTRANSFORMSTATE_PROJECTION, &d);
   ERROR_CHECK;
-  DPRINTF(1, (fp, "Projection matrix after:\n"));
-  DPRINTF(1, (fp, "\t%g\t%g\t%g\t%g\n", d._11, d._12,d._13,d._14));
-  DPRINTF(1, (fp, "\t%g\t%g\t%g\t%g\n", d._21, d._22,d._23,d._24));
-  DPRINTF(1, (fp, "\t%g\t%g\t%g\t%g\n", d._31, d._32,d._33,d._34));
-  DPRINTF(1, (fp, "\t%g\t%g\t%g\t%g\n", d._41, d._42,d._43,d._44));
+  DPRINTF3D(1, (fp, "Projection matrix after:\n"));
+  DPRINTF3D(1, (fp, "\t%g\t%g\t%g\t%g\n", d._11, d._12,d._13,d._14));
+  DPRINTF3D(1, (fp, "\t%g\t%g\t%g\t%g\n", d._21, d._22,d._23,d._24));
+  DPRINTF3D(1, (fp, "\t%g\t%g\t%g\t%g\n", d._31, d._32,d._33,d._34));
+  DPRINTF3D(1, (fp, "\t%g\t%g\t%g\t%g\n", d._41, d._42,d._43,d._44));
 #endif
   return 1;
 }
@@ -1581,7 +1581,7 @@
 
   if(!renderer) return 0;
   lpDevice = renderer->lpDevice;
-  DPRINTF(5, (fp, "### Disabling all lights\n"));
+  DPRINTF3D(5, (fp, "### Disabling all lights\n"));
   
   for(i = 0; i <= renderer->maxLights; i++) {
     hRes = lpDevice->lpVtbl->LightEnable(lpDevice, i, FALSE);
@@ -1601,27 +1601,27 @@
   if(!renderer) return 0;
   lpDevice = renderer->lpDevice;
 
-  DPRINTF(5, (fp, "### New Material\n"));
+  DPRINTF3D(5, (fp, "### New Material\n"));
   if(!mat) {
-    DPRINTF(5, (fp, "\tOFF (material == nil)\n"));
+    DPRINTF3D(5, (fp, "\tOFF (material == nil)\n"));
     hRes = lpDevice->lpVtbl->
       SetRenderState(lpDevice, D3DRENDERSTATE_LIGHTING, FALSE);
     ERROR_CHECK;
     return 1;
   }
-  DPRINTF(5, (fp, "\tambient  : %g, %g, %g, %g\n",
+  DPRINTF3D(5, (fp, "\tambient  : %g, %g, %g, %g\n",
 	      mat->ambient[0], mat->ambient[1], 
 	      mat->ambient[2], mat->ambient[3]));
-  DPRINTF(5, (fp, "\tdiffuse  : %g, %g, %g, %g\n",
+  DPRINTF3D(5, (fp, "\tdiffuse  : %g, %g, %g, %g\n",
 	      mat->diffuse[0], mat->diffuse[1], 
 	      mat->diffuse[2], mat->diffuse[3]));
-  DPRINTF(5, (fp, "\tspecular : %g, %g, %g, %g\n",
+  DPRINTF3D(5, (fp, "\tspecular : %g, %g, %g, %g\n",
 	      mat->specular[0], mat->specular[1], 
 	      mat->specular[2], mat->specular[3]));
-  DPRINTF(5, (fp, "\temission : %g, %g, %g, %g\n",
+  DPRINTF3D(5, (fp, "\temission : %g, %g, %g, %g\n",
 	      mat->emission[0], mat->emission[1], 
 	      mat->emission[2], mat->emission[3]));
-  DPRINTF(5, (fp, "\tshininess: %g\n", mat->shininess));
+  DPRINTF3D(5, (fp, "\tshininess: %g\n", mat->shininess));
 
   hRes = lpDevice->lpVtbl->
     SetRenderState(lpDevice, D3DRENDERSTATE_LIGHTING, TRUE);
@@ -1661,10 +1661,10 @@
   if(idx < 0) return 0;
   lpDevice = renderer->lpDevice;
 
-  DPRINTF(5, (fp, "### New Light (%d)\n", idx));
+  DPRINTF3D(5, (fp, "### New Light (%d)\n", idx));
 
   if(!light) {
-    DPRINTF(5, (fp, "\tDISABLED\n"));
+    DPRINTF3D(5, (fp, "\tDISABLED\n"));
     hRes = lpDevice->lpVtbl->LightEnable(lpDevice, idx, FALSE);
     ERROR_CHECK;
     return 1;
@@ -1672,44 +1672,44 @@
 
   if(idx > renderer->maxLights) renderer->maxLights = idx;
 
-  DPRINTF(5, (fp, "\tambient       : %g, %g, %g, %g\n",
+  DPRINTF3D(5, (fp, "\tambient       : %g, %g, %g, %g\n",
 	      light->ambient[0], light->ambient[1], 
 	      light->ambient[2], light->ambient[3]));
-  DPRINTF(5, (fp, "\tdiffuse       : %g, %g, %g, %g\n",
+  DPRINTF3D(5, (fp, "\tdiffuse       : %g, %g, %g, %g\n",
 	      light->diffuse[0], light->diffuse[1], 
 	      light->diffuse[2], light->diffuse[3]));
-  DPRINTF(5, (fp, "\tspecular      : %g, %g, %g, %g\n",
+  DPRINTF3D(5, (fp, "\tspecular      : %g, %g, %g, %g\n",
 	      light->specular[0], light->specular[1], 
 	      light->specular[2], light->specular[3]));
-  DPRINTF(5, (fp, "\tposition      : %g, %g, %g\n",
+  DPRINTF3D(5, (fp, "\tposition      : %g, %g, %g\n",
 	      light->position[0], light->position[1], light->position[2]));
-  DPRINTF(5, (fp, "\tdirection     : %g, %g, %g\n",
+  DPRINTF3D(5, (fp, "\tdirection     : %g, %g, %g\n",
 	      light->direction[0], light->direction[1], light->direction[2]));
-  DPRINTF(5, (fp, "\tattenuation   : %g, %g, %g\n",
+  DPRINTF3D(5, (fp, "\tattenuation   : %g, %g, %g\n",
 	      light->attenuation[0], light->attenuation[1], 
 	      light->attenuation[2]));
-  DPRINTF(5, (fp, "\tflags [%d]:", light->flags));
+  DPRINTF3D(5, (fp, "\tflags [%d]:", light->flags));
   if(light->flags & B3D_LIGHT_AMBIENT) 
-    DPRINTF(5,(fp," B3D_LIGHT_AMBIENT"));
+    DPRINTF3D(5,(fp," B3D_LIGHT_AMBIENT"));
   if(light->flags & B3D_LIGHT_DIFFUSE) 
-    DPRINTF(5,(fp," B3D_LIGHT_DIFFUSE"));
+    DPRINTF3D(5,(fp," B3D_LIGHT_DIFFUSE"));
   if(light->flags & B3D_LIGHT_SPECULAR) 
-    DPRINTF(5,(fp," B3D_LIGHT_SPECULAR"));
+    DPRINTF3D(5,(fp," B3D_LIGHT_SPECULAR"));
   if(light->flags & B3D_LIGHT_POSITIONAL) 
-    DPRINTF(5,(fp," B3D_LIGHT_POSITIONAL"));
+    DPRINTF3D(5,(fp," B3D_LIGHT_POSITIONAL"));
   if(light->flags & B3D_LIGHT_DIRECTIONAL) 
-    DPRINTF(5,(fp," B3D_LIGHT_DIRECTIONAL"));
+    DPRINTF3D(5,(fp," B3D_LIGHT_DIRECTIONAL"));
   if(light->flags & B3D_LIGHT_ATTENUATED) 
-    DPRINTF(5,(fp," B3D_LIGHT_ATTENUATED"));
+    DPRINTF3D(5,(fp," B3D_LIGHT_ATTENUATED"));
   if(light->flags & B3D_LIGHT_HAS_SPOT) 
-    DPRINTF(5,(fp," B3D_LIGHT_HAS_SPOT"));
-  DPRINTF(5, (fp, "\n"));
-  DPRINTF(5, (fp, "\tspot exponent : %g\n", light->spotExponent));
+    DPRINTF3D(5,(fp," B3D_LIGHT_HAS_SPOT"));
+  DPRINTF3D(5, (fp, "\n"));
+  DPRINTF3D(5, (fp, "\tspot exponent : %g\n", light->spotExponent));
 
-  DPRINTF(5, (fp, "### Installing Light (%d)\n", idx));
+  DPRINTF3D(5, (fp, "### Installing Light (%d)\n", idx));
   memset(&d3dLight, 0, sizeof(d3dLight));
   if(light->flags & B3D_LIGHT_AMBIENT) {
-    DPRINTF(5, (fp, "\tambient  : %g, %g, %g, %g\n",
+    DPRINTF3D(5, (fp, "\tambient  : %g, %g, %g, %g\n",
 		light->ambient[0], light->ambient[1], 
 		light->ambient[2], light->ambient[3]));
     d3dLight.dcvAmbient.r = light->ambient[0];
@@ -1717,11 +1717,11 @@
     d3dLight.dcvAmbient.b = light->ambient[2];
     d3dLight.dcvAmbient.a = light->ambient[3];
   } else {
-    DPRINTF(5, (fp, "\tambient  : OFF (0, 0, 0, 1)\n"));
+    DPRINTF3D(5, (fp, "\tambient  : OFF (0, 0, 0, 1)\n"));
   }
 
   if(light->flags & B3D_LIGHT_DIFFUSE) {
-    DPRINTF(5, (fp, "\tdiffuse  : %g, %g, %g, %g\n",
+    DPRINTF3D(5, (fp, "\tdiffuse  : %g, %g, %g, %g\n",
 		light->diffuse[0], light->diffuse[1], 
 		light->diffuse[2], light->diffuse[3]));
     d3dLight.dcvDiffuse.r = light->diffuse[0];
@@ -1729,11 +1729,11 @@
     d3dLight.dcvDiffuse.b = light->diffuse[2];
     d3dLight.dcvDiffuse.a = light->diffuse[3];
   } else {
-    DPRINTF(5, (fp, "\tdiffuse  : OFF (0, 0, 0, 1)\n"));
+    DPRINTF3D(5, (fp, "\tdiffuse  : OFF (0, 0, 0, 1)\n"));
   }
 
   if(light->flags & B3D_LIGHT_SPECULAR) {
-    DPRINTF(5, (fp, "\tspecular : %g, %g, %g, %g\n",
+    DPRINTF3D(5, (fp, "\tspecular : %g, %g, %g, %g\n",
 		light->specular[0], light->specular[1], 
 		light->specular[2], light->specular[3]));
     d3dLight.dcvSpecular.r = light->specular[0];
@@ -1741,11 +1741,11 @@
     d3dLight.dcvSpecular.b = light->specular[2];
     d3dLight.dcvSpecular.a = light->specular[3];
   } else {
-    DPRINTF(5, (fp, "\tspecular : OFF (0, 0, 0, 1)\n"));
+    DPRINTF3D(5, (fp, "\tspecular : OFF (0, 0, 0, 1)\n"));
   }
 
   if(light->flags & B3D_LIGHT_POSITIONAL) {
-    DPRINTF(5, (fp, "\tposition : %g, %g, %g\n",
+    DPRINTF3D(5, (fp, "\tposition : %g, %g, %g\n",
 		light->position[0], light->position[1], light->position[2]));
     d3dLight.dltType = D3DLIGHT_POINT;
     d3dLight.dvPosition.x = light->position[0];
@@ -1753,7 +1753,7 @@
     d3dLight.dvPosition.z = light->position[2];
   } else {
     if(light->flags & B3D_LIGHT_DIRECTIONAL) {
-      DPRINTF(5, (fp, "\tdirection: %g, %g, %g\n",
+      DPRINTF3D(5, (fp, "\tdirection: %g, %g, %g\n",
 		  light->direction[0], light->direction[1], 
 		  light->direction[2]));
       d3dLight.dltType = D3DLIGHT_DIRECTIONAL;
@@ -1764,21 +1764,21 @@
   }
 
   if(light->flags & B3D_LIGHT_ATTENUATED) {
-    DPRINTF(5, (fp, "\tattenuation: %g, %g, %g\n",
+    DPRINTF3D(5, (fp, "\tattenuation: %g, %g, %g\n",
 		light->attenuation[0], light->attenuation[1], 
 		light->attenuation[2]));
     d3dLight.dvAttenuation0 = light->attenuation[0];
     d3dLight.dvAttenuation1 = light->attenuation[1];
     d3dLight.dvAttenuation2 = light->attenuation[2];
   } else {
-    DPRINTF(5, (fp, "\tattenuation: OFF (1, 0, 0)\n"));
+    DPRINTF3D(5, (fp, "\tattenuation: OFF (1, 0, 0)\n"));
     d3dLight.dvAttenuation0 = 1.0;
   }
 
   if(light->flags & B3D_LIGHT_HAS_SPOT) {
-    DPRINTF(5, (fp, "\tspot exponent : %g\n", light->spotExponent));
-    DPRINTF(5, (fp, "\tspot cutoff   : ???\n"));
-    DPRINTF(5, (fp, "\tspot direction: %g, %g, %g\n",
+    DPRINTF3D(5, (fp, "\tspot exponent : %g\n", light->spotExponent));
+    DPRINTF3D(5, (fp, "\tspot cutoff   : ???\n"));
+    DPRINTF3D(5, (fp, "\tspot direction: %g, %g, %g\n",
 		light->direction[0], light->direction[1], 
 		light->direction[2]));
     d3dLight.dltType = D3DLIGHT_SPOT;
@@ -1788,8 +1788,8 @@
     d3dLight.dvFalloff = light->spotExponent;
     d3dLight.dvPhi = (float) acos(light->spotMinCos);
     d3dLight.dvTheta = (float) acos(light->spotMaxCos);
-    DPRINTF(5, (fp, "\tdvPhi: %g\n", d3dLight.dvPhi));
-    DPRINTF(5, (fp, "\tdvTheta: %g\n", d3dLight.dvTheta));
+    DPRINTF3D(5, (fp, "\tdvPhi: %g\n", d3dLight.dvPhi));
+    DPRINTF3D(5, (fp, "\tdvTheta: %g\n", d3dLight.dvTheta));
   }
 
   d3dLight.dvRange = D3DLIGHT_RANGE_MAX;
@@ -1919,20 +1919,20 @@
     renderer->fSceneStarted = 1;
   }
 
-  DPRINTF(5, (fp,"### Primitive : %d\n", primType));
-  DPRINTF(5, (fp,"\ttexHandle   : %d\n", texHandle));
-  DPRINTF(5, (fp,"\tcolor flags :"));
-  if(flags & B3D_VB_TRACK_AMBIENT) DPRINTF(5,(fp," B3D_VB_TRACK_AMBIENT"));
-  if(flags & B3D_VB_TRACK_DIFFUSE) DPRINTF(5,(fp," B3D_VB_TRACK_DIFFUSE"));
-  if(flags & B3D_VB_TRACK_SPECULAR) DPRINTF(5,(fp," B3D_VB_TRACK_SPECULAR"));
-  if(flags & B3D_VB_TRACK_EMISSION) DPRINTF(5,(fp," B3D_VB_TRACK_EMISSION"));
-  DPRINTF(5, (fp,"\n\tlight flags :"));
-  if(flags & B3D_VB_LOCAL_VIEWER) DPRINTF(5,(fp," B3D_VB_LOCAL_VIEWER"));
-  if(flags & B3D_VB_TWO_SIDED) DPRINTF(5,(fp," B3D_VB_TWO_SIDED"));
-  DPRINTF(5, (fp,"\n\tvertex flags:"));
-  if(flags & B3D_VB_HAS_NORMALS) DPRINTF(5,(fp," B3D_VB_HAS_NORMALS"));
-  if(flags & B3D_VB_HAS_TEXTURES) DPRINTF(5,(fp," B3D_VB_HAS_TEXTURES"));
-  DPRINTF(5, (fp, "\n"));
+  DPRINTF3D(5, (fp,"### Primitive : %d\n", primType));
+  DPRINTF3D(5, (fp,"\ttexHandle   : %d\n", texHandle));
+  DPRINTF3D(5, (fp,"\tcolor flags :"));
+  if(flags & B3D_VB_TRACK_AMBIENT) DPRINTF3D(5,(fp," B3D_VB_TRACK_AMBIENT"));
+  if(flags & B3D_VB_TRACK_DIFFUSE) DPRINTF3D(5,(fp," B3D_VB_TRACK_DIFFUSE"));
+  if(flags & B3D_VB_TRACK_SPECULAR) DPRINTF3D(5,(fp," B3D_VB_TRACK_SPECULAR"));
+  if(flags & B3D_VB_TRACK_EMISSION) DPRINTF3D(5,(fp," B3D_VB_TRACK_EMISSION"));
+  DPRINTF3D(5, (fp,"\n\tlight flags :"));
+  if(flags & B3D_VB_LOCAL_VIEWER) DPRINTF3D(5,(fp," B3D_VB_LOCAL_VIEWER"));
+  if(flags & B3D_VB_TWO_SIDED) DPRINTF3D(5,(fp," B3D_VB_TWO_SIDED"));
+  DPRINTF3D(5, (fp,"\n\tvertex flags:"));
+  if(flags & B3D_VB_HAS_NORMALS) DPRINTF3D(5,(fp," B3D_VB_HAS_NORMALS"));
+  if(flags & B3D_VB_HAS_TEXTURES) DPRINTF3D(5,(fp," B3D_VB_HAS_TEXTURES"));
+  DPRINTF3D(5, (fp, "\n"));
 
   /* process VB flags */
   tracking = FALSE;
@@ -1981,7 +1981,7 @@
   if(texHandle >= 0 && (flags & B3D_VB_HAS_TEXTURES)) {
     /* Look if the surface was registered as D3D surface */
     if(!(*findSurface)(texHandle, &d3dTextureDispatch, (int*) (&lpdsTexture))) {
-      DPRINTF(4, (fp,"WARNING: Texture (%d) not registered\n", texHandle));
+      DPRINTF3D(4, (fp,"WARNING: Texture (%d) not registered\n", texHandle));
       lpdsTexture = NULL;
     }
   } else {
@@ -2160,37 +2160,37 @@
 
   hRes = CoInitialize(NULL);
   if(FAILED(hRes)) {
-    DPRINTF(1, (fp, "ERROR: Failed to CoInitialize\n"));
+    DPRINTF3D(1, (fp, "ERROR: Failed to CoInitialize\n"));
     return 0;
   }
   /* lookup the necessary things from interpreter */
   theSTWindow = (HWND*) interpreterProxy->ioLoadFunctionFrom("stWindow","");
   if(!theSTWindow) {
-    DPRINTF(1,(fp,"ERROR: Failed to look up stWindow\n"));
+    DPRINTF3D(1,(fp,"ERROR: Failed to look up stWindow\n"));
     return 0;
   }
   registerSurface = (fn_ioRegisterSurface) 
     interpreterProxy->ioLoadFunctionFrom("ioRegisterSurface","SurfacePlugin");
   if(!registerSurface) {
-    DPRINTF(1,(fp,"ERROR: Failed to look up ioRegisterSurface()\n"));
+    DPRINTF3D(1,(fp,"ERROR: Failed to look up ioRegisterSurface()\n"));
     return 0;
   }
   unregisterSurface = (fn_ioUnregisterSurface)
     interpreterProxy->ioLoadFunctionFrom("ioUnregisterSurface","SurfacePlugin");
   if(!unregisterSurface) {
-    DPRINTF(1,(fp,"ERROR: Failed to look up ioUnregisterSurface()\n"));
+    DPRINTF3D(1,(fp,"ERROR: Failed to look up ioUnregisterSurface()\n"));
     return 0;
   }
   findSurface = (fn_ioFindSurface)
     interpreterProxy->ioLoadFunctionFrom("ioFindSurface","SurfacePlugin");
   if(!findSurface) {
-    DPRINTF(1,(fp,"ERROR: Failed to look up ioFindSurface()\n"));
+    DPRINTF3D(1,(fp,"ERROR: Failed to look up ioFindSurface()\n"));
     return 0;
   }
   preMessageHook = (messageHook*)
     interpreterProxy->ioLoadFunctionFrom("preMessageHook","");
   if(!preMessageHook) {
-    DPRINTF(1,(fp,"ERROR: Failed to look up preMessageHook()\n"));
+    DPRINTF3D(1,(fp,"ERROR: Failed to look up preMessageHook()\n"));
     return 0;
   }
   nextPreMessageHook = *preMessageHook;

Modified: trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32OpenGL.c
===================================================================
--- trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32OpenGL.c	2011-06-09 07:00:37 UTC (rev 2404)
+++ trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32OpenGL.c	2011-06-09 07:33:56 UTC (rev 2405)
@@ -1,12 +1,11 @@
 /****************************************************************************
-*   PROJECT: Squeak 3D accelerator
 *   FILE:    sqWin32OpenGL.c
 *   CONTENT: Win32 specific bindings for OpenGL
 *
 *   AUTHOR:  Andreas Raab (ar)
 *   ADDRESS: Walt Disney Imagineering, Glendale, CA
 *   EMAIL:   Andreas.Raab at disney.com
-*   RCSID:   $Id: sqWin32OpenGL.c,v 1.7 2002/09/05 19:30:45 andreasraab Exp $
+*   RCSID:   $Id$
 *
 *   NOTES:
 *
@@ -30,11 +29,56 @@
 #define PFD_SUPPORT_DIRECTDRAW      0x00002000
 #endif
 
+/* Constants for wgl ARB - not in usual headers. */
+
+#define WGL_DRAW_TO_WINDOW_ARB			0x2001
+#define WGL_ACCELERATION_ARB			0x2003
+#define WGL_SUPPORT_OPENGL_ARB			0x2010
+#define WGL_DOUBLE_BUFFER_ARB			0x2011
+#define WGL_STEREO_ARB				0x2012
+#define WGL_PIXEL_TYPE_ARB			0x2013
+#define WGL_COLOR_BITS_ARB			0x2014
+#define WGL_RED_BITS_ARB			0x2015
+#define WGL_RED_SHIFT_ARB			0x2016
+#define WGL_GREEN_BITS_ARB			0x2017
+#define WGL_GREEN_SHIFT_ARB			0x2018
+#define WGL_BLUE_BITS_ARB			0x2019
+#define WGL_BLUE_SHIFT_ARB			0x201A
+#define WGL_ALPHA_BITS_ARB			0x201B
+#define WGL_ALPHA_SHIFT_ARB			0x201C
+#define WGL_ACCUM_BITS_ARB			0x201D
+#define WGL_ACCUM_RED_BITS_ARB			0x201E
+#define WGL_ACCUM_GREEN_BITS_ARB		0x201F
+#define WGL_ACCUM_BLUE_BITS_ARB			0x2020
+#define WGL_ACCUM_ALPHA_BITS_ARB		0x2021
+#define WGL_DEPTH_BITS_ARB			0x2022
+#define WGL_STENCIL_BITS_ARB			0x2023
+#define WGL_AUX_BUFFERS_ARB			0x2024
+#define WGL_NO_ACCELERATION_ARB			0x2025
+#define WGL_GENERIC_ACCELERATION_ARB		0x2026
+#define WGL_FULL_ACCELERATION_ARB		0x2027
+#define WGL_SWAP_EXCHANGE_ARB			0x2028
+#define WGL_SWAP_COPY_ARB			0x2029
+#define WGL_SWAP_UNDEFINED_ARB			0x202A
+#define WGL_TYPE_RGBA_ARB			0x202B
+#define WGL_TYPE_COLORINDEX_ARB			0x202C
+#define WGL_SAMPLE_BUFFERS_ARB			0x2041
+#define	WGL_SAMPLES_ARB				0x2042
+
+/* WGL function types */
+typedef int (__stdcall * PFN_WGLCHOOSEPIXELFORMAT) (
+		HDC hdc, 
+		const int *piAttribIList,
+		const FLOAT *pfAttribFList, 
+		UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
+ 
+typedef int (__stdcall * PFN_WGLSWAPINTERVALEXT) (int interval);
+
 /* define forceFlush if we should fflush() before closing file */
 #define forceFlush 1
 
 /* Note: Print this stuff into a file in case we lock up*/
-# define DPRINTF(vLevel, args) if(vLevel <= verboseLevel) {\
+# define DPRINTF3D(vLevel, args) if(vLevel <= verboseLevel) {\
 	FILE *fp = fopen("Squeak3D.log", "at");\
 	if(fp) { fprintf args; if(forceFlush) fflush(fp); fclose(fp); }}
 
@@ -131,54 +175,54 @@
 static void printPFD(PIXELFORMATDESCRIPTOR *pfd, int lvl)
 {
   /* Print the pixel format for information purposes */
-  DPRINTF(lvl,(fp,"flags (%d): ", pfd->dwFlags));
+  DPRINTF3D(lvl,(fp,"flags (%d): ", pfd->dwFlags));
   if(pfd->dwFlags & PFD_DRAW_TO_WINDOW) 
-    DPRINTF(lvl, (fp, "PFD_DRAW_TO_WINDOW "));
+    DPRINTF3D(lvl, (fp, "PFD_DRAW_TO_WINDOW "));
   if(pfd->dwFlags & PFD_DRAW_TO_BITMAP) 
-    DPRINTF(lvl, (fp, "PFD_DRAW_TO_BITMAP "));
+    DPRINTF3D(lvl, (fp, "PFD_DRAW_TO_BITMAP "));
   if(pfd->dwFlags & PFD_SUPPORT_GDI) 
-    DPRINTF(lvl, (fp, "PFD_SUPPORT_GDI "));
+    DPRINTF3D(lvl, (fp, "PFD_SUPPORT_GDI "));
   if(pfd->dwFlags & PFD_SUPPORT_OPENGL) 
-    DPRINTF(lvl, (fp, "PFD_SUPPORT_OPENGL "));
+    DPRINTF3D(lvl, (fp, "PFD_SUPPORT_OPENGL "));
   if(pfd->dwFlags & PFD_GENERIC_ACCELERATED) 
-    DPRINTF(lvl, (fp, "PFD_GENERIC_ACCELERATED "));
+    DPRINTF3D(lvl, (fp, "PFD_GENERIC_ACCELERATED "));
   if(pfd->dwFlags & PFD_GENERIC_FORMAT) 
-    DPRINTF(lvl, (fp, "PFD_GENERIC_FORMAT "));
+    DPRINTF3D(lvl, (fp, "PFD_GENERIC_FORMAT "));
   if(pfd->dwFlags & PFD_NEED_PALETTE) 
-    DPRINTF(lvl, (fp, "PFD_NEED_PALETTE "));
+    DPRINTF3D(lvl, (fp, "PFD_NEED_PALETTE "));
   if(pfd->dwFlags & PFD_NEED_SYSTEM_PALETTE) 
-    DPRINTF(lvl, (fp, "PFD_NEED_SYSTEM_PALETTE "));
+    DPRINTF3D(lvl, (fp, "PFD_NEED_SYSTEM_PALETTE "));
   if(pfd->dwFlags & PFD_DOUBLEBUFFER) 
-    DPRINTF(lvl, (fp, "PFD_DOUBLEBUFFER "));
+    DPRINTF3D(lvl, (fp, "PFD_DOUBLEBUFFER "));
   if(pfd->dwFlags & PFD_SWAP_LAYER_BUFFERS) 
-    DPRINTF(lvl, (fp, "PFD_SWAP_LAYER_BUFFERS "));
+    DPRINTF3D(lvl, (fp, "PFD_SWAP_LAYER_BUFFERS "));
   if(pfd->dwFlags & PFD_SWAP_COPY) 
-    DPRINTF(lvl, (fp, "PFD_SWAP_COPY "));
+    DPRINTF3D(lvl, (fp, "PFD_SWAP_COPY "));
   if(pfd->dwFlags & PFD_SWAP_EXCHANGE) 
-    DPRINTF(lvl, (fp, "PFD_SWAP_EXCHANGE "));
-  DPRINTF(lvl,(fp,"\n"));
+    DPRINTF3D(lvl, (fp, "PFD_SWAP_EXCHANGE "));
+  DPRINTF3D(lvl,(fp,"\n"));
 
-  DPRINTF(lvl,(fp,"pixelType = %s\n",(pfd->iPixelType == PFD_TYPE_RGBA ? "PFD_TYPE_RGBA" : "PFD_TYPE_COLORINDEX")));
-  DPRINTF(lvl,(fp,"colorBits = %d\n",pfd->cColorBits));
-  DPRINTF(lvl,(fp,"depthBits = %d\n",pfd->cDepthBits));
-  DPRINTF(lvl,(fp,"stencilBits = %d\n",pfd->cStencilBits));
-  DPRINTF(lvl,(fp,"accumBits = %d\n",pfd->cAccumBits));
-  DPRINTF(lvl,(fp,"auxBuffers = %d\n",pfd->cAuxBuffers));
-  DPRINTF(lvl,(fp,"layerType = %d\n",pfd->iLayerType));
+  DPRINTF3D(lvl,(fp,"pixelType = %s\n",(pfd->iPixelType == PFD_TYPE_RGBA ? "PFD_TYPE_RGBA" : "PFD_TYPE_COLORINDEX")));
+  DPRINTF3D(lvl,(fp,"colorBits = %d\n",pfd->cColorBits));
+  DPRINTF3D(lvl,(fp,"depthBits = %d\n",pfd->cDepthBits));
+  DPRINTF3D(lvl,(fp,"stencilBits = %d\n",pfd->cStencilBits));
+  DPRINTF3D(lvl,(fp,"accumBits = %d\n",pfd->cAccumBits));
+  DPRINTF3D(lvl,(fp,"auxBuffers = %d\n",pfd->cAuxBuffers));
+  DPRINTF3D(lvl,(fp,"layerType = %d\n",pfd->iLayerType));
 
-  DPRINTF(lvl,(fp,"redBits = %d\n",pfd->cRedBits));
-  DPRINTF(lvl,(fp,"redShift = %d\n",pfd->cRedShift));
-  DPRINTF(lvl,(fp,"greenBits = %d\n",pfd->cGreenBits));
-  DPRINTF(lvl,(fp,"greenShift = %d\n",pfd->cGreenShift));
-  DPRINTF(lvl,(fp,"blueBits = %d\n",pfd->cBlueBits));
-  DPRINTF(lvl,(fp,"blueShift = %d\n",pfd->cBlueShift));
-  DPRINTF(lvl,(fp,"alphaBits = %d\n",pfd->cAlphaBits));
-  DPRINTF(lvl,(fp,"alphaShift = %d\n",pfd->cAlphaShift));
+  DPRINTF3D(lvl,(fp,"redBits = %d\n",pfd->cRedBits));
+  DPRINTF3D(lvl,(fp,"redShift = %d\n",pfd->cRedShift));
+  DPRINTF3D(lvl,(fp,"greenBits = %d\n",pfd->cGreenBits));
+  DPRINTF3D(lvl,(fp,"greenShift = %d\n",pfd->cGreenShift));
+  DPRINTF3D(lvl,(fp,"blueBits = %d\n",pfd->cBlueBits));
+  DPRINTF3D(lvl,(fp,"blueShift = %d\n",pfd->cBlueShift));
+  DPRINTF3D(lvl,(fp,"alphaBits = %d\n",pfd->cAlphaBits));
+  DPRINTF3D(lvl,(fp,"alphaShift = %d\n",pfd->cAlphaShift));
   
-  DPRINTF(lvl,(fp,"accumRedBits = %d\n",pfd->cAccumRedBits));
-  DPRINTF(lvl,(fp,"accumGreenBits = %d\n",pfd->cAccumGreenBits));
-  DPRINTF(lvl,(fp,"accumBlueBits = %d\n",pfd->cAccumBlueBits));
-  DPRINTF(lvl,(fp,"accumAlphaBits = %d\n",pfd->cAccumAlphaBits));
+  DPRINTF3D(lvl,(fp,"accumRedBits = %d\n",pfd->cAccumRedBits));
+  DPRINTF3D(lvl,(fp,"accumGreenBits = %d\n",pfd->cAccumGreenBits));
+  DPRINTF3D(lvl,(fp,"accumBlueBits = %d\n",pfd->cAccumBlueBits));
+  DPRINTF3D(lvl,(fp,"accumAlphaBits = %d\n",pfd->cAccumAlphaBits));
 }
 
 int glDestroyRenderer(int handle) {
@@ -196,241 +240,116 @@
   return 1;
 }
 
-#if 0
-int glDescribeRenderer(int index, int *desc, int descSize) {
-  PIXELFORMATDESCRIPTOR pfd, goodPFD;
-  HDC hDC;
+/* Weak gl extension check - good enough for WGL_ARB_multisample */
+static int glExtensionExists(const char *extension)
+{
+	const char *glExtensions = (const char*)glGetString(GL_EXTENSIONS);
+	if (!glExtensions)
+	  return 0;
+	return (strstr(glExtensions,extension) != NULL);
+}
 
-  /* req. at least version 0 */
-  if(descSize < B3D_PF_SIZE0) return 0;
-  if(!*theSTWindow) return 0;
-  hDC = GetDC(*theSTWindow);
-  if(!hDC) return 0;
-  pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
-  pfd.nVersion = 1;
-  if(!DescribePixelFormat(hDC, index, sizeof(pfd), &pfd)) {
-    return 0;
+/* Find a pixel format with antialiasing support. */
+static int findAAPixelFormat (HDC hdc)
+{
+  int pixelFormat;
+  BOOL bStatus;
+  UINT numFormats;
+  float fAttributes[] = {0,0};
+  int iAttributes[] = { 
+    WGL_DRAW_TO_WINDOW_ARB, GL_TRUE,
+    WGL_SUPPORT_OPENGL_ARB, GL_TRUE,
+    WGL_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB,
+    WGL_COLOR_BITS_ARB, 24,
+    WGL_ALPHA_BITS_ARB, 8,
+    WGL_DEPTH_BITS_ARB, 12,
+    WGL_STENCIL_BITS_ARB, 8,
+    WGL_DOUBLE_BUFFER_ARB, GL_TRUE,
+    WGL_SAMPLE_BUFFERS_ARB, 1,
+    WGL_SAMPLES_ARB, 4,
+    0, 0};
+
+  /* Find the extension routine. */
+  PFN_WGLCHOOSEPIXELFORMAT wglChoosePixelFormatARB = 
+    (PFN_WGLCHOOSEPIXELFORMAT) 
+       wglGetProcAddress("wglChoosePixelFormatARB");
+
+  if (!wglChoosePixelFormatARB) {
+    DPRINTF3D(3, (fp, "Cannot find function wglChoosePixelFormatARB"));
+    return -1;
   }
-  desc[0] = B3D_PF_SIZE;
-  flags = 0;
-  if(pfd.dwFlags & PFD_DRAW_TO_WINDOW) flags |= B3D_PF_WINDOW_FLAG;
-  if(pfd.dwFlags & PFD_DRAW_TO_BITMAP) flags |= B3D_PF_BITMAP_FLAG;
-  if(pfd.dwFlags & PFD_SUPPORT_GDI) flags |= B3D_PF_NATIVE_GDI_FLAG;
-  if(pfd.dwFlags & PFD_SUPPORT_OPENGL) flags |= B3D_PF_NATIVE_API_FLAG;
-  if(pfd.dwFlags & PFD_GENERIC_ACCELERATED) flags |= B3D_PF_ACCELERATED_FLAG;
-  if((pfd.dwFlags & PFD_GENERIC_FORMAT) == 0) flags |= B3D_PF_ACCELERATED_FLAG;
-  if(pfd.dwFlags & PFD_DOUBLEBUFFER) flags |= B3D_PF_DOUBLEBUFFER_FLAG;
 
-  if(pfd.iPixelType == PFD_TYPE_RGBA) flags |= B3D_RGBA_FLAG;
-  else flags |= B3D_INDEXED_FLAG;
+  /* Make sure the basic extension is also supported. */
+  if (!glExtensionExists("GL_ARB_multisample")) {
+    DPRINTF3D(3, (fp, "Cannot find extension GL_ARB_multisample"));
+    return -1;
+  }
 
-  desc[B3D_PF_FLAGS] = flags;
-  desc[B3D_PF_COLORBITS] = pfd.cColorBits;
-  desc[B3D_PF_DEPTHBITS] = pfd.cDepthBits;
-  desc[B3D_PF_STENCILBITS] = pfd.cStencilBits;
-  desc[B3D_PF_ACCUMBITS] = pfd.cAccumBits;
-  desc[B3D_PF_AUXBUFFERS] = pfd.cAuxBuffers;
-  desc[B3D_PF_LAYER] = pfd.iLayerType;
+  bStatus = wglChoosePixelFormatARB(hdc, iAttributes,
+              fAttributes, 1, &pixelFormat, &numFormats);
+  if ((bStatus == GL_TRUE) && (numFormats > 0))
+  {
+    DPRINTF3D(3, (fp, "Found 4-sample pixel format %d", pixelFormat));
+    return pixelFormat;   
+  }
 
-  desc[B3D_PF_REDMASK] = ((1 << pfd.cRedBits) - 1) << pfd.cRedShift;
-  desc[B3D_PF_GREENMASK] = ((1 << pfd.cGreenBits) - 1) << pfd.cGreenShift;
-  desc[B3D_PF_BLUEMASK] = ((1 << pfd.cBlueBits) - 1) << pfd.cBlueShift;
-  desc[B3D_PF_ALPHAMASK] = ((1 << pfd.cAlphaBits) - 1) << pfd.cAlphaShift;
-  return 1;
+  /* That failed, try using 2 samples now instead of 4 */
+  iAttributes[19] = 2;
+  bStatus = wglChoosePixelFormatARB(hdc, iAttributes,
+              fAttributes, 1, &pixelFormat, &numFormats);
+  if ((bStatus == GL_TRUE) && (numFormats > 0))
+  {
+    DPRINTF3D(3, (fp, "Found 2-sample pixel format %d", pixelFormat));
+    return pixelFormat;
+  }
+
+  DPRINTF3D(3, (fp, "Cannot find a multisample pixel format."));
+  return -1;
 }
 
-int glCreateRendererPF(int *pfDesc, int descSize, int x, int y, int w, int h)
-{
-  PIXELFORMATDESCRIPTOR pfd;
-  int depth, i, goodIndex, max, index;
-  char *string;
-  glRenderer *renderer;
+static int enableVSync(int value) {
+  PFN_WGLSWAPINTERVALEXT wglSwapIntervalEXT = 
+    (PFN_WGLSWAPINTERVALEXT) wglGetProcAddress("wglSwapIntervalEXT");
 
-  for(i=0; i < MAX_RENDERER; i++) {
-    if(allRenderer[i].used == 0) break;
+  if(!glExtensionExists("WGL_EXT_swap_control")){
+    DPRINTF3D(3, (fp, "WGL_EXT_swap_control not found"));
+    return -1;
   }
-  if(i >= MAX_RENDERER) {
-    DPRINTF(1, (fp, "ERROR: Maximum number of renderers (%d) exceeded\n", MAX_RENDERER));
-    return 0;
+
+  if(!wglSwapIntervalEXT) {
+    DPRINTF3D(3, (fp, "wglSwapIntervalEXT not found"));
+    return -1;
   }
-  index = i;
-  renderer = allRenderer+index;
-  renderer->used = 0;
-  renderer->context = NULL;
-  renderer->hDC = NULL;
-  renderer->hWnd = NULL;
+  wglSwapIntervalEXT(value);
+  return value;
+}
 
-  DPRINTF(3,(fp,"---- Initializing OpenGL ----\n\n"));
+/* Create the renderer window and context; returns 0 on failure. */
+static int setupWindow(glRenderer * renderer, int x, int y, int w, int h) {
   renderer->hWnd = glCreateClientWindow(*theSTWindow, x, y, w, h);
   if(renderer->hWnd == NULL) {
-    DPRINTF(1, (fp, "Failed to create client window\n"));
-    goto FAILED;
+    DPRINTF3D(1, (fp, "Failed to create client window\n"));
+    return 0;
   }
   ShowWindow(renderer->hWnd, SW_SHOW);
   UpdateWindow(renderer->hWnd);
   renderer->hDC = GetDC(renderer->hWnd);
   if(!renderer->hDC) {
-    DPRINTF(1, (fp, "Failed to obtain client hdc\n"));
-    goto FAILED;
+    DPRINTF3D(1, (fp, "Failed to obtain client hdc\n"));
+    return 0;
   }
-
-  /* Query the native depth so we can choose something appropriate */
-  depth = GetDeviceCaps(renderer->hDC, BITSPIXEL);
-  max = DescribePixelFormat(renderer->hDC, 1, sizeof(pfd), &pfd);
-  pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
-  pfd.nVersion = 1;
-  goodPFD.nSize = 0;
-  goodIndex = 0;
-
-  for(i=1; i<= max; i++) {
-    DescribePixelFormat(renderer->hDC, i, sizeof(pfd), &pfd);
-    DPRINTF(3,(fp, "\n#### Checking pixel format %d:\n", i));
-    printPFD(&pfd, 3);
-    if((pfd.dwFlags & PFD_DRAW_TO_WINDOW) == 0) 
-      continue; /* can't draw to window */
-    if((pfd.dwFlags & PFD_SUPPORT_OPENGL) == 0) 
-      continue; /* can't use OpenGL */
-    if((pfd.dwFlags & PFD_DOUBLEBUFFER) == 0) 
-      continue;  /* can't double buffer */
-    if(pfd.iPixelType != PFD_TYPE_RGBA) 
-      continue; /* not an RGBA format */
-    if(pfd.cDepthBits < 16) 
-      continue; /* no enough z-buffer */
-    if(pfd.iLayerType != PFD_MAIN_PLANE) 
-      continue; /* overlay/underlay */
-#ifdef TEA
-#warning "**************************************************************"
-#warning "**************************************************************"
-#warning "**************************************************************"
-#warning
-#warning "TEA: Stencil buffer required"
-#warning
-#warning "**************************************************************"
-#warning "**************************************************************"
-#warning "**************************************************************"
-    if(pfd.cStencilBits < 8)
-      continue; /* need stencil bits */
-#endif
-    if((pfd.dwFlags & PFD_GENERIC_FORMAT) == 0) {
-      /* This indicates an accellerated driver */
-      if(!allowHardware) continue;
-      DPRINTF(3,(fp,"===> This is an accelerated driver\n"));
-#ifdef ENABLE_FORCED_PFD
-      if(forcedPFD > 0) {
-	if(--forcedPFD == 0) {
-	  goodPFD = pfd; goodIndex = i;
-	  break;
-	}
-      }
-#endif
-      if(goodPFD.nSize == 0) {
-        goodPFD = pfd; goodIndex = i;
-      } else if(goodPFD.cColorBits == depth) {
-        goodPFD = pfd; goodIndex = i;
-      }
-    } else if(pfd.dwFlags & PFD_GENERIC_ACCELERATED) {
-      /* This indicates an accellerated mini-driver */
-      if(!allowHardware) continue;
-      DPRINTF(3,(fp,"===> This is an accelerated mini-driver\n"));
-#ifdef ENABLE_FORCED_PFD
-      if(forcedPFD > 0) {
-	if(--forcedPFD == 0) {
-	  goodPFD = pfd; goodIndex = i;
-	  break;
-	}
-      }
-#endif
-      if(goodPFD.nSize == 0) {
-        goodPFD = pfd; goodIndex = i;
-      } else if(goodPFD.cColorBits == depth) {
-        goodPFD = pfd; goodIndex = i;
-      }
-    }
-
-    if( (pfd.dwFlags & PFD_GENERIC_FORMAT) &&
-	((pfd.dwFlags & PFD_GENERIC_ACCELERATED) == 0)) {
-      /* this indicates a non-accellerated driver */
-      if(!allowSoftware) continue;
-	  if(goodPFD.nSize == 0) {
-        goodPFD = pfd; goodIndex = i;
-	  }
-    }
-  }
-  if((goodPFD.nSize == 0) 
-#ifdef ENABLE_FORCED_PFD
-     || (forcedPFD > 0)
-#endif
-     ) {
-    /* We didn't find an accellerated driver. */
-    DPRINTF(3,(fp,"#### WARNING: No accelerated driver found; bailing out\n"));
-    goto FAILED;
-  }
-
-  /* Now we have found the PFD to use. 
-     Try setting the pixel format for the window */
-  SetPixelFormat(renderer->hDC, goodIndex, &goodPFD);
-  /* Note: SetPixelFormat may fail if the pixel format has been set before.
-     Rather than failing here we do ignore the result of the above,
-     so that an old pixel format will be used in any case. */
-  goodIndex = GetPixelFormat(renderer->hDC);
-  DescribePixelFormat(renderer->hDC, goodIndex, sizeof(pfd), &pfd);
-
-  DPRINTF(3,(fp,"\n#### Selected pixel format (%d) ####\n",goodIndex));
-  printPFD(&pfd, 3);
-  renderer->context = wglCreateContext(renderer->hDC);
-  if(!renderer->context) {
-    DPRINTF(1, (fp,"Failed to create opengl context\n"));
-    goto FAILED;
-  }
-  /* Make the context current */
-  if(!wglMakeCurrent(renderer->hDC, renderer->context)) goto FAILED;
-
-  /* print some information about the context */
-  string = (char*) glGetString(GL_VENDOR);
-  DPRINTF(3,(fp, "\nOpenGL vendor: %s\n", string));
-  string = (char*) glGetString(GL_RENDERER);
-  DPRINTF(3,(fp, "OpenGL renderer: %s\n", string));
-  string = (char*) glGetString(GL_VERSION);
-  DPRINTF(3,(fp, "OpenGL version: %s\n", string));
-  string = (char*) glGetString(GL_EXTENSIONS);
-  DPRINTF(3,(fp, "OpenGL extensions: %s\n", string));
-  
-  renderer->used = 1;
-  renderer->bufferRect[0] = x;
-  renderer->bufferRect[1] = y;
-  renderer->bufferRect[2] = w;
-  renderer->bufferRect[3] = h;
-
-  DPRINTF(3, (fp,"### Renderer created!\n"));
-  /* setup user context */
-  glDisable(GL_LIGHTING);
-  glDisable(GL_COLOR_MATERIAL);
-  glDisable(GL_BLEND);
-  glDisable(GL_ALPHA_TEST);
-  glEnable(GL_DITHER);
-  glEnable(GL_DEPTH_TEST);
-  glEnable(GL_NORMALIZE);
-  glDepthFunc(GL_LEQUAL);
-  glClearDepth(1.0);
-  glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
-  glShadeModel(GL_SMOOTH);
-  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, blackLight);
-  ERROR_CHECK;
-  return index;
-FAILED:
-  /* do necessary cleanup */
-  DPRINTF(1,(fp, "OpenGL initialization failed\n"));
-  if(renderer->context) wglDeleteContext(renderer->context);
-  if(renderer->hDC) ReleaseDC(renderer->hWnd, renderer->hDC);
-  if(renderer->hWnd) DestroyWindow(renderer->hWnd);
-  return -1;
+  return 1;
 }
-#endif
 
+
 #define SUPPORTED_FLAGS (\
     B3D_HARDWARE_RENDERER \
   | B3D_SOFTWARE_RENDERER \
-  | B3D_STENCIL_BUFFER)
+  | B3D_STENCIL_BUFFER \
+  | B3D_ANTIALIASING \
+  | B3D_STEREO \
+  | B3D_SYNCVBL \
+)
 
 int glCreateRendererFlags(int x, int y, int w, int h, int flags)
 {
@@ -440,7 +359,7 @@
   glRenderer *renderer;
 
   if(flags & ~SUPPORTED_FLAGS) {
-    DPRINTF(1, (fp, "ERROR: Unsupported flags requested( %d)\n", flags));
+    DPRINTF3D(1, (fp, "ERROR: Unsupported flags requested( %d)\n", flags));
     return -1;
   }
 
@@ -448,29 +367,16 @@
     if(allRenderer[i].used == 0) break;
   }
   if(i >= MAX_RENDERER) {
-    DPRINTF(1, (fp, "ERROR: Maximum number of renderers (%d) exceeded\n", MAX_RENDERER));
+    DPRINTF3D(1, (fp, "ERROR: Maximum number of renderers (%d) exceeded\n", MAX_RENDERER));
     return -1;
   }
   index = i;
   renderer = allRenderer+index;
-  renderer->used = 0;
-  renderer->context = NULL;
-  renderer->hDC = NULL;
-  renderer->hWnd = NULL;
-
-  DPRINTF(3,(fp,"---- Initializing OpenGL ----\n\n"));
-  renderer->hWnd = glCreateClientWindow(*theSTWindow, x, y, w, h);
-  if(renderer->hWnd == NULL) {
-    DPRINTF(1, (fp, "Failed to create client window\n"));
+  memset(renderer, 0, sizeof(glRenderer));
+  DPRINTF3D(3,(fp,"---- Initializing OpenGL ----\n\n"));
+  if (! setupWindow(renderer, x, y, w, h)) {
     goto FAILED;
   }
-  ShowWindow(renderer->hWnd, SW_SHOW);
-  UpdateWindow(renderer->hWnd);
-  renderer->hDC = GetDC(renderer->hWnd);
-  if(!renderer->hDC) {
-    DPRINTF(1, (fp, "Failed to obtain client hdc\n"));
-    goto FAILED;
-  }
 
   /* Query the native depth so we can choose something appropriate */
   depth = GetDeviceCaps(renderer->hDC, BITSPIXEL);
@@ -490,7 +396,7 @@
 
   for(i=1; i<= max; i++) {
     DescribePixelFormat(renderer->hDC, i, sizeof(pfd), &pfd);
-    DPRINTF(3,(fp, "\n#### Checking pixel format %d:\n", i));
+    DPRINTF3D(3,(fp, "\n#### Checking pixel format %d:\n", i));
     printPFD(&pfd, 3);
 
     if((pfd.dwFlags & matchPFD.dwFlags) != matchPFD.dwFlags)
@@ -509,10 +415,14 @@
       if(pfd.cStencilBits == 0)
 	continue; /* need stencil bits */
 
+    if(flags & B3D_STEREO)
+      if(pfd.dwFlags & PFD_STEREO == 0)
+	continue; /* need stereo caps */
+
     if((pfd.dwFlags & PFD_GENERIC_FORMAT) == 0) {
       /* This indicates an accellerated driver */
       if((flags & B3D_HARDWARE_RENDERER) == 0) continue;
-      DPRINTF(3,(fp,"===> This is an accelerated driver\n"));
+      DPRINTF3D(3,(fp,"===> This is an accelerated driver\n"));
       if(goodPFD.nSize == 0) {
         goodPFD = pfd; goodIndex = i;
       } else if(goodPFD.cColorBits == depth) {
@@ -521,7 +431,7 @@
     } else if(pfd.dwFlags & PFD_GENERIC_ACCELERATED) {
       /* This indicates an accellerated mini-driver */
       if((flags & B3D_HARDWARE_RENDERER) == 0) continue;
-      DPRINTF(3,(fp,"===> This is an accelerated mini-driver\n"));
+      DPRINTF3D(3,(fp,"===> This is an accelerated mini-driver\n"));
 
       if(goodPFD.nSize == 0) {
         goodPFD = pfd; goodIndex = i;
@@ -541,7 +451,7 @@
   }
   if((goodPFD.nSize == 0)) {
     /* We didn't find an accellerated driver. */
-    DPRINTF(3,(fp,"#### WARNING: No accelerated driver found; bailing out\n"));
+    DPRINTF3D(3,(fp,"#### WARNING: No accelerated driver found; bailing out\n"));
     goto FAILED;
   }
 
@@ -554,25 +464,57 @@
   goodIndex = GetPixelFormat(renderer->hDC);
   DescribePixelFormat(renderer->hDC, goodIndex, sizeof(pfd), &pfd);
 
-  DPRINTF(3,(fp,"\n#### Selected pixel format (%d) ####\n",goodIndex));
+  DPRINTF3D(3,(fp,"\n#### Selected pixel format (%d) ####\n", goodIndex));
   printPFD(&pfd, 3);
   renderer->context = wglCreateContext(renderer->hDC);
   if(!renderer->context) {
-    DPRINTF(1, (fp,"Failed to create opengl context\n"));
+    DPRINTF3D(1, (fp,"Failed to create opengl context\n"));
     goto FAILED;
   }
   /* Make the context current */
   if(!wglMakeCurrent(renderer->hDC, renderer->context)) goto FAILED;
 
+  /* Now we have a context; check for antialiasing support. */
+  if (flags & B3D_ANTIALIASING) {
+    int aaIndex = findAAPixelFormat (renderer->hDC);
+    if (aaIndex > 0) {
+	/* To set an AA pixel format, we have to start with a new window. */
+	DescribePixelFormat(renderer->hDC, aaIndex, sizeof(pfd), &pfd);
+	/* Take down the old window */
+	wglMakeCurrent(NULL, NULL);
+	wglDeleteContext(renderer->context);
+	ReleaseDC (renderer->hWnd, renderer->hDC);
+	DestroyWindow (renderer->hWnd);
+	renderer->hWnd = NULL;
+	renderer->hDC = NULL;
+	renderer->context = NULL;
+
+        if (! setupWindow(renderer, x, y, w, h)) {
+	  goto FAILED;
+	}
+  	/* Set the new pixel format. */
+  	SetPixelFormat(renderer->hDC, aaIndex, &pfd);
+  	goodIndex = GetPixelFormat(renderer->hDC);
+  	DescribePixelFormat(renderer->hDC, goodIndex, sizeof(pfd), &pfd);
+	DPRINTF3D(3,(fp,"\n#### AA pixel format (%d) ####\n", goodIndex));
+  	printPFD(&pfd, 3);
+  	renderer->context = wglCreateContext(renderer->hDC);
+	if (!wglMakeCurrent(renderer->hDC, renderer->context)) goto FAILED;
+    }
+  }
+
+  /* Enable vsync if requested */
+  if(flags & B3D_SYNCVBL) enableVSync(1);
+
   /* print some information about the context */
   string = (char*) glGetString(GL_VENDOR);
-  DPRINTF(3,(fp, "\nOpenGL vendor: %s\n", string));
+  DPRINTF3D(3,(fp, "\nOpenGL vendor: %s\n", string));
   string = (char*) glGetString(GL_RENDERER);
-  DPRINTF(3,(fp, "OpenGL renderer: %s\n", string));
+  DPRINTF3D(3,(fp, "OpenGL renderer: %s\n", string));
   string = (char*) glGetString(GL_VERSION);
-  DPRINTF(3,(fp, "OpenGL version: %s\n", string));
+  DPRINTF3D(3,(fp, "OpenGL version: %s\n", string));
   string = (char*) glGetString(GL_EXTENSIONS);
-  DPRINTF(3,(fp, "OpenGL extensions: %s\n", string));
+  DPRINTF3D(3,(fp, "OpenGL extensions: %s\n", string));
   
   renderer->used = 1;
   renderer->bufferRect[0] = x;
@@ -580,7 +522,7 @@
   renderer->bufferRect[2] = w;
   renderer->bufferRect[3] = h;
 
-  DPRINTF(3, (fp,"### Renderer created!\n"));
+  DPRINTF3D(3, (fp,"### Renderer created!\n"));
   /* setup user context */
   glDisable(GL_LIGHTING);
   glDisable(GL_COLOR_MATERIAL);
@@ -598,7 +540,7 @@
   return index;
 FAILED:
   /* do necessary cleanup */
-  DPRINTF(1,(fp, "OpenGL initialization failed\n"));
+  DPRINTF3D(1,(fp, "OpenGL initialization failed\n"));
   if(renderer->context) wglDeleteContext(renderer->context);
   if(renderer->hDC) ReleaseDC(renderer->hWnd, renderer->hDC);
   if(renderer->hWnd) DestroyWindow(renderer->hWnd);
@@ -624,7 +566,7 @@
 /*****************************************************************************/
 
 glRenderer *glRendererFromHandle(int handle) {
-  DPRINTF(7, (fp, "Looking for renderer id: %d\n", handle));
+  DPRINTF3D(7, (fp, "Looking for renderer id: %d\n", handle));
   if(handle < 0 || handle >= MAX_RENDERER) return NULL;
   if(allRenderer[handle].used) return allRenderer+handle;
   return NULL;
@@ -685,7 +627,7 @@
   int i;
   theSTWindow = (HWND*) interpreterProxy->ioLoadFunctionFrom("stWindow","");
   if(!theSTWindow) {
-    DPRINTF(1,(fp,"ERROR: Failed to look up stWindow\n"));
+    DPRINTF3D(1,(fp,"ERROR: Failed to look up stWindow\n"));
     return 0;
   }
   for(i = 0; i < MAX_RENDERER; i++) {
@@ -704,17 +646,5 @@
   return 1;
 }
 
-#ifdef ENABLE_FORCED_PFD
-int win32SetForcedPFD(void) {
-  int pfdIndex;
-  if(interpreterProxy->methodArgumentCount() != 1)
-    return interpreterProxy->primitiveFail();
-  pfdIndex = interpreterProxy->stackIntegerValue(0);
-  if(interpreterProxy->failed()) return 0;
-  forcedPFD = pfdIndex;
-  interpreterProxy->pop(1);
-}
-#endif
-
 #endif /* defined(B3DX_GL) */
 

Modified: trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32OpenGL.h
===================================================================
--- trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32OpenGL.h	2011-06-09 07:00:37 UTC (rev 2404)
+++ trunk/platforms/win32/plugins/B3DAcceleratorPlugin/sqWin32OpenGL.h	2011-06-09 07:33:56 UTC (rev 2405)
@@ -13,6 +13,9 @@
   HWND  hWnd;
   HGLRC context;
   HDC   hDC;
+
+  void APIENTRY (*glDrawRangeElements) (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid*);
+
 } glRenderer;
 
 #define GL_RENDERER_DEFINED 1



More information about the Vm-dev mailing list