Commit d353ab78 authored by Jason Green's avatar Jason Green Committed by Alexandre Julliard

wined3d: Start checking for D3DUSAGE_QUERY_* items, improve traces.

parent dc743d82
......@@ -616,7 +616,7 @@ static void CreateVBO(IWineD3DVertexBufferImpl *object) {
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(IWineD3DVertexBufferImpl *object) {
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(IWineD3DVertexBufferImpl *object) {
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;
}
......
......@@ -1429,12 +1429,12 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceType(IWineD3D *iface, UINT Adapter
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_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
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_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
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_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
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_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
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,
......
......@@ -762,7 +762,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LockRect(IWineD3DSurface *iface, WINED
} 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 IWineD3DSurfaceImpl_LockRect(IWineD3DSurface *iface, WINED
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)) {
......@@ -1197,9 +1197,9 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_UnlockRect(IWineD3DSurface *iface) {
} 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 {
......@@ -2766,7 +2766,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_Blt(IWineD3DSurface *iface, RECT *Dest
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) ||
......
......@@ -230,7 +230,7 @@ const char* debug_d3ddevicetype(D3DDEVTYPE devtype) {
}
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 @@ const char* debug_d3dusage(DWORD usage) {
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 @@ const char* debug_d3dusage(DWORD usage) {
}
}
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
......
......@@ -1215,6 +1215,7 @@ const char* debug_d3dformat(WINED3DFORMAT fmt);
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);
......
......@@ -120,7 +120,7 @@
#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
......
......@@ -1005,6 +1005,16 @@ typedef enum _WINED3DDECLUSAGE {
#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 */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment