Change the way caps are sent between d3d9/d3d8 and wined3d to make it

easier for wined3d to support additional versions of Direct3D.
This commit is contained in:
Oliver Stieber 2005-06-17 09:59:03 +00:00 committed by Alexandre Julliard
parent 96ebd31066
commit e70e3ba0ff
8 changed files with 308 additions and 10 deletions

View file

@ -102,6 +102,65 @@ extern int ps_mode;
#define PIXEL_SHADER(Handle) \
((Handle <= VS_HIGHESTFIXEDFXF) ? ((Handle >= sizeof(PixelShaders) / sizeof(IDirect3DPixelShaderImpl*)) ? NULL : PixelShaders[Handle]) : PixelShaders[Handle - VS_HIGHESTFIXEDFXF])
/* ===========================================================================
Macros
=========================================================================== */
/* Not nice, but it lets wined3d support different versions of directx */
#define D3D8CAPSTOWINECAPS(_pD3D8Caps, _pWineCaps) \
_pWineCaps->DeviceType = &_pD3D8Caps->DeviceType; \
_pWineCaps->AdapterOrdinal = &_pD3D8Caps->AdapterOrdinal; \
_pWineCaps->Caps = &_pD3D8Caps->Caps; \
_pWineCaps->Caps2 = &_pD3D8Caps->Caps2; \
_pWineCaps->Caps3 = &_pD3D8Caps->Caps3; \
_pWineCaps->PresentationIntervals = &_pD3D8Caps->PresentationIntervals; \
_pWineCaps->CursorCaps = &_pD3D8Caps->CursorCaps; \
_pWineCaps->DevCaps = &_pD3D8Caps->DevCaps; \
_pWineCaps->PrimitiveMiscCaps = &_pD3D8Caps->PrimitiveMiscCaps; \
_pWineCaps->RasterCaps = &_pD3D8Caps->RasterCaps; \
_pWineCaps->ZCmpCaps = &_pD3D8Caps->ZCmpCaps; \
_pWineCaps->SrcBlendCaps = &_pD3D8Caps->SrcBlendCaps; \
_pWineCaps->DestBlendCaps = &_pD3D8Caps->DestBlendCaps; \
_pWineCaps->AlphaCmpCaps = &_pD3D8Caps->AlphaCmpCaps; \
_pWineCaps->ShadeCaps = &_pD3D8Caps->ShadeCaps; \
_pWineCaps->TextureCaps = &_pD3D8Caps->TextureCaps; \
_pWineCaps->TextureFilterCaps = &_pD3D8Caps->TextureFilterCaps; \
_pWineCaps->CubeTextureFilterCaps = &_pD3D8Caps->CubeTextureFilterCaps; \
_pWineCaps->VolumeTextureFilterCaps = &_pD3D8Caps->VolumeTextureFilterCaps; \
_pWineCaps->TextureAddressCaps = &_pD3D8Caps->TextureAddressCaps; \
_pWineCaps->VolumeTextureAddressCaps = &_pD3D8Caps->VolumeTextureAddressCaps; \
_pWineCaps->LineCaps = &_pD3D8Caps->LineCaps; \
_pWineCaps->MaxTextureWidth = &_pD3D8Caps->MaxTextureWidth; \
_pWineCaps->MaxTextureHeight = &_pD3D8Caps->MaxTextureHeight; \
_pWineCaps->MaxVolumeExtent = &_pD3D8Caps->MaxVolumeExtent; \
_pWineCaps->MaxTextureRepeat = &_pD3D8Caps->MaxTextureRepeat; \
_pWineCaps->MaxTextureAspectRatio = &_pD3D8Caps->MaxTextureAspectRatio; \
_pWineCaps->MaxAnisotropy = &_pD3D8Caps->MaxAnisotropy; \
_pWineCaps->MaxVertexW = &_pD3D8Caps->MaxVertexW; \
_pWineCaps->GuardBandLeft = &_pD3D8Caps->GuardBandLeft; \
_pWineCaps->GuardBandTop = &_pD3D8Caps->GuardBandTop; \
_pWineCaps->GuardBandRight = &_pD3D8Caps->GuardBandRight; \
_pWineCaps->GuardBandBottom = &_pD3D8Caps->GuardBandBottom; \
_pWineCaps->ExtentsAdjust = &_pD3D8Caps->ExtentsAdjust; \
_pWineCaps->StencilCaps = &_pD3D8Caps->StencilCaps; \
_pWineCaps->FVFCaps = &_pD3D8Caps->FVFCaps; \
_pWineCaps->TextureOpCaps = &_pD3D8Caps->TextureOpCaps; \
_pWineCaps->MaxTextureBlendStages = &_pD3D8Caps->MaxTextureBlendStages; \
_pWineCaps->MaxSimultaneousTextures = &_pD3D8Caps->MaxSimultaneousTextures; \
_pWineCaps->VertexProcessingCaps = &_pD3D8Caps->VertexProcessingCaps; \
_pWineCaps->MaxActiveLights = &_pD3D8Caps->MaxActiveLights; \
_pWineCaps->MaxUserClipPlanes = &_pD3D8Caps->MaxUserClipPlanes; \
_pWineCaps->MaxVertexBlendMatrices = &_pD3D8Caps->MaxVertexBlendMatrices; \
_pWineCaps->MaxVertexBlendMatrixIndex = &_pD3D8Caps->MaxVertexBlendMatrixIndex; \
_pWineCaps->MaxPointSize = &_pD3D8Caps->MaxPointSize; \
_pWineCaps->MaxPrimitiveCount = &_pD3D8Caps->MaxPrimitiveCount; \
_pWineCaps->MaxVertexIndex = &_pD3D8Caps->MaxVertexIndex; \
_pWineCaps->MaxStreams = &_pD3D8Caps->MaxStreams; \
_pWineCaps->MaxStreamStride = &_pD3D8Caps->MaxStreamStride; \
_pWineCaps->VertexShaderVersion = &_pD3D8Caps->VertexShaderVersion; \
_pWineCaps->MaxVertexShaderConst = &_pD3D8Caps->MaxVertexShaderConst; \
_pWineCaps->PixelShaderVersion = &_pD3D8Caps->PixelShaderVersion; \
_pWineCaps->PixelShader1xMaxValue = &_pD3D8Caps->MaxPixelShaderValue;
/* Direct3D8 Interfaces: */
typedef struct IDirect3DBaseTexture8Impl IDirect3DBaseTexture8Impl;
typedef struct IDirect3DVolumeTexture8Impl IDirect3DVolumeTexture8Impl;

