From a47e7badb9484b123be413cdd353ced601b10d99 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20D=C3=B6singer?= Date: Tue, 29 Jul 2008 11:03:59 -0500 Subject: [PATCH] ddraw: Set ddraw caps in wined3d. Currently the ddraw capabilities were almost static, except of D3D support. When overlay support is added, the caps depend on certain settings in WineD3D or capabilities available from OpenGL and Xv. So set those caps in wined3d as well. --- dlls/ddraw/ddraw.c | 54 ++++++++++++++++- dlls/ddraw/ddraw_private.h | 2 - dlls/ddraw/main.c | 53 ---------------- dlls/wined3d/directx.c | 63 ++++++++++++++++++- include/wine/wined3d_caps.h | 140 +++++++++++++++++++++++++++++++++++++++++++ include/wine/wined3d_types.h | 22 +++++++ 6 files changed, 276 insertions(+), 58 deletions(-) diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c index 8b0ad9b02a1..5a8ea0ee5d2 100644 --- a/dlls/ddraw/ddraw.c +++ b/dlls/ddraw/ddraw.c @@ -700,6 +700,10 @@ IDirectDrawImpl_GetCaps(IDirectDraw7 *iface, DDCAPS *HELCaps) { ICOM_THIS_FROM(IDirectDrawImpl, IDirectDraw7, iface); + DDCAPS caps; + WINED3DCAPS winecaps; + HRESULT hr; + DDSCAPS2 ddscaps = {0, 0, 0, 0}; TRACE("(%p)->(%p,%p)\n", This, DriverCaps, HELCaps); /* One structure must be != NULL */ @@ -709,9 +713,55 @@ IDirectDrawImpl_GetCaps(IDirectDraw7 *iface, return DDERR_INVALIDPARAMS; } + memset(&caps, 0, sizeof(caps)); + memset(&winecaps, 0, sizeof(winecaps)); + caps.dwSize = sizeof(caps); + EnterCriticalSection(&ddraw_cs); + hr = IWineD3DDevice_GetDeviceCaps(This->wineD3DDevice, &winecaps); + if(FAILED(hr)) { + WARN("IWineD3DDevice::GetDeviceCaps failed\n"); + LeaveCriticalSection(&ddraw_cs); + return hr; + } + + hr = IDirectDraw7_GetAvailableVidMem(iface, &ddscaps, &caps.dwVidMemTotal, &caps.dwVidMemFree); + LeaveCriticalSection(&ddraw_cs); + if(FAILED(hr)) { + WARN("IDirectDraw7::GetAvailableVidMem failed\n"); + return hr; + } + + caps.dwCaps = winecaps.DirectDrawCaps.Caps; + caps.dwCaps2 = winecaps.DirectDrawCaps.Caps2; + caps.dwCKeyCaps = winecaps.DirectDrawCaps.CKeyCaps; + caps.dwFXCaps = winecaps.DirectDrawCaps.FXCaps; + caps.dwPalCaps = winecaps.DirectDrawCaps.PalCaps; + caps.ddsCaps.dwCaps = winecaps.DirectDrawCaps.ddsCaps; + caps.dwSVBCaps = winecaps.DirectDrawCaps.SVBCaps; + caps.dwSVBCKeyCaps = winecaps.DirectDrawCaps.SVBCKeyCaps; + caps.dwSVBFXCaps = winecaps.DirectDrawCaps.SVBFXCaps; + caps.dwVSBCaps = winecaps.DirectDrawCaps.VSBCaps; + caps.dwVSBCKeyCaps = winecaps.DirectDrawCaps.VSBCKeyCaps; + caps.dwVSBFXCaps = winecaps.DirectDrawCaps.VSBFXCaps; + caps.dwSSBCaps = winecaps.DirectDrawCaps.SSBCaps; + caps.dwSSBCKeyCaps = winecaps.DirectDrawCaps.SSBCKeyCaps; + caps.dwSSBFXCaps = winecaps.DirectDrawCaps.SSBFXCaps; + + /* Even if WineD3D supports 3D rendering, remove the cap if ddraw is configured + * not to use it + */ + if(DefaultSurfaceType == SURFACE_GDI) { + caps.dwCaps &= ~DDCAPS_3D; + caps.ddsCaps.dwCaps &= ~(DDSCAPS_3DDEVICE | DDSCAPS_MIPMAP | DDSCAPS_TEXTURE | DDSCAPS_ZBUFFER); + } + if(winecaps.DirectDrawCaps.StrideAlign != 0) { + caps.dwCaps |= DDCAPS_ALIGNSTRIDE; + caps.dwAlignStrideAlign = winecaps.DirectDrawCaps.StrideAlign; + } + if(DriverCaps) { - DD_STRUCT_COPY_BYSIZE(DriverCaps, &This->caps); + DD_STRUCT_COPY_BYSIZE(DriverCaps, &caps); if (TRACE_ON(ddraw)) { TRACE("Driver Caps :\n"); @@ -721,7 +771,7 @@ IDirectDrawImpl_GetCaps(IDirectDraw7 *iface, } if(HELCaps) { - DD_STRUCT_COPY_BYSIZE(HELCaps, &This->caps); + DD_STRUCT_COPY_BYSIZE(HELCaps, &caps); if (TRACE_ON(ddraw)) { TRACE("HEL Caps :\n"); diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h index bde2baef415..56908cba8fe 100644 --- a/dlls/ddraw/ddraw_private.h +++ b/dlls/ddraw/ddraw_private.h @@ -128,8 +128,6 @@ struct IDirectDrawImpl DWORD orig_width, orig_height; DWORD orig_bpp; - DDCAPS caps; - /* D3D things */ IDirectDrawSurfaceImpl *d3d_target; HWND d3d_window; diff --git a/dlls/ddraw/main.c b/dlls/ddraw/main.c index d03a89c1d2f..5f04feadb2e 100644 --- a/dlls/ddraw/main.c +++ b/dlls/ddraw/main.c @@ -281,59 +281,6 @@ DDRAW_Create(const GUID *guid, /* Get the amount of video memory */ This->total_vidmem = IWineD3DDevice_GetAvailableTextureMem(This->wineD3DDevice); - /* Initialize the caps */ - This->caps.dwSize = sizeof(This->caps); -/* do not report DDCAPS_OVERLAY and friends since we don't support overlays */ -#define BLIT_CAPS (DDCAPS_BLT | DDCAPS_BLTCOLORFILL | DDCAPS_BLTDEPTHFILL \ - | DDCAPS_BLTSTRETCH | DDCAPS_CANBLTSYSMEM | DDCAPS_CANCLIP \ - | DDCAPS_CANCLIPSTRETCHED | DDCAPS_COLORKEY \ - | DDCAPS_COLORKEYHWASSIST | DDCAPS_ALIGNBOUNDARYSRC ) -#define CKEY_CAPS (DDCKEYCAPS_DESTBLT | DDCKEYCAPS_SRCBLT) -#define FX_CAPS (DDFXCAPS_BLTALPHA | DDFXCAPS_BLTMIRRORLEFTRIGHT \ - | DDFXCAPS_BLTMIRRORUPDOWN | DDFXCAPS_BLTROTATION90 \ - | DDFXCAPS_BLTSHRINKX | DDFXCAPS_BLTSHRINKXN \ - | DDFXCAPS_BLTSHRINKY | DDFXCAPS_BLTSHRINKXN \ - | DDFXCAPS_BLTSTRETCHX | DDFXCAPS_BLTSTRETCHXN \ - | DDFXCAPS_BLTSTRETCHY | DDFXCAPS_BLTSTRETCHYN) - This->caps.dwCaps |= DDCAPS_GDI | DDCAPS_PALETTE | BLIT_CAPS; - - This->caps.dwCaps2 |= DDCAPS2_CERTIFIED | DDCAPS2_NOPAGELOCKREQUIRED | - DDCAPS2_PRIMARYGAMMA | DDCAPS2_WIDESURFACES | - DDCAPS2_CANRENDERWINDOWED; - This->caps.dwCKeyCaps |= CKEY_CAPS; - This->caps.dwFXCaps |= FX_CAPS; - This->caps.dwPalCaps |= DDPCAPS_8BIT | DDPCAPS_PRIMARYSURFACE; - This->caps.dwVidMemTotal = This->total_vidmem; - This->caps.dwVidMemFree = This->total_vidmem; - This->caps.dwSVBCaps |= BLIT_CAPS; - This->caps.dwSVBCKeyCaps |= CKEY_CAPS; - This->caps.dwSVBFXCaps |= FX_CAPS; - This->caps.dwVSBCaps |= BLIT_CAPS; - This->caps.dwVSBCKeyCaps |= CKEY_CAPS; - This->caps.dwVSBFXCaps |= FX_CAPS; - This->caps.dwSSBCaps |= BLIT_CAPS; - This->caps.dwSSBCKeyCaps |= CKEY_CAPS; - This->caps.dwSSBFXCaps |= FX_CAPS; - This->caps.ddsCaps.dwCaps |= DDSCAPS_ALPHA | DDSCAPS_BACKBUFFER | - DDSCAPS_FLIP | DDSCAPS_FRONTBUFFER | - DDSCAPS_OFFSCREENPLAIN | DDSCAPS_PALETTE | - DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY | - DDSCAPS_VIDEOMEMORY | DDSCAPS_VISIBLE; - /* Hacks for D3D code */ - /* TODO: Check if WineD3D has 3D enabled - Need opengl surfaces or auto for 3D - */ - if(This->ImplType == 0 || This->ImplType == SURFACE_OPENGL) - { - This->caps.dwCaps |= DDCAPS_3D; - This->caps.ddsCaps.dwCaps |= DDSCAPS_3DDEVICE | DDSCAPS_MIPMAP | DDSCAPS_TEXTURE | DDSCAPS_ZBUFFER; - } - This->caps.ddsOldCaps.dwCaps = This->caps.ddsCaps.dwCaps; - -#undef BLIT_CAPS -#undef CKEY_CAPS -#undef FX_CAPS - list_init(&This->surface_list); list_add_head(&global_ddraw_list, &This->ddraw_list_entry); diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 9cbb40650ce..4b5a8c0a795 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -29,7 +29,6 @@ #define DEBUG_SINGLE_MODE 0 #endif - #include "config.h" #include #include "wined3d_private.h" @@ -2942,6 +2941,7 @@ static HRESULT WINAPI IWineD3DImpl_GetDeviceCaps(IWineD3D *iface, UINT Adapter, struct fragment_caps fragment_caps; const shader_backend_t *shader_backend; const struct fragment_pipeline *frag_pipeline = NULL; + DWORD ckey_caps, blit_caps, fx_caps; TRACE_(d3d_caps)("(%p)->(Adptr:%d, DevType: %x, pCaps: %p)\n", This, Adapter, DeviceType, pCaps); @@ -3428,6 +3428,67 @@ static HRESULT WINAPI IWineD3DImpl_GetDeviceCaps(IWineD3D *iface, UINT Adapter, } else pCaps->DeclTypes = 0; + /* Set DirectDraw helper Caps */ + ckey_caps = WINEDDCKEYCAPS_DESTBLT | + WINEDDCKEYCAPS_SRCBLT; + fx_caps = WINEDDFXCAPS_BLTALPHA | + WINEDDFXCAPS_BLTMIRRORLEFTRIGHT | + WINEDDFXCAPS_BLTMIRRORUPDOWN | + WINEDDFXCAPS_BLTROTATION90 | + WINEDDFXCAPS_BLTSHRINKX | + WINEDDFXCAPS_BLTSHRINKXN | + WINEDDFXCAPS_BLTSHRINKY | + WINEDDFXCAPS_BLTSHRINKXN | + WINEDDFXCAPS_BLTSTRETCHX | + WINEDDFXCAPS_BLTSTRETCHXN | + WINEDDFXCAPS_BLTSTRETCHY | + WINEDDFXCAPS_BLTSTRETCHYN; + blit_caps = WINEDDCAPS_BLT | + WINEDDCAPS_BLTCOLORFILL | + WINEDDCAPS_BLTDEPTHFILL | + WINEDDCAPS_BLTSTRETCH | + WINEDDCAPS_CANBLTSYSMEM | + WINEDDCAPS_CANCLIP | + WINEDDCAPS_CANCLIPSTRETCHED | + WINEDDCAPS_COLORKEY | + WINEDDCAPS_COLORKEYHWASSIST | + WINEDDCAPS_ALIGNBOUNDARYSRC; + + /* Fill the ddraw caps structure */ + pCaps->DirectDrawCaps.Caps = WINEDDCAPS_GDI | + WINEDDCAPS_PALETTE | + blit_caps | + WINEDDCAPS_3D; /* TODO: Make conditional */ + pCaps->DirectDrawCaps.Caps2 = WINEDDCAPS2_CERTIFIED | + WINEDDCAPS2_NOPAGELOCKREQUIRED | + WINEDDCAPS2_PRIMARYGAMMA | + WINEDDCAPS2_WIDESURFACES | + WINEDDCAPS2_CANRENDERWINDOWED; + pCaps->DirectDrawCaps.SVBCaps = blit_caps; + pCaps->DirectDrawCaps.SVBCKeyCaps = ckey_caps; + pCaps->DirectDrawCaps.SVBFXCaps = fx_caps; + pCaps->DirectDrawCaps.VSBCaps = blit_caps; + pCaps->DirectDrawCaps.VSBCKeyCaps = ckey_caps; + pCaps->DirectDrawCaps.VSBFXCaps = fx_caps; + pCaps->DirectDrawCaps.SSBCaps = blit_caps; + pCaps->DirectDrawCaps.SSBCKeyCaps = ckey_caps; + pCaps->DirectDrawCaps.SSBFXCaps = fx_caps; + + pCaps->DirectDrawCaps.ddsCaps = WINEDDSCAPS_ALPHA | + WINEDDSCAPS_BACKBUFFER | + WINEDDSCAPS_FLIP | + WINEDDSCAPS_FRONTBUFFER | + WINEDDSCAPS_OFFSCREENPLAIN | + WINEDDSCAPS_PALETTE | + WINEDDSCAPS_PRIMARYSURFACE | + WINEDDSCAPS_SYSTEMMEMORY | + WINEDDSCAPS_VIDEOMEMORY | + WINEDDSCAPS_VISIBLE | + WINEDDSCAPS_3DDEVICE | /* TODO: Make conditional */ + WINEDDSCAPS_MIPMAP | /* TODO: Make conditional */ + WINEDDSCAPS_TEXTURE | /* TODO: Make conditional */ + WINEDDSCAPS_ZBUFFER; /* TODO: Make conditional */ + pCaps->DirectDrawCaps.StrideAlign = 0; /* TODO: SURFACE_ALIGNMENT */ return WINED3D_OK; } diff --git a/include/wine/wined3d_caps.h b/include/wine/wined3d_caps.h index 95b400e4eef..91fa788bdb9 100644 --- a/include/wine/wined3d_caps.h +++ b/include/wine/wined3d_caps.h @@ -168,4 +168,144 @@ #define WINED3DVS20CAPS_PREDICATION 0x00000001 +/* DirectDraw Caps */ +#define WINEDDSCAPS_RESERVED1 0x00000001 +#define WINEDDSCAPS_ALPHA 0x00000002 +#define WINEDDSCAPS_BACKBUFFER 0x00000004 +#define WINEDDSCAPS_COMPLEX 0x00000008 +#define WINEDDSCAPS_FLIP 0x00000010 +#define WINEDDSCAPS_FRONTBUFFER 0x00000020 +#define WINEDDSCAPS_OFFSCREENPLAIN 0x00000040 +#define WINEDDSCAPS_OVERLAY 0x00000080 +#define WINEDDSCAPS_PALETTE 0x00000100 +#define WINEDDSCAPS_PRIMARYSURFACE 0x00000200 +#define WINEDDSCAPS_PRIMARYSURFACELEFT 0x00000400 +#define WINEDDSCAPS_SYSTEMMEMORY 0x00000800 +#define WINEDDSCAPS_TEXTURE 0x00001000 +#define WINEDDSCAPS_3DDEVICE 0x00002000 +#define WINEDDSCAPS_VIDEOMEMORY 0x00004000 +#define WINEDDSCAPS_VISIBLE 0x00008000 +#define WINEDDSCAPS_WRITEONLY 0x00010000 +#define WINEDDSCAPS_ZBUFFER 0x00020000 +#define WINEDDSCAPS_OWNDC 0x00040000 +#define WINEDDSCAPS_LIVEVIDEO 0x00080000 +#define WINEDDSCAPS_HWCODEC 0x00100000 +#define WINEDDSCAPS_MODEX 0x00200000 +#define WINEDDSCAPS_MIPMAP 0x00400000 +#define WINEDDSCAPS_RESERVED2 0x00800000 +#define WINEDDSCAPS_ALLOCONLOAD 0x04000000 +#define WINEDDSCAPS_VIDEOPORT 0x08000000 +#define WINEDDSCAPS_LOCALVIDMEM 0x10000000 +#define WINEDDSCAPS_NONLOCALVIDMEM 0x20000000 +#define WINEDDSCAPS_STANDARDVGAMODE 0x40000000 +#define WINEDDSCAPS_OPTIMIZED 0x80000000 + +#define WINEDDCKEYCAPS_DESTBLT 0x00000001 +#define WINEDDCKEYCAPS_DESTBLTCLRSPACE 0x00000002 +#define WINEDDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004 +#define WINEDDCKEYCAPS_DESTBLTYUV 0x00000008 +#define WINEDDCKEYCAPS_DESTOVERLAY 0x00000010 +#define WINEDDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020 +#define WINEDDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040 +#define WINEDDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080 +#define WINEDDCKEYCAPS_DESTOVERLAYYUV 0x00000100 +#define WINEDDCKEYCAPS_SRCBLT 0x00000200 +#define WINEDDCKEYCAPS_SRCBLTCLRSPACE 0x00000400 +#define WINEDDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800 +#define WINEDDCKEYCAPS_SRCBLTYUV 0x00001000 +#define WINEDDCKEYCAPS_SRCOVERLAY 0x00002000 +#define WINEDDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000 +#define WINEDDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000 +#define WINEDDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000 +#define WINEDDCKEYCAPS_SRCOVERLAYYUV 0x00020000 +#define WINEDDCKEYCAPS_NOCOSTOVERLAY 0x00040000 + +#define WINEDDFXCAPS_BLTALPHA 0x00000001 +#define WINEDDFXCAPS_OVERLAYALPHA 0x00000004 +#define WINEDDFXCAPS_BLTARITHSTRETCHYN 0x00000010 +#define WINEDDFXCAPS_BLTARITHSTRETCHY 0x00000020 +#define WINEDDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040 +#define WINEDDFXCAPS_BLTMIRRORUPDOWN 0x00000080 +#define WINEDDFXCAPS_BLTROTATION 0x00000100 +#define WINEDDFXCAPS_BLTROTATION90 0x00000200 +#define WINEDDFXCAPS_BLTSHRINKX 0x00000400 +#define WINEDDFXCAPS_BLTSHRINKXN 0x00000800 +#define WINEDDFXCAPS_BLTSHRINKY 0x00001000 +#define WINEDDFXCAPS_BLTSHRINKYN 0x00002000 +#define WINEDDFXCAPS_BLTSTRETCHX 0x00004000 +#define WINEDDFXCAPS_BLTSTRETCHXN 0x00008000 +#define WINEDDFXCAPS_BLTSTRETCHY 0x00010000 +#define WINEDDFXCAPS_BLTSTRETCHYN 0x00020000 +#define WINEDDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000 +#define WINEDDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008 +#define WINEDDFXCAPS_OVERLAYSHRINKX 0x00080000 +#define WINEDDFXCAPS_OVERLAYSHRINKXN 0x00100000 +#define WINEDDFXCAPS_OVERLAYSHRINKY 0x00200000 +#define WINEDDFXCAPS_OVERLAYSHRINKYN 0x00400000 +#define WINEDDFXCAPS_OVERLAYSTRETCHX 0x00800000 +#define WINEDDFXCAPS_OVERLAYSTRETCHXN 0x01000000 +#define WINEDDFXCAPS_OVERLAYSTRETCHY 0x02000000 +#define WINEDDFXCAPS_OVERLAYSTRETCHYN 0x04000000 +#define WINEDDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000 +#define WINEDDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000 + +#define WINEDDCAPS_3D 0x00000001 +#define WINEDDCAPS_ALIGNBOUNDARYDEST 0x00000002 +#define WINEDDCAPS_ALIGNSIZEDEST 0x00000004 +#define WINEDDCAPS_ALIGNBOUNDARYSRC 0x00000008 +#define WINEDDCAPS_ALIGNSIZESRC 0x00000010 +#define WINEDDCAPS_ALIGNSTRIDE 0x00000020 +#define WINEDDCAPS_BLT 0x00000040 +#define WINEDDCAPS_BLTQUEUE 0x00000080 +#define WINEDDCAPS_BLTFOURCC 0x00000100 +#define WINEDDCAPS_BLTSTRETCH 0x00000200 +#define WINEDDCAPS_GDI 0x00000400 +#define WINEDDCAPS_OVERLAY 0x00000800 +#define WINEDDCAPS_OVERLAYCANTCLIP 0x00001000 +#define WINEDDCAPS_OVERLAYFOURCC 0x00002000 +#define WINEDDCAPS_OVERLAYSTRETCH 0x00004000 +#define WINEDDCAPS_PALETTE 0x00008000 +#define WINEDDCAPS_PALETTEVSYNC 0x00010000 +#define WINEDDCAPS_READSCANLINE 0x00020000 +#define WINEDDCAPS_STEREOVIEW 0x00040000 +#define WINEDDCAPS_VBI 0x00080000 +#define WINEDDCAPS_ZBLTS 0x00100000 +#define WINEDDCAPS_ZOVERLAYS 0x00200000 +#define WINEDDCAPS_COLORKEY 0x00400000 +#define WINEDDCAPS_ALPHA 0x00800000 +#define WINEDDCAPS_COLORKEYHWASSIST 0x01000000 +#define WINEDDCAPS_NOHARDWARE 0x02000000 +#define WINEDDCAPS_BLTCOLORFILL 0x04000000 +#define WINEDDCAPS_BANKSWITCHED 0x08000000 +#define WINEDDCAPS_BLTDEPTHFILL 0x10000000 +#define WINEDDCAPS_CANCLIP 0x20000000 +#define WINEDDCAPS_CANCLIPSTRETCHED 0x40000000 +#define WINEDDCAPS_CANBLTSYSMEM 0x80000000 + +#define WINEDDCAPS2_CERTIFIED 0x00000001 +#define WINEDDCAPS2_NO2DDURING3DSCENE 0x00000002 +#define WINEDDCAPS2_VIDEOPORT 0x00000004 +#define WINEDDCAPS2_AUTOFLIPOVERLAY 0x00000008 +#define WINEDDCAPS2_CANBOBINTERLEAVED 0x00000010 +#define WINEDDCAPS2_CANBOBNONINTERLEAVED 0x00000020 +#define WINEDDCAPS2_COLORCONTROLOVERLAY 0x00000040 +#define WINEDDCAPS2_COLORCONTROLPRIMARY 0x00000080 +#define WINEDDCAPS2_CANDROPZ16BIT 0x00000100 +#define WINEDDCAPS2_NONLOCALVIDMEM 0x00000200 +#define WINEDDCAPS2_NONLOCALVIDMEMCAPS 0x00000400 +#define WINEDDCAPS2_NOPAGELOCKREQUIRED 0x00000800 +#define WINEDDCAPS2_WIDESURFACES 0x00001000 +#define WINEDDCAPS2_CANFLIPODDEVEN 0x00002000 +#define WINEDDCAPS2_CANBOBHARDWARE 0x00004000 +#define WINEDDCAPS2_COPYFOURCC 0x00008000 +#define WINEDDCAPS2_PRIMARYGAMMA 0x00020000 +#define WINEDDCAPS2_CANRENDERWINDOWED 0x00080000 +#define WINEDDCAPS2_CANCALIBRATEGAMMA 0x00100000 +#define WINEDDCAPS2_FLIPINTERVAL 0x00200000 +#define WINEDDCAPS2_FLIPNOVSYNC 0x00400000 +#define WINEDDCAPS2_CANMANAGETEXTURE 0x00800000 +#define WINEDDCAPS2_TEXMANINNONLOCALVIDMEM 0x01000000 +#define WINEDDCAPS2_STEREO 0x02000000 +#define WINEDDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL 0x04000000 + #endif /* __WINE_WINED3D_CAPS_H */ diff --git a/include/wine/wined3d_types.h b/include/wine/wined3d_types.h index c67c3116280..c4d10f5975c 100644 --- a/include/wine/wined3d_types.h +++ b/include/wine/wined3d_types.h @@ -1112,6 +1112,27 @@ typedef struct _WINED3DPSHADERCAPS2_0 { INT NumInstructionSlots; } WINED3DPSHADERCAPS2_0; +typedef struct _WINEDDCAPS { + DWORD Caps; + DWORD Caps2; + DWORD CKeyCaps; + DWORD FXCaps; + DWORD FXAlphaCaps; + DWORD PalCaps; + DWORD SVCaps; + DWORD SVBCaps; + DWORD SVBCKeyCaps; + DWORD SVBFXCaps; + DWORD VSBCaps; + DWORD VSBCKeyCaps; + DWORD VSBFXCaps; + DWORD SSBCaps; + DWORD SSBCKeyCaps; + DWORD SSBFXCaps; + DWORD ddsCaps; + DWORD StrideAlign; +} WINEDDCAPS; + typedef struct _WINED3DCAPS { WINED3DDEVTYPE DeviceType; UINT AdapterOrdinal; @@ -1204,6 +1225,7 @@ typedef struct _WINED3DCAPS { DWORD Reserved2;/* Not in the microsoft headers but documented */ DWORD Reserved3; + WINEDDCAPS DirectDrawCaps; } WINED3DCAPS; typedef enum _WINED3DSTATEBLOCKTYPE { -- 2.11.4.GIT