[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