[dx8-34] too many things for a subject ;)

Raphaël Junqueira fenix at club-internet.fr
Fri May 16 03:35:22 CDT 2003


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi all,

 Here we have a big Patch. Now unreal2 launch (but wiht an very ugly menu), 
UT2003 too (menu good but launching game crash)

WARNING: It must be applied after lasts jason patches.

 Changelop:
  - more usefull debug functions debug_d3dusage and debug_d3ddevicetype
  - fix a crash in pixel shader parser (happened with unreal2)
  - currently desactive pixel shaders caps (with #define) while hw shaders 
code isn't merged
  - when we have a special debug channel for shader, use it ;)
  - fix again some stubs return value
  - more more readable traces now (principaly IDirect3D8 capacities check adn 
surface locking code) using new debug functions (like debug_d3dformat)
  - fix/cleaning the surface locking code (i must find how to do the same 
thing with glPixelStore)
  - now we support D3DTOP_SUBSTRACT so declare it in caps
  - now support true 32bit (well X 24 bit can be used as 32 bit in caps code). 
For it extend supported modes and extend some caps validation.
Now Warcraft3 can use 16bit (as it want it) and Unreal2 can use 32bit (as it 
need it)
  - first try to get D3DTSS_TCI_CAMERASPACENORMAL and 
D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR looks good:
 it's the good extensions but we have some placement vector maths error  who 
make max payne very funny (have you ever seen metal mario? ;) )

Todo:
  - we must have a real supported caps code (ie IDirect3D8Impl_Check*)
  - fix reflexion placement code (any idea jason ?)
  - now my kdevelop just finish to build, beautify my ugly tabs in code
  - fix unreal2 menu. I think we have problems in 32 bit mode as we haven't 
really played with it (max payne continue working well in 32bit)

Regards,
Raphael
 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+xKLPp7NA3AmQTU4RAvuzAJ98k2aCdvvhfhohr9CpHq5egGO5QgCfQR5o