View file

@ -192,7 +192,23 @@ HRESULT WINAPI IDirect3D8Impl_CheckDepthStencilMatch(LPDIRECT3D8 iface,
HRESULT WINAPI IDirect3D8Impl_GetDeviceCaps(LPDIRECT3D8 iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS8* pCaps) {
IDirect3D8Impl *This = (IDirect3D8Impl *)iface;
return IWineD3D_GetDeviceCaps(This->WineD3D, Adapter, DeviceType, (void *)pCaps);
HRESULT hrc = D3D_OK;
WINED3DCAPS *pWineCaps;
TRACE("(%p) Relay %d %u %p \n", This, Adapter, DeviceType, pCaps);
if(NULL == pCaps){
return D3DERR_INVALIDCALL;
}
pWineCaps = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINED3DCAPS));
if(pWineCaps == NULL){
return D3DERR_INVALIDCALL; /*well this is what MSDN says to return*/
}
D3D8CAPSTOWINECAPS(pCaps, pWineCaps)
hrc = IWineD3D_GetDeviceCaps(This->WineD3D, Adapter, DeviceType, pWineCaps);
HeapFree(GetProcessHeap(), 0, pWineCaps);
TRACE("(%p) returning %p\n", This, pCaps);
return hrc;
}
HMONITOR WINAPI IDirect3D8Impl_GetAdapterMonitor(LPDIRECT3D8 iface, UINT Adapter) {

View file

@ -92,6 +92,88 @@ extern void (*wine_tsx11_unlock_ptr)(void);
#define D3D_VSHADER_MAX_CONSTANTS 96
#define D3D_PSHADER_MAX_CONSTANTS 32
/* ===========================================================================
Macros
=========================================================================== */
/* Not nice, but it lets wined3d support different versions of directx */
#define D3D9CAPSTOWINECAPS(_pD3D9Caps, _pWineCaps) \
_pWineCaps->DeviceType = &_pD3D9Caps->DeviceType; \
_pWineCaps->AdapterOrdinal = &_pD3D9Caps->AdapterOrdinal; \
_pWineCaps->Caps = &_pD3D9Caps->Caps; \
_pWineCaps->Caps2 = &_pD3D9Caps->Caps2; \
_pWineCaps->Caps3 = &_pD3D9Caps->Caps3; \
_pWineCaps->PresentationIntervals = &_pD3D9Caps->PresentationIntervals; \
_pWineCaps->CursorCaps = &_pD3D9Caps->CursorCaps; \
_pWineCaps->DevCaps = &_pD3D9Caps->DevCaps; \
_pWineCaps->PrimitiveMiscCaps = &_pD3D9Caps->PrimitiveMiscCaps; \
_pWineCaps->RasterCaps = &_pD3D9Caps->RasterCaps; \
_pWineCaps->ZCmpCaps = &_pD3D9Caps->ZCmpCaps; \
_pWineCaps->SrcBlendCaps = &_pD3D9Caps->SrcBlendCaps; \
_pWineCaps->DestBlendCaps = &_pD3D9Caps->DestBlendCaps; \
_pWineCaps->AlphaCmpCaps = &_pD3D9Caps->AlphaCmpCaps; \
_pWineCaps->ShadeCaps = &_pD3D9Caps->ShadeCaps; \
_pWineCaps->TextureCaps = &_pD3D9Caps->TextureCaps; \
_pWineCaps->TextureFilterCaps = &_pD3D9Caps->TextureFilterCaps; \
_pWineCaps->CubeTextureFilterCaps = &_pD3D9Caps->CubeTextureFilterCaps; \
_pWineCaps->VolumeTextureFilterCaps = &_pD3D9Caps->VolumeTextureFilterCaps; \
_pWineCaps->TextureAddressCaps = &_pD3D9Caps->TextureAddressCaps; \
_pWineCaps->VolumeTextureAddressCaps = &_pD3D9Caps->VolumeTextureAddressCaps; \
_pWineCaps->LineCaps = &_pD3D9Caps->LineCaps; \
_pWineCaps->MaxTextureWidth = &_pD3D9Caps->MaxTextureWidth; \
_pWineCaps->MaxTextureHeight = &_pD3D9Caps->MaxTextureHeight; \
_pWineCaps->MaxVolumeExtent = &_pD3D9Caps->MaxVolumeExtent; \
_pWineCaps->MaxTextureRepeat = &_pD3D9Caps->MaxTextureRepeat; \
_pWineCaps->MaxTextureAspectRatio = &_pD3D9Caps->MaxTextureAspectRatio; \
_pWineCaps->MaxAnisotropy = &_pD3D9Caps->MaxAnisotropy; \
_pWineCaps->MaxVertexW = &_pD3D9Caps->MaxVertexW; \
_pWineCaps->GuardBandLeft = &_pD3D9Caps->GuardBandLeft; \
_pWineCaps->GuardBandTop = &_pD3D9Caps->GuardBandTop; \
_pWineCaps->GuardBandRight = &_pD3D9Caps->GuardBandRight; \
_pWineCaps->GuardBandBottom = &_pD3D9Caps->GuardBandBottom; \
_pWineCaps->ExtentsAdjust = &_pD3D9Caps->ExtentsAdjust; \
_pWineCaps->StencilCaps = &_pD3D9Caps->StencilCaps; \
_pWineCaps->FVFCaps = &_pD3D9Caps->FVFCaps; \
_pWineCaps->TextureOpCaps = &_pD3D9Caps->TextureOpCaps; \
_pWineCaps->MaxTextureBlendStages = &_pD3D9Caps->MaxTextureBlendStages; \
_pWineCaps->MaxSimultaneousTextures = &_pD3D9Caps->MaxSimultaneousTextures; \
_pWineCaps->VertexProcessingCaps = &_pD3D9Caps->VertexProcessingCaps; \
_pWineCaps->MaxActiveLights = &_pD3D9Caps->MaxActiveLights; \
_pWineCaps->MaxUserClipPlanes = &_pD3D9Caps->MaxUserClipPlanes; \
_pWineCaps->MaxVertexBlendMatrices = &_pD3D9Caps->MaxVertexBlendMatrices; \
_pWineCaps->MaxVertexBlendMatrixIndex = &_pD3D9Caps->MaxVertexBlendMatrixIndex; \
_pWineCaps->MaxPointSize = &_pD3D9Caps->MaxPointSize; \
_pWineCaps->MaxPrimitiveCount = &_pD3D9Caps->MaxPrimitiveCount; \
_pWineCaps->MaxVertexIndex = &_pD3D9Caps->MaxVertexIndex; \
_pWineCaps->MaxStreams = &_pD3D9Caps->MaxStreams; \
_pWineCaps->MaxStreamStride = &_pD3D9Caps->MaxStreamStride; \
_pWineCaps->VertexShaderVersion = &_pD3D9Caps->VertexShaderVersion; \
_pWineCaps->MaxVertexShaderConst = &_pD3D9Caps->MaxVertexShaderConst; \
_pWineCaps->PixelShaderVersion = &_pD3D9Caps->PixelShaderVersion; \
_pWineCaps->PixelShader1xMaxValue = &_pD3D9Caps->PixelShader1xMaxValue; \
_pWineCaps->DevCaps2 = &_pD3D9Caps->DevCaps2; \
_pWineCaps->MaxNpatchTessellationLevel = &_pD3D9Caps->MaxNpatchTessellationLevel; \
_pWineCaps->MasterAdapterOrdinal = &_pD3D9Caps->MasterAdapterOrdinal; \
_pWineCaps->AdapterOrdinalInGroup = &_pD3D9Caps->AdapterOrdinalInGroup; \
_pWineCaps->NumberOfAdaptersInGroup = &_pD3D9Caps->NumberOfAdaptersInGroup; \
_pWineCaps->DeclTypes = &_pD3D9Caps->DeclTypes; \
_pWineCaps->NumSimultaneousRTs = &_pD3D9Caps->NumSimultaneousRTs; \
_pWineCaps->StretchRectFilterCaps = &_pD3D9Caps->StretchRectFilterCaps; \
_pWineCaps->VS20Caps.Caps = &_pD3D9Caps->VS20Caps.Caps; \
_pWineCaps->VS20Caps.DynamicFlowControlDepth = &_pD3D9Caps->VS20Caps.DynamicFlowControlDepth; \
_pWineCaps->VS20Caps.NumTemps = &_pD3D9Caps->VS20Caps.NumTemps; \
_pWineCaps->VS20Caps.NumTemps = &_pD3D9Caps->VS20Caps.NumTemps; \
_pWineCaps->VS20Caps.StaticFlowControlDepth = &_pD3D9Caps->VS20Caps.StaticFlowControlDepth; \
_pWineCaps->PS20Caps.Caps = &_pD3D9Caps->PS20Caps.Caps; \
_pWineCaps->PS20Caps.DynamicFlowControlDepth = &_pD3D9Caps->PS20Caps.DynamicFlowControlDepth; \
_pWineCaps->PS20Caps.NumTemps = &_pD3D9Caps->PS20Caps.NumTemps; \
_pWineCaps->PS20Caps.StaticFlowControlDepth = &_pD3D9Caps->PS20Caps.StaticFlowControlDepth; \
_pWineCaps->PS20Caps.NumInstructionSlots = &_pD3D9Caps->PS20Caps.NumInstructionSlots; \
_pWineCaps->VertexTextureFilterCaps = &_pD3D9Caps->VertexTextureFilterCaps; \
_pWineCaps->MaxVShaderInstructionsExecuted = &_pD3D9Caps->MaxVShaderInstructionsExecuted; \
_pWineCaps->MaxPShaderInstructionsExecuted = &_pD3D9Caps->MaxPShaderInstructionsExecuted; \
_pWineCaps->MaxVertexShader30InstructionSlots = &_pD3D9Caps->MaxVertexShader30InstructionSlots; \
_pWineCaps->MaxPixelShader30InstructionSlots = &_pD3D9Caps->MaxPixelShader30InstructionSlots;
/* Direct3D9 Interfaces: */
typedef struct IDirect3D9Impl IDirect3D9Impl;
typedef struct IDirect3DDevice9Impl IDirect3DDevice9Impl;

View file

@ -97,7 +97,23 @@ HRESULT WINAPI IDirect3DDevice9Impl_GetDirect3D(LPDIRECT3DDEVICE9 iface, IDire
HRESULT WINAPI IDirect3DDevice9Impl_GetDeviceCaps(LPDIRECT3DDEVICE9 iface, D3DCAPS9* pCaps) {
IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
return IWineD3DDevice_GetDeviceCaps(This->WineD3DDevice, pCaps);
HRESULT hrc = D3D_OK;
WINED3DCAPS *pWineCaps;
TRACE("(%p) : Relay pCaps %p \n", This, pCaps);
if(NULL == pCaps){
return D3DERR_INVALIDCALL;
}
pWineCaps = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINED3DCAPS));
if(pWineCaps == NULL){
return D3DERR_INVALIDCALL; /* well this is what MSDN says to return */
}
D3D9CAPSTOWINECAPS(pCaps, pWineCaps)
hrc = IWineD3DDevice_GetDeviceCaps(This->WineD3DDevice, pWineCaps);
HeapFree(GetProcessHeap(), 0, pWineCaps);
TRACE("Returning %p %p\n", This, pCaps);
return hrc;
}
HRESULT WINAPI IDirect3DDevice9Impl_GetDisplayMode(LPDIRECT3DDEVICE9 iface, UINT iSwapChain, D3DDISPLAYMODE* pMode) {

View file

@ -2,6 +2,7 @@
* IDirect3D9 implementation
*
* Copyright 2002 Jason Edmeades
* Copyright 2005 Oliver Stieber
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -149,7 +150,23 @@ HRESULT WINAPI IDirect3D9Impl_CheckDeviceFormatConversion(LPDIRECT3D9 iface, U
HRESULT WINAPI IDirect3D9Impl_GetDeviceCaps(LPDIRECT3D9 iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) {
IDirect3D9Impl *This = (IDirect3D9Impl *)iface;
return IWineD3D_GetDeviceCaps(This->WineD3D, Adapter, DeviceType, (WINED3DCAPS *)pCaps);
HRESULT hrc = D3D_OK;
WINED3DCAPS *pWineCaps;
TRACE("(%p) Relay %d %u %p \n", This, Adapter, DeviceType, pCaps);
if(NULL == pCaps){
return D3DERR_INVALIDCALL;
}
pWineCaps = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINED3DCAPS));
if(pWineCaps == NULL){
return D3DERR_INVALIDCALL; /*well this is what MSDN says to return*/
}
D3D9CAPSTOWINECAPS(pCaps, pWineCaps)
hrc = IWineD3D_GetDeviceCaps(This->WineD3D, Adapter, DeviceType, pWineCaps);
HeapFree(GetProcessHeap(), 0, pWineCaps);
TRACE("(%p) returning %p\n", This, pCaps);
return hrc;
}
HMONITOR WINAPI IDirect3D9Impl_GetAdapterMonitor(LPDIRECT3D9 iface, UINT Adapter) {

View file

@ -3626,11 +3626,10 @@ HRESULT WINAPI IWineD3DDeviceImpl_GetBackBuffer(IWineD3DDevice *iface, UINT iSwa
return D3D_OK;
}
HRESULT WINAPI IWineD3DDeviceImpl_GetDeviceCaps(IWineD3DDevice *iface, D3DCAPS9* pCaps) {
HRESULT WINAPI IWineD3DDeviceImpl_GetDeviceCaps(IWineD3DDevice *iface, WINED3DCAPS* pCaps) {
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
WARN("(%p) : stub, calling idirect3d for now\n", This);
IWineD3D_GetDeviceCaps(This->wineD3D, This->adapterNo, This->devType, pCaps);
return D3D_OK;
return IWineD3D_GetDeviceCaps(This->wineD3D, This->adapterNo, This->devType, pCaps);
}
/** TODO: move to swapchains **/

View file

@ -126,8 +126,6 @@ DEFINE_GUID(IID_IWineD3DQuery,
# define WINED3DMATERIAL D3DMATERIAL8
# define WINED3DVIEWPORT D3DVIEWPORT8
/* Subset: */
# define WINED3DCAPS D3DCAPS8
#else
/* Identical: */
# define WINED3DLIGHT D3DLIGHT9
@ -135,8 +133,6 @@ DEFINE_GUID(IID_IWineD3DQuery,
# define WINED3DMATERIAL D3DMATERIAL9
# define WINED3DVIEWPORT D3DVIEWPORT9
/* Subsets: */
# define WINED3DCAPS D3DCAPS9
#endif
typedef struct IWineD3D IWineD3D;

View file

@ -4,6 +4,7 @@
* Copyright 2002-2003 The wine-d3d team
* Copyright 2002-2003 Jason Edmeades
* Raphael Junqueira
* Copyright 2005 Oliver Stieber
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -536,6 +537,118 @@ typedef struct WINED3DDEVINFO_VCACHE {
DWORD MagicNumber;
} WINED3DDEVINFO_VCACHE;
/*
* The wined3dcaps structure
*/
typedef struct _WINED3DVSHADERCAPS2_0 {
DWORD *Caps;
INT *DynamicFlowControlDepth;
INT *NumTemps;
INT *StaticFlowControlDepth;
} WINED3DVSHADERCAPS2_0;
typedef struct _WINED3DPSHADERCAPS2_0 {
DWORD *Caps;
INT *DynamicFlowControlDepth;
INT *NumTemps;
INT *StaticFlowControlDepth;
INT *NumInstructionSlots;
} WINED3DPSHADERCAPS2_0;
typedef struct _WINED3DCAPS {
D3DDEVTYPE *DeviceType;
UINT *AdapterOrdinal;
DWORD *Caps;
DWORD *Caps2;
DWORD *Caps3;
DWORD *PresentationIntervals;
DWORD *CursorCaps;
DWORD *DevCaps;
DWORD *PrimitiveMiscCaps;
DWORD *RasterCaps;
DWORD *ZCmpCaps;
DWORD *SrcBlendCaps;
DWORD *DestBlendCaps;
DWORD *AlphaCmpCaps;
DWORD *ShadeCaps;
DWORD *TextureCaps;
DWORD *TextureFilterCaps;
DWORD *CubeTextureFilterCaps;
DWORD *VolumeTextureFilterCaps;
DWORD *TextureAddressCaps;
DWORD *VolumeTextureAddressCaps;
DWORD *LineCaps;
DWORD *MaxTextureWidth;
DWORD *MaxTextureHeight;
DWORD *MaxVolumeExtent;
DWORD *MaxTextureRepeat;
DWORD *MaxTextureAspectRatio;
DWORD *MaxAnisotropy;
float *MaxVertexW;
float *GuardBandLeft;
float *GuardBandTop;
float *GuardBandRight;
float *GuardBandBottom;
float *ExtentsAdjust;
DWORD *StencilCaps;
DWORD *FVFCaps;
DWORD *TextureOpCaps;
DWORD *MaxTextureBlendStages;
DWORD *MaxSimultaneousTextures;
DWORD *VertexProcessingCaps;
DWORD *MaxActiveLights;
DWORD *MaxUserClipPlanes;
DWORD *MaxVertexBlendMatrices;
DWORD *MaxVertexBlendMatrixIndex;
float *MaxPointSize;
DWORD *MaxPrimitiveCount;
DWORD *MaxVertexIndex;
DWORD *MaxStreams;
DWORD *MaxStreamStride;
DWORD *VertexShaderVersion;
DWORD *MaxVertexShaderConst;
DWORD *PixelShaderVersion;
float *PixelShader1xMaxValue;
/* DX 9 */
DWORD *DevCaps2;
float *MaxNpatchTessellationLevel;
DWORD *Reserved5; /*undocumented*/
UINT *MasterAdapterOrdinal;
UINT *AdapterOrdinalInGroup;
UINT *NumberOfAdaptersInGroup;
DWORD *DeclTypes;
DWORD *NumSimultaneousRTs;
DWORD *StretchRectFilterCaps;
WINED3DVSHADERCAPS2_0 VS20Caps;
WINED3DPSHADERCAPS2_0 PS20Caps;
DWORD *VertexTextureFilterCaps;
DWORD *MaxVShaderInstructionsExecuted;
DWORD *MaxPShaderInstructionsExecuted;
DWORD *MaxVertexShader30InstructionSlots;
DWORD *MaxPixelShader30InstructionSlots;
DWORD *Reserved2;/* Not in the microsoft headers but documented */
DWORD *Reserved3;
} WINED3DCAPS;
#endif