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

This commit is contained in:
Jason Green 2006-07-28 15:33:20 -04:00 committed by Alexandre Julliard
parent dc743d82ff
commit d353ab7879
7 changed files with 56 additions and 17 deletions

View File

@ -616,7 +616,7 @@ static void CreateVBO(IWineD3DVertexBufferImpl *object) {
return; 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(); ENTER_GL();
/* Make sure that the gl error is cleared. Do not use checkGLcall /* 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; glUsage = GL_STREAM_DRAW_ARB;
break; break;
case D3DUSAGE_WRITEONLY: case D3DUSAGE_WRITEONLY:
TRACE("Gl usage = GL_STATIC_DRAW\n"); TRACE("Gl usage = GL_DYNAMIC_DRAW\n");
glUsage = GL_DYNAMIC_DRAW_ARB; glUsage = GL_DYNAMIC_DRAW_ARB;
break; break;
case D3DUSAGE_DYNAMIC: case D3DUSAGE_DYNAMIC:
@ -675,7 +675,7 @@ static void CreateVBO(IWineD3DVertexBufferImpl *object) {
glUsage = GL_STREAM_COPY_ARB; glUsage = GL_STREAM_COPY_ARB;
break; break;
default: default:
TRACE("Gl usage = GL_STATIC_COPY\n"); TRACE("Gl usage = GL_DYNAMIC_COPY\n");
glUsage = GL_DYNAMIC_COPY_ARB; glUsage = GL_DYNAMIC_COPY_ARB;
break; break;
} }

View File

@ -1429,12 +1429,12 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceType(IWineD3D *iface, UINT Adapter
static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType, static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType,
WINED3DFORMAT AdapterFormat, DWORD Usage, WINED3DRESOURCETYPE RType, WINED3DFORMAT CheckFormat) { WINED3DFORMAT AdapterFormat, DWORD Usage, WINED3DRESOURCETYPE RType, WINED3DFORMAT CheckFormat) {
IWineD3DImpl *This = (IWineD3DImpl *)iface; 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, This,
Adapter, Adapter,
DeviceType, debug_d3ddevicetype(DeviceType), DeviceType, debug_d3ddevicetype(DeviceType),
AdapterFormat, debug_d3dformat(AdapterFormat), AdapterFormat, debug_d3dformat(AdapterFormat),
Usage, debug_d3dusage(Usage), Usage, debug_d3dusage(Usage), debug_d3dusagequery(Usage),
RType, debug_d3dresourcetype(RType), RType, debug_d3dresourcetype(RType),
CheckFormat, debug_d3dformat(CheckFormat)); CheckFormat, debug_d3dformat(CheckFormat));
@ -1442,6 +1442,14 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
return WINED3DERR_INVALIDCALL; 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) { if(Usage & WINED3DUSAGE_DEPTHSTENCIL) {
switch (CheckFormat) { switch (CheckFormat) {
case WINED3DFMT_D16_LOCKABLE: case WINED3DFMT_D16_LOCKABLE:
@ -1455,7 +1463,7 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
case WINED3DFMT_D32F_LOCKABLE: case WINED3DFMT_D32F_LOCKABLE:
case WINED3DFMT_D24FS8: case WINED3DFMT_D24FS8:
TRACE_(d3d_caps)("[OK]\n"); TRACE_(d3d_caps)("[OK]\n");
return D3D_OK; return WINED3D_OK;
default: default:
TRACE_(d3d_caps)("[FAILED]\n"); TRACE_(d3d_caps)("[FAILED]\n");
return WINED3DERR_NOTAVAILABLE; return WINED3DERR_NOTAVAILABLE;
@ -1579,7 +1587,7 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
case WINED3DFMT_INDEX32: case WINED3DFMT_INDEX32:
case WINED3DFMT_Q16W16V16U16: case WINED3DFMT_Q16W16V16U16:
TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */ TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */
return D3DERR_NOTAVAILABLE; return WINED3DERR_NOTAVAILABLE;
/***** /*****
* Float formats: Not supported right now * Float formats: Not supported right now
@ -1592,20 +1600,20 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
case WINED3DFMT_A32B32G32R32F: case WINED3DFMT_A32B32G32R32F:
case WINED3DFMT_CxV8U8: case WINED3DFMT_CxV8U8:
TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */ TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */
return D3DERR_NOTAVAILABLE; return WINED3DERR_NOTAVAILABLE;
/* Not supported */ /* Not supported */
case WINED3DFMT_G16R16: case WINED3DFMT_G16R16:
case WINED3DFMT_A16B16G16R16: case WINED3DFMT_A16B16G16R16:
TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */ TRACE_(d3d_caps)("[FAILED]\n"); /* Enable when implemented */
return D3DERR_NOTAVAILABLE; return WINED3DERR_NOTAVAILABLE;
default: default:
break; break;
} }
TRACE_(d3d_caps)("[FAILED]\n"); TRACE_(d3d_caps)("[FAILED]\n");
return D3DERR_NOTAVAILABLE; return WINED3DERR_NOTAVAILABLE;
} }
static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormatConversion(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType, static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormatConversion(IWineD3D *iface, UINT Adapter, WINED3DDEVTYPE DeviceType,

View File

@ -762,7 +762,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LockRect(IWineD3DSurface *iface, WINED
} else if (WINED3DUSAGE_DEPTHSTENCIL & This->resource.usage) { /* stencil surfaces */ } else if (WINED3DUSAGE_DEPTHSTENCIL & This->resource.usage) { /* stencil surfaces */
if (!messages & 1) { 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, glReadPixels(This->lockedRect.left,
@ -776,7 +776,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LockRect(IWineD3DSurface *iface, WINED
messages |= 1; messages |= 1;
} }
} else { } 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)) { 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 */ } else if (WINED3DUSAGE_DEPTHSTENCIL & This->resource.usage) { /* stencil surfaces */
if (iface == myDevice->depthStencilBuffer) { 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 { } 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 { } else {
@ -2766,7 +2766,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_Blt(IWineD3DSurface *iface, RECT *Dest
IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface; IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *)iface;
IWineD3DSurfaceImpl *Src = (IWineD3DSurfaceImpl *) SrcSurface; IWineD3DSurfaceImpl *Src = (IWineD3DSurfaceImpl *) SrcSurface;
TRACE("(%p)->(%p,%p,%p,%lx,%p)\n", This, DestRect, SrcSurface, SrcRect, Flags, DDBltFx); 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 */ /* Special cases for RenderTargets */
if( (This->resource.usage & WINED3DUSAGE_RENDERTARGET) || if( (This->resource.usage & WINED3DUSAGE_RENDERTARGET) ||

View File

@ -230,7 +230,7 @@ const char* debug_d3ddevicetype(D3DDEVTYPE devtype) {
} }
const char* debug_d3dusage(DWORD usage) { const char* debug_d3dusage(DWORD usage) {
switch (usage) { switch (usage & WINED3DUSAGE_MASK) {
#define WINED3DUSAGE_TO_STR(u) case u: return #u #define WINED3DUSAGE_TO_STR(u) case u: return #u
WINED3DUSAGE_TO_STR(WINED3DUSAGE_RENDERTARGET); WINED3DUSAGE_TO_STR(WINED3DUSAGE_RENDERTARGET);
WINED3DUSAGE_TO_STR(WINED3DUSAGE_DEPTHSTENCIL); WINED3DUSAGE_TO_STR(WINED3DUSAGE_DEPTHSTENCIL);
@ -241,6 +241,8 @@ const char* debug_d3dusage(DWORD usage) {
WINED3DUSAGE_TO_STR(WINED3DUSAGE_RTPATCHES); WINED3DUSAGE_TO_STR(WINED3DUSAGE_RTPATCHES);
WINED3DUSAGE_TO_STR(WINED3DUSAGE_NPATCHES); WINED3DUSAGE_TO_STR(WINED3DUSAGE_NPATCHES);
WINED3DUSAGE_TO_STR(WINED3DUSAGE_DYNAMIC); WINED3DUSAGE_TO_STR(WINED3DUSAGE_DYNAMIC);
WINED3DUSAGE_TO_STR(WINED3DUSAGE_AUTOGENMIPMAP);
WINED3DUSAGE_TO_STR(WINED3DUSAGE_DMAP);
#undef WINED3DUSAGE_TO_STR #undef WINED3DUSAGE_TO_STR
case 0: return "none"; case 0: return "none";
default: 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) { const char* debug_d3ddeclusage(BYTE usage) {
switch (usage) { switch (usage) {
#define WINED3DDECLUSAGE_TO_STR(u) case u: return #u #define WINED3DDECLUSAGE_TO_STR(u) case u: return #u

View File

@ -1215,6 +1215,7 @@ const char* debug_d3dformat(WINED3DFORMAT fmt);
const char* debug_d3ddevicetype(D3DDEVTYPE devtype); const char* debug_d3ddevicetype(D3DDEVTYPE devtype);
const char* debug_d3dresourcetype(WINED3DRESOURCETYPE res); const char* debug_d3dresourcetype(WINED3DRESOURCETYPE res);
const char* debug_d3dusage(DWORD usage); const char* debug_d3dusage(DWORD usage);
const char* debug_d3dusagequery(DWORD usagequery);
const char* debug_d3ddeclusage(BYTE usage); const char* debug_d3ddeclusage(BYTE usage);
const char* debug_d3dprimitivetype(D3DPRIMITIVETYPE PrimitiveType); const char* debug_d3dprimitivetype(D3DPRIMITIVETYPE PrimitiveType);
const char* debug_d3drenderstate(DWORD state); const char* debug_d3drenderstate(DWORD state);

View File

@ -120,7 +120,7 @@
#define D3DUSAGE_QUERY_SRGBREAD 0x00010000L #define D3DUSAGE_QUERY_SRGBREAD 0x00010000L
#define D3DUSAGE_QUERY_SRGBWRITE 0x00040000L #define D3DUSAGE_QUERY_SRGBWRITE 0x00040000L
#define D3DUSAGE_QUERY_VERTEXTEXTURE 0x00100000L #define D3DUSAGE_QUERY_VERTEXTEXTURE 0x00100000L
#define D3DUSAGE_QUERY_WRAPANDMIP 0x00200000L
#define D3DWRAP_U 1 #define D3DWRAP_U 1
#define D3DWRAP_V 2 #define D3DWRAP_V 2

View File

@ -1005,6 +1005,16 @@ typedef enum _WINED3DDECLUSAGE {
#define WINED3DUSAGE_DYNAMIC 0x00000200L #define WINED3DUSAGE_DYNAMIC 0x00000200L
#define WINED3DUSAGE_AUTOGENMIPMAP 0x00000400L #define WINED3DUSAGE_AUTOGENMIPMAP 0x00000400L
#define WINED3DUSAGE_DMAP 0x00004000L #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 { typedef enum _WINED3DSURFTYPE {
SURFACE_UNKNOWN = 0, /* Default / Unknown surface type */ SURFACE_UNKNOWN = 0, /* Default / Unknown surface type */