n50TbW2J1WX57d5EyREE72o=
=gV+1
-----END PGP SIGNATURE-----
-------------- next part --------------
Index: basetexture.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/basetexture.c,v
retrieving revision 1.5
diff -u -r1.5 basetexture.c
--- basetexture.c	8 May 2003 17:36:00 -0000	1.5
+++ basetexture.c	16 May 2003 08:11:25 -0000
@@ -88,11 +88,13 @@
 }
 DWORD    WINAPI        IDirect3DBaseTexture8Impl_SetPriority(LPDIRECT3DBASETEXTURE8 iface, DWORD PriorityNew) {
     ICOM_THIS(IDirect3DBaseTexture8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);
+    return 0;
 }
 DWORD    WINAPI        IDirect3DBaseTexture8Impl_GetPriority(LPDIRECT3DBASETEXTURE8 iface) {
     ICOM_THIS(IDirect3DBaseTexture8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);
+    return 0;
 }
 void     WINAPI        IDirect3DBaseTexture8Impl_PreLoad(LPDIRECT3DBASETEXTURE8 iface) {
     ICOM_THIS(IDirect3DBaseTexture8Impl,iface);
@@ -107,15 +109,18 @@
 /* IDirect3DBaseTexture8 */
 DWORD    WINAPI        IDirect3DBaseTexture8Impl_SetLOD(LPDIRECT3DBASETEXTURE8 iface, DWORD LODNew) {
     ICOM_THIS(IDirect3DBaseTexture8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);
+    return 0;
 }
 DWORD    WINAPI        IDirect3DBaseTexture8Impl_GetLOD(LPDIRECT3DBASETEXTURE8 iface) {
     ICOM_THIS(IDirect3DBaseTexture8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);
+    return 0;
 }
 DWORD    WINAPI        IDirect3DBaseTexture8Impl_GetLevelCount(LPDIRECT3DBASETEXTURE8 iface) {
     ICOM_THIS(IDirect3DBaseTexture8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);    
+    return 0;
 }
 
 ICOM_VTABLE(IDirect3DBaseTexture8) Direct3DBaseTexture8_Vtbl =
Index: device.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/device.c,v
retrieving revision 1.53
diff -u -r1.53 device.c
--- device.c	14 May 2003 19:33:35 -0000	1.53
+++ device.c	16 May 2003 08:11:40 -0000
@@ -78,12 +78,43 @@
 
 #define TRACE_VECTOR(name) TRACE( #name "=(%f, %f, %f, %f)\n", name.x, name.y, name.z, name.w);
 
+const char* debug_d3ddevicetype(D3DDEVTYPE devtype) {
+  switch (devtype) {
+#define DEVTYPE_TO_STR(dev) case dev: return #dev
+    DEVTYPE_TO_STR(D3DDEVTYPE_HAL);
+    DEVTYPE_TO_STR(D3DDEVTYPE_REF);
+    DEVTYPE_TO_STR(D3DDEVTYPE_SW);    
+#undef DEVTYPE_TO_STR
+  default:
+    FIXME("Unrecognized %u D3DDEVTYPE!\n", devtype);
+    return "unrecognized";
+  }
+}
+
+const char* debug_d3dusage(DWORD usage) {
+  switch (usage) {
+#define D3DUSAGE_TO_STR(u) case u: return #u
+    D3DUSAGE_TO_STR(D3DUSAGE_RENDERTARGET);
+    D3DUSAGE_TO_STR(D3DUSAGE_DEPTHSTENCIL);
+    D3DUSAGE_TO_STR(D3DUSAGE_WRITEONLY);
+    D3DUSAGE_TO_STR(D3DUSAGE_SOFTWAREPROCESSING);
+    D3DUSAGE_TO_STR(D3DUSAGE_DONOTCLIP);
+    D3DUSAGE_TO_STR(D3DUSAGE_POINTS);
+    D3DUSAGE_TO_STR(D3DUSAGE_RTPATCHES);
+    D3DUSAGE_TO_STR(D3DUSAGE_NPATCHES);
+    D3DUSAGE_TO_STR(D3DUSAGE_DYNAMIC);
+#undef D3DUSAGE_TO_STR
+  case 0: return "none";
+  default:
+    FIXME("Unrecognized %lu Usage!\n", usage);
+    return "unrecognized";
+  }
+}
 
 const char* debug_d3dformat(D3DFORMAT fmt) {
   switch (fmt) {
 #define FMT_TO_STR(fmt) case fmt: return #fmt
     FMT_TO_STR(D3DFMT_UNKNOWN);
-
     FMT_TO_STR(D3DFMT_R8G8B8);
     FMT_TO_STR(D3DFMT_A8R8G8B8);
     FMT_TO_STR(D3DFMT_X8R8G8B8);
@@ -95,21 +126,17 @@
     FMT_TO_STR(D3DFMT_A8);
     FMT_TO_STR(D3DFMT_A8R3G3B2);
     FMT_TO_STR(D3DFMT_X4R4G4B4);
-
     FMT_TO_STR(D3DFMT_A8P8);
     FMT_TO_STR(D3DFMT_P8);
-
     FMT_TO_STR(D3DFMT_L8);
     FMT_TO_STR(D3DFMT_A8L8);
     FMT_TO_STR(D3DFMT_A4L4);
-
     FMT_TO_STR(D3DFMT_V8U8);
     FMT_TO_STR(D3DFMT_L6V5U5);
     FMT_TO_STR(D3DFMT_X8L8V8U8);
     FMT_TO_STR(D3DFMT_Q8W8V8U8);
     FMT_TO_STR(D3DFMT_V16U16);
     FMT_TO_STR(D3DFMT_W11V11U10);
-
     FMT_TO_STR(D3DFMT_UYVY);
     FMT_TO_STR(D3DFMT_YUY2);
     FMT_TO_STR(D3DFMT_DXT1);
@@ -117,7 +144,6 @@
     FMT_TO_STR(D3DFMT_DXT3);
     FMT_TO_STR(D3DFMT_DXT4);
     FMT_TO_STR(D3DFMT_DXT5);
-    
     FMT_TO_STR(D3DFMT_D16_LOCKABLE);
     FMT_TO_STR(D3DFMT_D32);
     FMT_TO_STR(D3DFMT_D15S1);
@@ -125,7 +151,6 @@
     FMT_TO_STR(D3DFMT_D16);
     FMT_TO_STR(D3DFMT_D24X8);
     FMT_TO_STR(D3DFMT_D24X4S4);
-
     FMT_TO_STR(D3DFMT_VERTEXDATA);
     FMT_TO_STR(D3DFMT_INDEX16);
     FMT_TO_STR(D3DFMT_INDEX32);
@@ -182,22 +207,22 @@
     if (This->UpdateStateBlock->VertexShader > VS_HIGHESTFIXEDFXF) {
       vertex_shader = VERTEX_SHADER(This->UpdateStateBlock->VertexShader);
       if (NULL == vertex_shader) {
-          ERR("trying to use unitialised vertex shader: %lu\n", This->UpdateStateBlock->VertexShader);
+          ERR_(d3d_shader)("trying to use unitialised vertex shader: %lu\n", This->UpdateStateBlock->VertexShader);
           return ;
       }
       if (NULL == vertex_shader->function) {
-          TRACE("vertex shader declared without program, using FVF pure mode\n");
+          TRACE_(d3d_shader)("vertex shader declared without program, using FVF pure mode\n");
       } else {
           useVertexShaderFunction = TRUE;
       }
       fvf = (D3DFORMAT) This->UpdateStateBlock->vertexShaderDecl->fvf;
-      TRACE("vertex shader declared FVF: %lx\n", This->UpdateStateBlock->vertexShaderDecl->fvf);
+      TRACE_(d3d_shader)("vertex shader declared FVF: %lx\n", This->UpdateStateBlock->vertexShaderDecl->fvf);
       memset(&vertex_shader->input, 0, sizeof(VSHADERINPUTDATA8));
 
       /** init Constants */
       if (TRUE == This->UpdateStateBlock->Changed.vertexShaderConstant) {
-	TRACE("vertex shader init Constant\n");
+	TRACE_(d3d_shader)("vertex shader init Constant\n");
 	IDirect3DVertexShaderImpl_SetConstantF(vertex_shader, 0, (CONST FLOAT*) &This->UpdateStateBlock->vertexShaderConstant[0], 96);
       }
 
@@ -1005,8 +1089,8 @@
     /* unknown */				  
     case D3DFMT_UNKNOWN:
       /* Guess at the highest value of the above */
-      TRACE("D3DFMT_UNKNOWN - Guessing at 4 bytes/pixel %d\n", fmt);
+      TRACE("D3DFMT_UNKNOWN - Guessing at 4 bytes/pixel %u\n", fmt);
       retVal = 4;
       break;
 
@@ -4175,10 +4244,83 @@
               }
               break;
 
+#if defined(GL_ARB_texture_cube_map) || defined(GL_NV_texgen_reflection)
+	    case D3DTSS_TCI_CAMERASPACENORMAL:
+	      {
+		 float s_plane[] = { 1.0, 0.0, 0.0, 0.0 };
+                float t_plane[] = { 0.0, 1.0, 0.0, 0.0 };
+                float r_plane[] = { 0.0, 0.0, 1.0, 0.0 };
+                float q_plane[] = { 0.0, 0.0, 0.0, 1.0 };
+                TRACE("D3DTSS_TCI_CAMERASPACEPOSITION - Set eye plane\n");
+
+                glMatrixMode(GL_MODELVIEW);
+                glPushMatrix();
+                glLoadIdentity();
+                glTexGenfv(GL_S, GL_EYE_PLANE, s_plane);
+                glTexGenfv(GL_T, GL_EYE_PLANE, t_plane);
+                glTexGenfv(GL_R, GL_EYE_PLANE, r_plane);
+                glTexGenfv(GL_Q, GL_EYE_PLANE, q_plane);
+                glPopMatrix();
+
+		 glEnable(GL_TEXTURE_GEN_S);
+		 checkGLcall("glEnable(GL_TEXTURE_GEN_S);");
+		 glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB);
+                checkGLcall("glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB)");
+		 glEnable(GL_TEXTURE_GEN_T);
+		 checkGLcall("glEnable(GL_TEXTURE_GEN_T);");
+		 glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB);
+                checkGLcall("glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB)");
+		 glEnable(GL_TEXTURE_GEN_R);
+		 checkGLcall("glEnable(GL_TEXTURE_GEN_R);");
+		 glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB);
+                checkGLcall("glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB)");
+	      }
+	      break;
+#endif
+
+#if defined(GL_ARB_texture_cube_map) || defined(GL_NV_texgen_reflection)
+	    case D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR:
+	      {
+
+		 float s_plane[] = { 1.0, 0.0, 0.0, 0.0 };
+                float t_plane[] = { 0.0, 1.0, 0.0, 0.0 };
+                float r_plane[] = { 0.0, 0.0, 1.0, 0.0 };
+                float q_plane[] = { 0.0, 0.0, 0.0, 1.0 };
+                TRACE("D3DTSS_TCI_CAMERASPACEPOSITION - Set eye plane\n");
+
+                glMatrixMode(GL_MODELVIEW);
+                glPushMatrix();
+                glLoadIdentity();
+                glTexGenfv(GL_S, GL_EYE_PLANE, s_plane);
+                glTexGenfv(GL_T, GL_EYE_PLANE, t_plane);
+                glTexGenfv(GL_R, GL_EYE_PLANE, r_plane);
+                glTexGenfv(GL_Q, GL_EYE_PLANE, q_plane);
+                glPopMatrix();
+		
+		 glEnable(GL_TEXTURE_GEN_S);
+		 checkGLcall("glEnable(GL_TEXTURE_GEN_S);");
+		 glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB);
+                checkGLcall("glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB)");
+		 glEnable(GL_TEXTURE_GEN_T);
+		 checkGLcall("glEnable(GL_TEXTURE_GEN_T);");
+		 glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB);
+                checkGLcall("glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB)");
+		 glEnable(GL_TEXTURE_GEN_R);
+		 checkGLcall("glEnable(GL_TEXTURE_GEN_R);");
+		 glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB);
+                checkGLcall("glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB)");
+	      }
+	      break;
+#endif
+
+            /* Unhandled types: */
             default:
                 /* Todo: */
