[PATCH] DDraw: Set ddraw caps in WineD3D=0A=

Stefan Doesinger stefan at codeweavers.com
Tue Jul 29 11:03:59 CDT 2008


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

------=_NextPart_000_001F_01C8F509.26DCBB50--




More information about the wine-patches mailing list