[WINED3D 1/3] Start checking for D3DUSAGE_QUERY_* items, improve traces

Jason Green jave27 at gmail.com
Fri Jul 28 14:33:20 CDT 2006


- I'm positive that we don't support vertex shader texture sampling
yet (some of it's there in glsl_shader.c, but not the rest), so don't
report that we do.
- Start detecting the USAGE_QUERY flags and leave filling in support
for the rest as a TODO for now.
- Improve traces for USAGE flags
- Change some D3D* constants to WINED3D
-------------- next part --------------
From nobody Mon Sep 17 00:00:00 2001
From: Jason <jason at jave02.(none)>
Date: Fri, 28 Jul 2006 13:52:39 -0400
Subject: [PATCH 1/3] Start checking for D3DUSAGE_QUERY_* items, improve traces

- I'm positive that we don't support vertex shader texture sampling yet (some of it's there in glsl_shader.c, but not the rest), so don't report that we do.
- Start detecting the USAGE_QUERY flags and leave filling in support for the rest as a TODO for now.
- Improve traces for USAGE flags
- Change some D3D* constants to WINED3D*

---

 dlls/wined3d/device.c          |    6 +++---
 dlls/wined3d/directx.c         |   22 +++++++++++++++-------
 dlls/wined3d/surface.c         |   10 +++++-----
 dlls/wined3d/utils.c           |   22 +++++++++++++++++++++-
 dlls/wined3d/wined3d_private.h |    1 +
 include/d3d9types.h            |    2 +-
 include/wine/wined3d_types.h   |   10 ++++++++++
 7 files changed, 56 insertions(+), 17 deletions(-)

5dd67b5346751eb7519ccbc8f88928b5e3df1aca
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 651d134..2185054 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -616,7 +616,7 @@ static void CreateVBO(IWineD3DVertexBuff
         return;
     }
 
-    TRACE("Creating an OpenGL vertex buffer object for IWineD3DVertexBuffer %p\n", object);
+    TRACE("Creating an OpenGL vertex buffer object for IWineD3DVertexBuffer %p  Usage(%s)\n", object, debug_d3dusage(vboUsage));
 
     ENTER_GL();
     /* Make sure that the gl error is cleared. Do not use checkGLcall
@@ -667,7 +667,7 @@ static void CreateVBO(IWineD3DVertexBuff
             glUsage = GL_STREAM_DRAW_ARB;
             break;
         case D3DUSAGE_WRITEONLY:
-            TRACE("Gl usage = GL_STATIC_DRAW\n");
+            TRACE("Gl usage = GL_DYNAMIC_DRAW\n");
             glUsage = GL_DYNAMIC_DRAW_ARB;
             break;
         case D3DUSAGE_DYNAMIC:
@@ -675,7 +675,7 @@ static void CreateVBO(IWineD3DVertexBuff
             glUsage = GL_STREAM_COPY_ARB;
             break;
         default:
-            TRACE("Gl usage = GL_STATIC_COPY\n");
+            TRACE("Gl usage = GL_DYNAMIC_COPY\n");
             glUsage = GL_DYNAMIC_COPY_ARB;
             break;
     }
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 4454d98..faaff47 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1429,12 +1429,12 @@ static HRESULT WINAPI IWineD3DImpl_Check
 static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType, 
                                               WINED3DFORMAT AdapterFormat, DWORD Usage, WINED3DRESOURCETYPE RType, WINED3DFORMAT CheckFormat) {
     IWineD3DImpl *This = (IWineD3DImpl *)iface;
-    TRACE_(d3d_caps)("(%p)-> (STUB) (Adptr:%d, DevType:(%u,%s), AdptFmt:(%u,%s), Use:(%lu,%s), ResTyp:(%x,%s), CheckFmt:(%u,%s)) ",
+    TRACE_(d3d_caps)("(%p)-> (STUB) (Adptr:%d, DevType:(%u,%s), AdptFmt:(%u,%s), Use:(%lu,%s,%s), ResTyp:(%x,%s), CheckFmt:(%u,%s)) ",
           This,
           Adapter,
           DeviceType, debug_d3ddevicetype(DeviceType),
           AdapterFormat, debug_d3dformat(AdapterFormat),
-          Usage, debug_d3dusage(Usage),
+          Usage, debug_d3dusage(Usage), debug_d3dusagequery(Usage),
           RType, debug_d3dresourcetype(RType),
           CheckFormat, debug_d3dformat(CheckFormat));
 
@@ -1442,6 +1442,14 @@ static HRESULT WINAPI IWineD3DImpl_Check
         return WINED3DERR_INVALIDCALL;
     }
 
+    /* TODO: Check support against more of the WINED3DUSAGE_QUERY_* constants
+     * See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/IDirect3D9__CheckDeviceFormat.asp
+     * and http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/D3DUSAGE_QUERY.asp */
+    if (Usage & WINED3DUSAGE_QUERY_VERTEXTEXTURE) {
+        TRACE_(d3d_caps)("[FAILED]\n");
+        return WINED3DERR_NOTAVAILABLE;     /* Enable when fully supported */
+    }
+    
     if(Usage & WINED3DUSAGE_DEPTHSTENCIL) {
         switch (CheckFormat) {
             case WINED3DFMT_D16_LOCKABLE:
@@ -1455,7 +1463,7 @@ static HRESULT WINAPI IWineD3DImpl_Check
             case WINED3DFMT_D32F_LOCKABLE:
             case WINED3DFMT_D24FS8:
                 TRACE_(d3d_caps)("[OK]\n");
-                return D3D_OK;
+                return WINED3D_OK;
             default:
                 TRACE_(d3d_caps)("[FAILED]\n");
                 return WINED3DERR_NOTAVAILABLE;
@@ -1579,7 +1587,7 @@ static HRESULT WINAPI IWineD3DImpl_Check
         case WINED3DFMT_INDEX32:
         case WINED3DFMT_Q16W16V16U16:
             TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */
-            return D3DERR_NOTAVAILABLE;
+            return WINED3DERR_NOTAVAILABLE;
 
         /*****
          *  Float formats: Not supported right now
@@ -1592,20 +1600,20 @@ static HRESULT WINAPI IWineD3DImpl_Check
         case WINED3DFMT_A32B32G32R32F:
         case WINED3DFMT_CxV8U8:
             TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */
-            return D3DERR_NOTAVAILABLE;
+            return WINED3DERR_NOTAVAILABLE;
 
             /* Not supported */
         case WINED3DFMT_G16R16:
         case WINED3DFMT_A16B16G16R16:
             TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */
-            return D3DERR_NOTAVAILABLE;
+            return WINED3DERR_NOTAVAILABLE;
 
         default:
             break;
     }
 
     TRACE_(d3d_caps)("[FAILED]\n");
-    return D3DERR_NOTAVAILABLE;
+    return WINED3DERR_NOTAVAILABLE;
 }
 
 static HRESULT  WINAPI IWineD3DImpl_CheckDeviceFormatConversion(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType,
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index a763537..7f80552 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -762,7 +762,7 @@ static HRESULT WINAPI IWineD3DSurfaceImp
     } else if (WINED3DUSAGE_DEPTHSTENCIL & This->resource.usage) { /* stencil surfaces */
 
         if (!messages & 1) {
-            FIXME("TODO stencil depth surface locking surf%p usage(%lu)\n", This, This->resource.usage);
+            FIXME("TODO stencil depth surface locking surf%p usage(%s)\n", This, debug_d3dusage(This->resource.usage));
             /*
 
             glReadPixels(This->lockedRect.left,
@@ -776,7 +776,7 @@ static HRESULT WINAPI IWineD3DSurfaceImp
             messages |= 1;
         }
     } else {
-        FIXME("unsupported locking to surface surf@%p usage(%lu)\n", This, This->resource.usage);
+        FIXME("unsupported locking to surface surf@%p usage(%s)\n", This, debug_d3dusage(This->resource.usage));
     }
 
     if (Flags & (WINED3DLOCK_NO_DIRTY_UPDATE | WINED3DLOCK_READONLY)) {
@@ -1198,9 +1198,9 @@ static HRESULT WINAPI IWineD3DSurfaceImp
     } else if (WINED3DUSAGE_DEPTHSTENCIL & This->resource.usage) { /* stencil surfaces */
 
         if (iface == myDevice->depthStencilBuffer) {
-            FIXME("TODO stencil depth surface unlocking surf@%p usage(%lu)\n", This, This->resource.usage);
+            FIXME("TODO stencil depth surface unlocking surf@%p usage(%s)\n", This, debug_d3dusage(This->resource.usage));
         } else {
-            FIXME("unsupported unlocking to StencilDepth surface surf@%p usage(%lu)\n", This, This->resource.usage);
+            FIXME("unsupported unlocking to StencilDepth surface surf@%p usage(%s)\n", This, debug_d3dusage(This->resource.usage));
         }
 
     } else {
@@ -2768,7 +2768,7 @@ static HRESULT WINAPI IWineD3DSurfaceImp
     IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
     IWineD3DSurfaceImpl *Src = (IWineD3DSurfaceImpl *) SrcSurface;
     TRACE("(%p)->(%p,%p,%p,%lx,%p)\n", This, DestRect, SrcSurface, SrcRect, Flags, DDBltFx);
-    TRACE("(%p): Usage is %08lx\n", This, This->resource.usage);
+    TRACE("(%p): Usage is %s\n", This, debug_d3dusage(This->resource.usage));
 
     /* Special cases for RenderTargets */
     if( (This->resource.usage & WINED3DUSAGE_RENDERTARGET) ||
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index d712e65..fc9edf6 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -230,7 +230,7 @@ #undef DEVTYPE_TO_STR
 }
 
 const char* debug_d3dusage(DWORD usage) {
-  switch (usage) {
+  switch (usage & WINED3DUSAGE_MASK) {
 #define WINED3DUSAGE_TO_STR(u) case u: return #u
     WINED3DUSAGE_TO_STR(WINED3DUSAGE_RENDERTARGET);
     WINED3DUSAGE_TO_STR(WINED3DUSAGE_DEPTHSTENCIL);
@@ -241,6 +241,8 @@ #define WINED3DUSAGE_TO_STR(u) case u: r
     WINED3DUSAGE_TO_STR(WINED3DUSAGE_RTPATCHES);
     WINED3DUSAGE_TO_STR(WINED3DUSAGE_NPATCHES);
     WINED3DUSAGE_TO_STR(WINED3DUSAGE_DYNAMIC);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_AUTOGENMIPMAP);
+    WINED3DUSAGE_TO_STR(WINED3DUSAGE_DMAP);
 #undef WINED3DUSAGE_TO_STR
   case 0: return "none";
   default:
@@ -249,6 +251,24 @@ #undef WINED3DUSAGE_TO_STR
   }
 }
 
+const char* debug_d3dusagequery(DWORD usagequery) {
+  switch (usagequery & WINED3DUSAGE_QUERY_MASK) {
+#define WINED3DUSAGEQUERY_TO_STR(u) case u: return #u
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_FILTER);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_LEGACYBUMPMAP);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_SRGBREAD);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_SRGBWRITE);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_VERTEXTEXTURE);
+    WINED3DUSAGEQUERY_TO_STR(WINED3DUSAGE_QUERY_WRAPANDMIP);
+#undef WINED3DUSAGEQUERY_TO_STR
+  case 0: return "none";
+  default:
+    FIXME("Unrecognized %lu Usage Query!\n", usagequery);
+    return "unrecognized";
+  }
+}
+
 const char* debug_d3ddeclusage(BYTE usage) {
     switch (usage) {
 #define WINED3DDECLUSAGE_TO_STR(u) case u: return #u
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 05194a4..b3dc283 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1215,6 +1215,7 @@ const char* debug_d3dformat(WINED3DFORMA
 const char* debug_d3ddevicetype(D3DDEVTYPE devtype);
 const char* debug_d3dresourcetype(WINED3DRESOURCETYPE res);
 const char* debug_d3dusage(DWORD usage);
+const char* debug_d3dusagequery(DWORD usagequery);
 const char* debug_d3ddeclusage(BYTE usage);
 const char* debug_d3dprimitivetype(D3DPRIMITIVETYPE PrimitiveType);
 const char* debug_d3drenderstate(DWORD state);
diff --git a/include/d3d9types.h b/include/d3d9types.h
index adcfa52..cae4739 100644
--- a/include/d3d9types.h
+++ b/include/d3d9types.h
@@ -120,7 +120,7 @@ #define D3DUSAGE_QUERY_POSTPIXELSHADER_B
 #define D3DUSAGE_QUERY_SRGBREAD                 0x00010000L
 #define D3DUSAGE_QUERY_SRGBWRITE                0x00040000L
 #define D3DUSAGE_QUERY_VERTEXTEXTURE            0x00100000L
-
+#define D3DUSAGE_QUERY_WRAPANDMIP               0x00200000L
 
 #define D3DWRAP_U        1
 #define D3DWRAP_V        2
diff --git a/include/wine/wined3d_types.h b/include/wine/wined3d_types.h
index 2e65e1b..73ed292 100644
--- a/include/wine/wined3d_types.h
+++ b/include/wine/wined3d_types.h
@@ -1005,6 +1005,16 @@ #define WINED3DUSAGE_NPATCHES           
 #define WINED3DUSAGE_DYNAMIC                          0x00000200L
 #define WINED3DUSAGE_AUTOGENMIPMAP                    0x00000400L 
 #define WINED3DUSAGE_DMAP                             0x00004000L
+#define WINED3DUSAGE_MASK                             0x00004FFFL
+
+#define WINED3DUSAGE_QUERY_LEGACYBUMPMAP            0x00008000L
+#define WINED3DUSAGE_QUERY_FILTER                   0x00020000L
+#define WINED3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING 0x00080000L
+#define WINED3DUSAGE_QUERY_SRGBREAD                 0x00010000L
+#define WINED3DUSAGE_QUERY_SRGBWRITE                0x00040000L
+#define WINED3DUSAGE_QUERY_VERTEXTEXTURE            0x00100000L
+#define WINED3DUSAGE_QUERY_WRAPANDMIP               0x00200000L
+#define WINED3DUSAGE_QUERY_MASK                     0x002F8000L
 
 typedef enum _WINED3DSURFTYPE {
     SURFACE_UNKNOWN    = 0,   /* Default / Unknown surface type */
-- 
1.3.3


More information about the wine-patches mailing list