-                /* ? disable GL_TEXTURE_GEN_n ? */
+                /* ? disable GL_TEXTURE_GEN_n ? */ 
+	        glDisable(GL_TEXTURE_GEN_S);
+	        glDisable(GL_TEXTURE_GEN_T);
+	        glDisable(GL_TEXTURE_GEN_R);
                 FIXME("Unhandled D3DTSS_TEXCOORDINDEX %lx\n", Value);
                 break;
             }
@@ -4541,7 +4709,7 @@
     *pHandle = VS_HIGHESTFIXEDFXF + i;
 
     object->function = pFunction;
-    for (i = 0; 0xFFFFFFFF != pFunction[i]; ++i) ;
+    for (i = 0; D3DPS_END() != pFunction[i]; ++i) ;
     object->functionLength = i + 1;
 
     return D3D_OK;
Index: directx.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/directx.c,v
retrieving revision 1.33
diff -u -r1.33 directx.c
--- directx.c	15 May 2003 04:16:16 -0000	1.33
+++ directx.c	16 May 2003 08:11:41 -0000
@@ -41,18 +41,37 @@
     X11DRV_GET_FONT,      /* get current X font for a DC */
 };
 
-#define NUM_MODES 10
-static const int modes[NUM_MODES][3] = {
-    {640, 480, 85},
-    {800, 600, 85},
-    {1024, 768, 85},
-    {1152, 864, 85},
-    {1280, 768, 85},
-    {1280, 960, 85},
-    {1280, 1024, 85},
-    {1600, 900, 85},
-    {1600, 1024, 85},
-    {1600, 1200, 85}
+#define NUM_MODES 20
+static const int modes[NUM_MODES][4] = {
+    {640, 480, 85, 16},
+    {640, 480, 85, 32},
+
+    {800, 600, 85, 16},
+    {800, 600, 85, 32},
+
+    {1024, 768, 85, 16},
+    {1024, 768, 85, 32},
+
+    {1152, 864, 85, 16},
+    {1152, 864, 85, 32},
+
+    {1280, 768, 85, 16},
+    {1280, 768, 85, 32},
+
+    {1280, 960, 85, 16},
+    {1280, 960, 85, 32},
+
+    {1280, 1024, 85, 16},
+    {1280, 1024, 85, 32},
+
+    {1600, 900, 85, 16},
+    {1600, 900, 85, 32},
+
+    {1600, 1024, 85, 16},
+    {1600, 1024, 85, 32},
+
+    {1600, 1200, 85, 16},
+    {1600, 1200, 85, 32}
 };
 
 /* retrieve the X display to use on a given DC */
@@ -132,7 +151,7 @@
         pIdentifier->SubSysId = 0;
         pIdentifier->Revision = 0;
         /*FIXME: memcpy(&pIdentifier->DeviceIdentifier, ??, sizeof(??GUID)); */
-        if (Flags & D3DENUM_NO_WHQL_LEVEL ) {
+        if (Flags & D3DENUM_NO_WHQL_LEVEL) {
             pIdentifier->WHQLLevel = 0;
         } else {
             pIdentifier->WHQLLevel = 1;
@@ -159,12 +178,14 @@
         int maxHeight       = GetSystemMetrics(SM_CYSCREEN);
         int i;
 
-        for (i=0; i<NUM_MODES; i++) {
+        for (i = 0; i < NUM_MODES; i++) {
             if (modes[i][0] > maxWidth || modes[i][1] > maxHeight) {
-                return i+1;
+  	         TRACE("(%p}->(Adapter: %d) => %d\n", This, Adapter, i + 1);
+                return i + 1;
             }
         }
-        return NUM_MODES+1;
+	 TRACE("(%p}->(Adapter: %d) => %d\n", This, Adapter, NUM_MODES);
+        return NUM_MODES + 1;
     } else {
         FIXME("Adapter not primary display\n");
     }
@@ -190,27 +211,29 @@
             pMode->Width        = GetSystemMetrics(SM_CXSCREEN);
             pMode->Height       = GetSystemMetrics(SM_CYSCREEN);
             pMode->RefreshRate  = 85; /*FIXME: How to identify? */
+	    bpp = 32;
         } else if (Mode < (NUM_MODES+1)) {
             pMode->Width        = modes[Mode-1][0];
             pMode->Height       = modes[Mode-1][1];
             pMode->RefreshRate  = modes[Mode-1][2];
+	    bpp = modes[Mode-1][3];
         } else {
             TRACE("Requested mode out of range %d\n", Mode);
             return D3DERR_INVALIDCALL;
         }
 
         hdc = CreateDCA("DISPLAY", NULL, NULL, NULL);
-        bpp = GetDeviceCaps(hdc, BITSPIXEL);
+        bpp = min(GetDeviceCaps(hdc, BITSPIXEL), bpp);
         DeleteDC(hdc);
 
         switch (bpp) {
-        case  8: pMode->Format       = D3DFMT_R3G3B2;   break;
-        case 16: pMode->Format       = D3DFMT_R5G6B5;   break;
-        case 24: pMode->Format       = D3DFMT_R5G6B5;   break; /* Make 24bit appear as 16 bit */
-        case 32: pMode->Format       = D3DFMT_A8R8G8B8; break;
-        default: pMode->Format       = D3DFMT_UNKNOWN;
+        case  8: pMode->Format = D3DFMT_R3G3B2;   break;
+        case 16: pMode->Format = D3DFMT_R5G6B5;   break;
+        case 24: /* pMode->Format = D3DFMT_R5G6B5;   break;*/ /* Make 24bit appear as 16 bit */
+        case 32: pMode->Format = D3DFMT_A8R8G8B8; break;
+        default: pMode->Format = D3DFMT_UNKNOWN;
         }
-        TRACE("W %d H %d rr %d fmt %x\n", pMode->Width, pMode->Height, pMode->RefreshRate, pMode->Format);
+        TRACE("W %d H %d rr %d fmt (%x,%s) bpp %u\n", pMode->Width, pMode->Height, pMode->RefreshRate, pMode->Format, debug_d3dformat(pMode->Format), bpp);
 
     } else {
         FIXME("Adapter not primary display\n");
@@ -243,7 +266,7 @@
         switch (bpp) {
         case  8: pMode->Format       = D3DFMT_R3G3B2;   break;
         case 16: pMode->Format       = D3DFMT_R5G6B5;   break;
-        case 24: pMode->Format       = D3DFMT_R5G6B5;   break; /* Make 24bit appear as 16 bit */
+        case 24: /*pMode->Format       = D3DFMT_R5G6B5;   break;*/ /* Make 24bit appear as 16 bit */
         case 32: pMode->Format       = D3DFMT_A8R8G8B8; break;
         default: pMode->Format       = D3DFMT_UNKNOWN;
         }
@@ -261,8 +284,13 @@
                                                             UINT Adapter, D3DDEVTYPE CheckType, D3DFORMAT DisplayFormat,
                                                             D3DFORMAT BackBufferFormat, BOOL Windowed) {
     ICOM_THIS(IDirect3D8Impl,iface);
-    FIXME("(%p)->(Adptr:%d, CheckType:%x, DispFmt:%x, BackBuf:%x, Win? %d): stub\n", This, Adapter, CheckType,
-          DisplayFormat, BackBufferFormat, Windowed);
+    FIXME("(%p)->(Adptr:%d, CheckType:(%x,%s), DispFmt:(%x,%s), BackBuf:(%x,%s), Win?%d): stub\n", 
+	  This, 
+	  Adapter, 
+	  CheckType, debug_d3ddevicetype(CheckType),
+         DisplayFormat, debug_d3dformat(DisplayFormat),
+	  BackBufferFormat, debug_d3dformat(BackBufferFormat),
+	  Windowed);
     return D3D_OK;
 }
 
@@ -270,9 +298,16 @@
                                                             UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat,
                                                             DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) {
     ICOM_THIS(IDirect3D8Impl,iface);
-    FIXME("(%p)->(Adptr:%d, DevType: %x, AdptFmt: %d, Use: %ld, ResTyp: %x, CheckFmt: %d)\n", This, Adapter, DeviceType,
-          AdapterFormat, Usage, RType, CheckFormat);
-    switch(CheckFormat) {
+    FIXME("(%p)->(Adptr:%d, DevType:(%u,%s), AdptFmt:(%u,%s), Use:(%lu,%s), ResTyp:(%x,%s), CheckFmt:(%u,%s))\n", 
+          This, 
+	   Adapter, 
+	   DeviceType, debug_d3ddevicetype(DeviceType), 
+	   AdapterFormat, debug_d3dformat(AdapterFormat), 
+	   Usage, debug_d3dusage(Usage),
+	   RType, debug_d3dressourcetype(RType), 
+	   CheckFormat, debug_d3dformat(CheckFormat));
+
+    switch (CheckFormat) {
     case D3DFMT_UYVY:
     case D3DFMT_YUY2:
     case D3DFMT_DXT1:
@@ -283,11 +318,12 @@
     case D3DFMT_X8L8V8U8:
     case D3DFMT_L6V5U5:
     case D3DFMT_V8U8:
-	   /* Since we do not support these formats right now, don't pretend to. */
-	   return D3DERR_NOTAVAILABLE;
-	default:
-            break;
+      /* Since we do not support these formats right now, don't pretend to. */
+      return D3DERR_NOTAVAILABLE;
+    default:
+      break;
     }
+
     return D3D_OK;
 }
 
@@ -295,8 +331,13 @@
                                                             UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat,
                                                             BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType) {
     ICOM_THIS(IDirect3D8Impl,iface);
-    FIXME("(%p)->(Adptr:%d, DevType: %x, SurfFmt: %x, Win? %d, MultiSamp: %x)\n", This, Adapter, DeviceType,
-          SurfaceFormat, Windowed, MultiSampleType);
+    FIXME("(%p)->(Adptr:%d, DevType:(%x,%s), SurfFmt:(%x,%s), Win?%d, MultiSamp:%x)\n", 
+	   This, 
+	   Adapter, 
+	   DeviceType, debug_d3ddevicetype(DeviceType),
+          SurfaceFormat, debug_d3dformat(SurfaceFormat),
+	   Windowed, 
+	   MultiSampleType);
     return D3D_OK;
 }
 
@@ -304,8 +345,13 @@
                                                             UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat,
                                                             D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat) {
     ICOM_THIS(IDirect3D8Impl,iface);
-    FIXME("(%p)->(Adptr:%d, DevType: %x, AdptFmt: %x, RendrTgtFmt: %x, DepthStencilFmt: %x)\n", This, Adapter, DeviceType,
-          AdapterFormat, RenderTargetFormat, DepthStencilFormat);
+    FIXME("(%p)->(Adptr:%d, DevType:(%x,%s), AdptFmt:(%x,%s), RendrTgtFmt:(%x,%s), DepthStencilFmt:(%x,%s))\n", 
+	   This, 
+	   Adapter, 
+	   DeviceType, debug_d3ddevicetype(DeviceType),
+          AdapterFormat, debug_d3dformat(AdapterFormat),
+	   RenderTargetFormat, debug_d3dformat(RenderTargetFormat), 
+	   DepthStencilFormat, debug_d3dformat(DepthStencilFormat));
     return D3D_OK;
 }
 
@@ -384,13 +430,13 @@
                            D3DTEXOPCAPS_MODULATE | D3DTEXOPCAPS_MODULATE2X | D3DTEXOPCAPS_MODULATE4X |
                            D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_SELECTARG2 | D3DTEXOPCAPS_DISABLE;
 #if defined(GL_VERSION_1_3)
-    pCaps->TextureOpCaps |= D3DTEXOPCAPS_DOTPRODUCT3;
+    pCaps->TextureOpCaps |= D3DTEXOPCAPS_DOTPRODUCT3 | D3DTEXOPCAPS_SUBTRACT;
 #endif
               /* FIXME: Add D3DTEXOPCAPS_ADDSMOOTH D3DTEXOPCAPS_BLENDCURRENTALPHA D3DTEXOPCAPS_BLENDDIFFUSEALPHA D3DTEXOPCAPS_BLENDFACTORALPHA 
                             D3DTEXOPCAPS_BLENDTEXTUREALPHA D3DTEXOPCAPS_BLENDTEXTUREALPHAPM D3DTEXOPCAPS_BUMPENVMAP D3DTEXOPCAPS_BUMPENVMAPLUMINANCE 
                             D3DTEXOPCAPS_LERP D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA 
                             D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA D3DTEXOPCAPS_MULTIPLYADD 
-                            D3DTEXOPCAPS_PREMODULATE D3DTEXOPCAPS_SUBTRACT */
+                            D3DTEXOPCAPS_PREMODULATE */
 
     {
         GLint gl_max;
@@ -427,8 +473,13 @@
     pCaps->VertexShaderVersion = D3DVS_VERSION(1,1);
     pCaps->MaxVertexShaderConst = D3D8_VSHADER_MAX_CONSTANTS;
 
+#if 0
     pCaps->PixelShaderVersion = D3DPS_VERSION(1,1);
     pCaps->MaxPixelShaderValue = 1.0;
+#else
+    pCaps->PixelShaderVersion = 0;
+    pCaps->MaxPixelShaderValue = 0.0;
+#endif
 
     return D3D_OK;
 }
Index: resource.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/resource.c,v
retrieving revision 1.4
diff -u -r1.4 resource.c
--- resource.c	11 May 2003 03:35:27 -0000	1.4
+++ resource.c	16 May 2003 08:11:42 -0000
@@ -83,11 +83,13 @@
 }
 DWORD    WINAPI        IDirect3DResource8Impl_SetPriority(LPDIRECT3DRESOURCE8 iface, DWORD PriorityNew) {
     ICOM_THIS(IDirect3DResource8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);
+    return 0;
 }
 DWORD    WINAPI        IDirect3DResource8Impl_GetPriority(LPDIRECT3DRESOURCE8 iface) {
     ICOM_THIS(IDirect3DResource8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);
+    return 0;
 }
 void     WINAPI        IDirect3DResource8Impl_PreLoad(LPDIRECT3DRESOURCE8 iface) {
     ICOM_THIS(IDirect3DResource8Impl,iface);
Index: surface.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/surface.c,v
retrieving revision 1.8
diff -u -r1.8 surface.c
--- surface.c	12 May 2003 03:10:27 -0000	1.8
+++ surface.c	16 May 2003 08:11:43 -0000
@@ -28,7 +28,7 @@
 
 #include "d3d8_private.h"
 
-WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_surface);
 
 /* trace: */
 #if 0
@@ -131,7 +131,17 @@
       return D3DERR_INVALIDCALL;
     }
 
-    TRACE("(%p) : rect@%p flags(%08lx), output lockedRect@%p, memory@%p\n", This, pRect, Flags, pLockedRect, This->allocatedMemory);
+    if (This == This->Device->backBuffer || This == This->Device->frontBuffer || This->Device->depthStencilBuffer) {
+      if (This == This->Device->backBuffer) {
+	TRACE("(%p, backBuffer) : rect@%p flags(%08lx), output lockedRect@%p, memory@%p\n", This, pRect, Flags, pLockedRect, This->allocatedMemory);
+      } else if (This == This->Device->frontBuffer) {
+	TRACE("(%p, frontBuffer) : rect@%p flags(%08lx), output lockedRect@%p, memory@%p\n", This, pRect, Flags, pLockedRect, This->allocatedMemory);
+      } else if (This == This->Device->depthStencilBuffer) {
+	TRACE("(%p, stencilBuffer) : rect@%p flags(%08lx), output lockedRect@%p, memory@%p\n", This, pRect, Flags, pLockedRect, This->allocatedMemory);
+      }
+    } else {
+      TRACE("(%p) : rect@%p flags(%08lx), output lockedRect@%p, memory@%p\n", This, pRect, Flags, pLockedRect, This->allocatedMemory);
+    }
 
     pLockedRect->Pitch = This->bytesPerPixel * This->myDesc.Width;  /* Bytes / row */    
     
@@ -183,25 +193,50 @@
 	}
 	vcheckGLcall("glReadBuffer");
 
+	/** TODO: use an enhanced version of fmt2glintFmt here instad this switch */
+#if 0
 	switch (This->myDesc.Format) { 
 	case D3DFMT_R5G6B5:
-	  {
-	    glReadPixels(This->lockedRect.left, This->lockedRect.top, 
-			 This->lockedRect.right - This->lockedRect.left, This->lockedRect.bottom - This->lockedRect.top,
-			 GL_RGB, GL_UNSIGNED_SHORT_5_6_5, pLockedRect->pBits);
-	    vcheckGLcall("glReadPixels");
+	  { 
+	    /*
+	      glReadPixels(This->lockedRect.left, This->lockedRect.top, 
+	                   This->lockedRect.right - This->lockedRect.left, This->lockedRect.bottom - This->lockedRect.top,
+	                   GL_RGB, GL_UNSIGNED_SHORT_5_6_5, pLockedRect->pBits);
+	      vcheckGLcall("glReadPixels");
+	    */
+	    long j;
+	    for (j = This->lockedRect.top; j < This->lockedRect.bottom - This->lockedRect.top; ++j) {
+	      glReadPixels(This->lockedRect.left, 
+			   This->lockedRect.bottom - j - 1, 
+			   This->lockedRect.right - This->lockedRect.left, 
+			   1,
+			   GL_RGB, GL_UNSIGNED_SHORT_5_6_5, pLockedRect->pBits);
+	      vcheckGLcall("glReadPixels");
+	    }
 	  }
 	  break;
 	case D3DFMT_R8G8B8:
 	  {
+	    /*
 	    glReadPixels(This->lockedRect.left, This->lockedRect.top, 
 			 This->lockedRect.right - This->lockedRect.left, This->lockedRect.bottom - This->lockedRect.top,
 			 GL_RGB, GL_UNSIGNED_BYTE, pLockedRect->pBits);
 	    vcheckGLcall("glReadPixels");
+	    */
+	    long j;
+	    for (j = This->lockedRect.top; j < This->lockedRect.bottom - This->lockedRect.top; ++j) {
+	      glReadPixels(This->lockedRect.left, 
+			   This->lockedRect.bottom - j - 1, 
+			   This->lockedRect.right - This->lockedRect.left, 
+			   1,
+			   GL_RGB, GL_UNSIGNED_BYTE, pLockedRect->pBits);
+	      vcheckGLcall("glReadPixels");
+	    }
 	  }
 	  break;
 	case D3DFMT_A8R8G8B8:
 	  {
+	    /*
 	    glPixelStorei(GL_PACK_SWAP_BYTES, TRUE);
 	    vcheckGLcall("glPixelStorei");
 	    glReadPixels(This->lockedRect.left, This->lockedRect.top, 
@@ -210,11 +245,38 @@
 	    vcheckGLcall("glReadPixels");
 	    glPixelStorei(GL_PACK_SWAP_BYTES, prev_store);
 	    vcheckGLcall("glPixelStorei");
+	    */
+	    long j;
+	    glPixelStorei(GL_PACK_SWAP_BYTES, TRUE);
+	    vcheckGLcall("glPixelStorei");
+	    for (j = This->lockedRect.top; j < This->lockedRect.bottom - This->lockedRect.top; ++j) {
+	      glReadPixels(This->lockedRect.left, 
+			   This->lockedRect.bottom - j - 1, 
+			   This->lockedRect.right - This->lockedRect.left, 
+			   1,
+			   GL_BGRA, GL_UNSIGNED_BYTE, pLockedRect->pBits);
+	    vcheckGLcall("glReadPixels");
+	    }
+	    glPixelStorei(GL_PACK_SWAP_BYTES, prev_store);
+	    vcheckGLcall("glPixelStorei");
 	  }
 	  break;
 	default:
 	  FIXME("Unsupported Format %u in locking func\n", This->myDesc.Format);
 	}
+#endif
+
+	{
+	  long j;
+	  for (j = This->lockedRect.top; j < This->lockedRect.bottom - This->lockedRect.top; ++j) {
+	    glReadPixels(This->lockedRect.left, 
+			 This->lockedRect.bottom - j - 1, 
+			 This->lockedRect.right - This->lockedRect.left, 
+			 1,
+			 fmt2glFmt(This->myDesc.Format), fmt2glType(This->myDesc.Format), pLockedRect->pBits);
+	    vcheckGLcall("glReadPixels");
+	  }
+	}
 
 	glReadBuffer(prev_read);
 	vcheckGLcall("glReadBuffer");
@@ -262,7 +324,7 @@
       }
     }
 
-    TRACE("returning pBits=%p, pitch=%d\n", pLockedRect->pBits, pLockedRect->Pitch);
+    TRACE("returning memory@%p, pitch(%d) dirtyfied(%d)\n", pLockedRect->pBits, pLockedRect->Pitch, This->Dirty);
 
     This->locked = TRUE;
     return D3D_OK;
@@ -275,7 +337,18 @@
       return D3DERR_INVALIDCALL;
     }
 
-    TRACE("(%p) : see if behavior is correct\n", This);
+    if (This == This->Device->backBuffer || This == This->Device->frontBuffer || This->Device->depthStencilBuffer) {
+      if (This == This->Device->backBuffer) {
+	TRACE("(%p, backBuffer) : dirtyfied(%d)\n", This, This->Dirty);
+      } else if (This == This->Device->frontBuffer) {
+	TRACE("(%p, frontBuffer) : dirtyfied(%d)\n", This, This->Dirty);
+      } else if (This == This->Device->depthStencilBuffer) {
+	TRACE("(%p, stencilBuffer) : dirtyfied(%d)\n", This, This->Dirty);
+      }
+    } else {
+      TRACE("(%p) : dirtyfied(%d)\n", This, This->Dirty);
+    }
+    /*TRACE("(%p) see if behavior is correct\n", This);*/
 
     if (FALSE == This->Dirty) {
       TRACE("(%p) : Not Dirtified so nothing to do, return now\n", This);
@@ -311,7 +384,8 @@
       if (This == This->Device->backBuffer || This == This->Device->frontBuffer) {
 	GLint  prev_store;
 	GLenum prev_draw;
-	
+	GLint  prev_rasterpos[4];
+
 	ENTER_GL();
 	
 	glFlush();
@@ -320,6 +394,8 @@
 	vcheckGLcall("glIntegerv");
 	glGetIntegerv(GL_PACK_SWAP_BYTES, &prev_store);
 	vcheckGLcall("glIntegerv");
+	glGetIntegerv(GL_CURRENT_RASTER_POSITION, &prev_rasterpos[0]);
+	vcheckGLcall("glIntegerv");
 
 	if (This == This->Device->backBuffer) {
 	  glDrawBuffer(GL_BACK);
@@ -362,6 +438,8 @@
 
 	glDrawBuffer(prev_draw);
 	vcheckGLcall("glDrawBuffer");
+	glRasterPos3iv(&prev_rasterpos[0]);
+	vcheckGLcall("glRasterPos3iv");
 	LEAVE_GL();
       } else {
 	FIXME("unsupported unlocking to Rendering surface surf@%p usage(%lu)\n", This, This->myDesc.Usage);
Index: texture.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/texture.c,v
retrieving revision 1.7
diff -u -r1.7 texture.c
--- texture.c	12 May 2003 03:10:27 -0000	1.7
+++ texture.c	16 May 2003 08:11:43 -0000
@@ -61,7 +61,7 @@
 
     TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
     if (ref == 0) {
-        for (i=0; i<This->levels; i++) {
+        for (i = 0; i < This->levels; i++) {
             if (This->surfaces[i] != NULL) {
                 TRACE("(%p) : Releasing surface %p\n", This, This->surfaces[i]);
                 IDirect3DSurface8Impl_Release((LPDIRECT3DSURFACE8) This->surfaces[i]);
@@ -98,63 +98,62 @@
 }
 DWORD    WINAPI        IDirect3DTexture8Impl_SetPriority(LPDIRECT3DTEXTURE8 iface, DWORD PriorityNew) {
     ICOM_THIS(IDirect3DTexture8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);
+    return 0;
 }
 DWORD    WINAPI        IDirect3DTexture8Impl_GetPriority(LPDIRECT3DTEXTURE8 iface) {
     ICOM_THIS(IDirect3DTexture8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);
+    return 0;
 }
 void     WINAPI        IDirect3DTexture8Impl_PreLoad(LPDIRECT3DTEXTURE8 iface) {
     int i;
     ICOM_THIS(IDirect3DTexture8Impl,iface);
     TRACE("(%p) : About to load texture\n", This);
-    for (i=0; i<This->levels; i++) 
-    {
-
-        if (i==0 && This->surfaces[i]->textureName != 0 && This->Dirty == FALSE) {
-            glBindTexture(GL_TEXTURE_2D, This->surfaces[i]->textureName);
-            checkGLcall("glBindTexture");
-            TRACE("Texture %p (level %d) given name %d\n", This->surfaces[i], i, This->surfaces[i]->textureName);
-            /* No need to walk through all mip-map levels, since already all assigned */
-            i = This->levels;
-
-        } else {
-            if (i==0) {
-
-                if (This->surfaces[i]->textureName == 0) {
-                    glGenTextures(1, &This->surfaces[i]->textureName);
-                    checkGLcall("glGenTextures");
-                    TRACE("Texture %p (level %d) given name %d\n", This->surfaces[i], i, This->surfaces[i]->textureName);
-                }
-
-                glBindTexture(GL_TEXTURE_2D, This->surfaces[i]->textureName);
-                checkGLcall("glBindTexture");
-
-                TRACE("Setting GL_TEXTURE_MAX_LEVEL to %d\n", This->levels-1);   
-                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, This->levels-1);
-                checkGLcall("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, This->levels)");
-
-            }
-            TRACE("Calling glTexImage2D %x i=%d, intfmt=%x, w=%d, h=%d,0=%d, glFmt=%x, glType=%lx, Mem=%p\n",
-                  GL_TEXTURE_2D, i, fmt2glintFmt(This->format), This->surfaces[i]->myDesc.Width,
-                  This->surfaces[i]->myDesc.Height, 0, fmt2glFmt(This->format),fmt2glType(This->format),
-                  This->surfaces[i]->allocatedMemory);
-            glTexImage2D(GL_TEXTURE_2D, i,
-                         fmt2glintFmt(This->format),
-                         This->surfaces[i]->myDesc.Width,
-                         This->surfaces[i]->myDesc.Height,
-                         0,
-                         fmt2glFmt(This->format),
-                         fmt2glType(This->format),
-                         This->surfaces[i]->allocatedMemory
-                        );
-            checkGLcall("glTexImage2D");
-
-            /* Removed glTexParameterf now TextureStageStates are initialized at startup */
-            This->Dirty = FALSE;
-        }
+    for (i = 0; i < This->levels; i++) {
+      if (i == 0 && This->surfaces[i]->textureName != 0 && This->Dirty == FALSE) {
+	glBindTexture(GL_TEXTURE_2D, This->surfaces[i]->textureName);
+	checkGLcall("glBindTexture");
+	TRACE("Texture %p (level %d) given name %d\n", This->surfaces[i], i, This->surfaces[i]->textureName);
+	/* No need to walk through all mip-map levels, since already all assigned */
+	i = This->levels;
+      } else {
+	if (i == 0) {
+	  if (This->surfaces[i]->textureName == 0) {
+	    glGenTextures(1, &This->surfaces[i]->textureName);
+	    checkGLcall("glGenTextures");
+	    TRACE("Texture %p (level %d) given name %d\n", This->surfaces[i], i, This->surfaces[i]->textureName);
+	  }
+	  
+	  glBindTexture(GL_TEXTURE_2D, This->surfaces[i]->textureName);
+	  checkGLcall("glBindTexture");
+	  
+	  TRACE("Setting GL_TEXTURE_MAX_LEVEL to %d\n", This->levels - 1);   
+	  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, This->levels - 1);
+	  checkGLcall("glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, This->levels)");
+	  
+	}
+	TRACE("Calling glTexImage2D %x i=%d, intfmt=%x, w=%d, h=%d,0=%d, glFmt=%x, glType=%lx, Mem=%p\n",
+	      GL_TEXTURE_2D, i, fmt2glintFmt(This->format), 
+	      This->surfaces[i]->myDesc.Width, This->surfaces[i]->myDesc.Height, 
+	      0, fmt2glFmt(This->format), fmt2glType(This->format),
+	      This->surfaces[i]->allocatedMemory);
+	glTexImage2D(GL_TEXTURE_2D, 
+		     i,
+		     fmt2glintFmt(This->format),
+		     This->surfaces[i]->myDesc.Width,
+		     This->surfaces[i]->myDesc.Height,
+		     0,
+		     fmt2glFmt(This->format),
+		     fmt2glType(This->format),
+		     This->surfaces[i]->allocatedMemory);
+	checkGLcall("glTexImage2D");
+	
+	/* Removed glTexParameterf now TextureStageStates are initialized at startup */
+	This->Dirty = FALSE;
+      }
     }
-    return;
+    return ;
 }
 D3DRESOURCETYPE WINAPI IDirect3DTexture8Impl_GetType(LPDIRECT3DTEXTURE8 iface) {
     ICOM_THIS(IDirect3DTexture8Impl,iface);
@@ -165,11 +164,13 @@
 /* IDirect3DTexture8 IDirect3DBaseTexture8 Interface follow: */
 DWORD    WINAPI        IDirect3DTexture8Impl_SetLOD(LPDIRECT3DTEXTURE8 iface, DWORD LODNew) {
     ICOM_THIS(IDirect3DTexture8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);
+    return 0;
 }
 DWORD    WINAPI        IDirect3DTexture8Impl_GetLOD(LPDIRECT3DTEXTURE8 iface) {
     ICOM_THIS(IDirect3DTexture8Impl,iface);
-    FIXME("(%p) : stub\n", This);    return D3D_OK;
+    FIXME("(%p) : stub\n", This);
+    return 0;
 }
 DWORD    WINAPI        IDirect3DTexture8Impl_GetLevelCount(LPDIRECT3DTEXTURE8 iface) {
     ICOM_THIS(IDirect3DTexture8Impl,iface);
@@ -183,7 +184,7 @@
 
     if (Level < This->levels) {
         TRACE("(%p) Level (%d)\n", This, Level);
-        return IDirect3DSurface8Impl_GetDesc((LPDIRECT3DSURFACE8)This->surfaces[Level], pDesc);
+        return IDirect3DSurface8Impl_GetDesc((LPDIRECT3DSURFACE8) This->surfaces[Level], pDesc);
     } else {
         FIXME("(%p) Level (%d)\n", This, Level);
     }
Index: vshaderdeclaration.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/vshaderdeclaration.c,v
retrieving revision 1.2
diff -u -r1.2 vshaderdeclaration.c
--- vshaderdeclaration.c	12 Apr 2003 00:06:43 -0000	1.2
+++ vshaderdeclaration.c	16 May 2003 08:11:45 -0000
@@ -30,7 +30,7 @@
 
 #include "d3d8_private.h"
 
-WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
 
 /**
  * DirectX9 SDK download
@@ -354,7 +354,8 @@
   SHORT u, v, r, t;
   DWORD dw;
 
-  /*TRACE("(%p) - This:%p - stream:%p, startIdx=%lu, idxDecal=%lu\n", vshader, This, vertexFirstStream, StartVertexIndex, idxDecal);*/
+  TRACE_(d3d_shader)("(%p) - This:%p - stream:%p, startIdx=%lu, idxDecal=%lu\n", vshader, This, vertexFirstStream, StartVertexIndex, idxDecal);
+
   while (D3DVSD_END() != *pToken) {
     token = *pToken;
     tokentype = ((token & D3DVSD_TOKENTYPEMASK) >> D3DVSD_TOKENTYPESHIFT);
Index: d3d8_private.h
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/d3d8_private.h,v
retrieving revision 1.26
diff -u -r1.26 d3d8_private.h
--- d3d8_private.h	14 May 2003 19:33:35 -0000	1.26
+++ d3d8_private.h	16 May 2003 08:11:48 -0000
@@ -1132,6 +1132,8 @@
 /**
  * Internals debug functions
  */
+const char* debug_d3ddevicetype(D3DDEVTYPE devtype);
+const char* debug_d3dusage(DWORD usage);
 const char* debug_d3dformat(D3DFORMAT fmt);
 const char* debug_d3dressourcetype(D3DRESOURCETYPE res);
 


More information about the wine-patches mailing list