diff --git a/include/dciddi.h b/include/dciddi.h new file mode 100644 index 00000000000..8c430f59c42 --- /dev/null +++ b/include/dciddi.h @@ -0,0 +1,41 @@ +/* DCI driver interface */ + +#ifndef __WINE_DCIDDI_H +#define __WINE_DCIDDI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* DCI Command Escape */ +#define DCICOMMAND 3075 +#define DCI_VERSION 0x0100 + +#define DCICREATEPRIMARYSURFACE 1 +#define DCICREATEOFFSCREENSURFACE 2 +#define DCICREATEOVERLAYSURFACE 3 +#define DCIENUMSURFACE 4 +#define DCIESCAPE 5 + +/* DCI Errors */ +#define DCI_OK 0 + + +typedef int DCIRVAL; /* DCI callback return type */ + +/***************************************************************************** + * Escape command structures + */ +typedef struct _DCICMD { + DWORD dwCommand; + DWORD dwParam1; + DWORD dwParam2; + DWORD dwVersion; + DWORD dwReserved; +} DCICMD,*LPDCICMD; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* __WINE_DCIDDI_H */ diff --git a/include/ddrawi.h b/include/ddrawi.h new file mode 100644 index 00000000000..870aa133f1c --- /dev/null +++ b/include/ddrawi.h @@ -0,0 +1,378 @@ +/* DirectDraw driver interface */ +/* (DirectX 7 version) */ + +#ifndef __WINE_DDRAWI_H +#define __WINE_DDRAWI_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ddraw.h" +#include "dciddi.h" /* the DD HAL is layered onto DCI escapes */ + +#define DDAPI WINAPI + +/* the DirectDraw versions */ +#define DD_VERSION 0x0200 /* compatibility version */ +#define DD_RUNTIME_VERSION 0x0700 /* actual version */ + +/* the HAL version returned from QUERYESCSUPPORT - DCICOMMAND */ +#define DD_HAL_VERSION 0x0100 + +/* more DCICOMMAND escapes */ +#define DDCREATEDRIVEROBJECT 10 +#define DDGET32BITDRIVERNAME 11 +#define DDNEWCALLBACKFNS 12 +#define DDVERSIONINFO 13 + +/***************************************************************************** + * Initialization stuff + */ +typedef struct { + char szName[260]; + char szEntryPoint[64]; + DWORD dwContext; +} DD32BITDRIVERDATA,*LPDD32BITDRIVERDATA; + +typedef struct { + DWORD dwHALVersion; + ULONG_PTR dwReserved1; + ULONG_PTR dwReserved2; +} DDVERSIONDATA,*LPDDVERSIONDATA; + +typedef DWORD PASCAL (*LPDD32BITDRIVERINIT)(DWORD dwContext); + +/* pointer to video memory */ +typedef ULONG_PTR FLATPTR; + +/* predeclare some structures */ +typedef struct _DDHALINFO *LPDDHALINFO; +typedef struct _DDRAWI_DIRECTDRAW_INT *LPDDRAWI_DIRECTDRAW_INT; +typedef struct _DDRAWI_DIRECTDRAW_LCL *LPDDRAWI_DIRECTDRAW_LCL; +typedef struct _DDRAWI_DIRECTDRAW_GBL *LPDDRAWI_DIRECTDRAW_GBL; + +/***************************************************************************** + * driver->ddraw callbacks + */ +typedef BOOL DDAPI (*LPDDHAL_SETINFO)(LPDDHALINFO lpDDHalInfo, BOOL reset); +typedef FLATPTR DDAPI (*LPDDHAL_VIDMEMALLOC)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, DWORD dwWidth, DWORD dwHeight); +typedef void DDAPI (*LPDDHAL_VIDMEMFREE)(LPDDRAWI_DIRECTDRAW_GBL lpDD, int heap, FLATPTR fpMem); + +typedef struct { + DWORD dwSize; + LPDDHAL_SETINFO lpSetInfo; + LPDDHAL_VIDMEMALLOC lpVidMemAlloc; + LPDDHAL_VIDMEMFREE lpVidMemFree; +} DDHALDDRAWFNS,*LPDDHALDDRAWFNS; + +/***************************************************************************** + * mode info structure + */ +typedef struct _DDHALMODEINFO { + DWORD dwWidth; + DWORD dwHeight; + LONG lPitch; + DWORD dwBPP; + WORD wFlags; + WORD wRefreshRate; + DWORD dwRBitMask; + DWORD dwGBitMask; + DWORD dwBBitMask; + DWORD dwAlphaBitMask; +} DDHALMODEINFO,*LPDDHALMODEINFO; + +#define DDMODEINFO_PALETTIZED 0x0001 +#define DDMODEINFO_MODEX 0x0002 +#define DDMODEINFO_UNSUPPORTED 0x0004 +#define DDMODEINFO_STANDARDVGA 0x0008 +#define DDMODEINFO_MAXREFRESH 0x0010 +#define DDMODEINFO_STEREO 0x0020 + +/***************************************************************************** + * video memory info structure + */ +typedef struct _VIDMEM { + DWORD dwFlags; + FLATPTR fpStart; + union { + FLATPTR fpEnd; + DWORD dwWidth; + } DUMMYUNIONNAME1; + DDSCAPS ddsCaps; + DDSCAPS ddsCapsAlt; + union { + FLATPTR lpHeap; + DWORD dwHeight; + } DUMMYUNIONNAME2; +} VIDMEM,*LPVIDMEM; + +#define VIDMEM_ISLINEAR 0x00000001 +#define VIDMEM_ISRECTANGULAR 0x00000002 +#define VIDMEM_ISHEAP 0x00000004 +#define VIDMEM_ISNONLOCAL 0x00000008 +#define VIDMEM_ISWC 0x00000010 +#define VIDMEM_ISDISABLED 0x00000020 + +typedef struct _VIDMEMINFO { + FLATPTR fpPrimary; + DWORD dwFlags; + DWORD dwDisplayWidth; + DWORD dwDisplayHeight; + LONG lDisplayPitch; + DDPIXELFORMAT ddpfDisplay; + DWORD dwOffscreenAlign; + DWORD dwOverlayAlign; + DWORD dwTextureAlign; + DWORD dwZBufferAlign; + DWORD dwAlphaAlign; + DWORD dwNumHeaps; + LPVIDMEM pvmList; +} VIDMEMINFO,*LPVIDMEMINFO; + +/***************************************************************************** + * core capabilities structure + */ +typedef struct _DDCORECAPS { + DWORD dwSize; + DWORD dwCaps; + DWORD dwCaps2; + DWORD dwCKeyCaps; + DWORD dwFXCaps; + DWORD dwFXAlphaCaps; + DWORD dwPalCaps; + DWORD dwSVCaps; + DWORD dwAlphaBltConstBitDepths; + DWORD dwAlphaBltPixelBitDepths; + DWORD dwAlphaBltSurfaceBitDepths; + DWORD dwAlphaOverlayConstBitDepths; + DWORD dwAlphaOverlayPixelBitDepths; + DWORD dwAlphaOverlaySurfaceBitDepths; + DWORD dwZBufferBitDepths; + DWORD dwVidMemTotal; + DWORD dwVidMemFree; + DWORD dwMaxVisibleOverlays; + DWORD dwCurrVisibleOverlays; + DWORD dwNumFourCCCodes; + DWORD dwAlignBoundarySrc; + DWORD dwAlignSizeSrc; + DWORD dwAlignBoundaryDest; + DWORD dwAlignSizeDest; + DWORD dwAlignStrideAlign; + DWORD dwRops[DD_ROP_SPACE]; + DDSCAPS ddsCaps; + DWORD dwMinOverlayStretch; + DWORD dwMaxOverlayStretch; + DWORD dwMinLiveVideoStretch; + DWORD dwMaxLiveVideoStretch; + DWORD dwMinHwCodecStretch; + DWORD dwMaxHwCodecStretch; + DWORD dwReserved1; + DWORD dwReserved2; + DWORD dwReserved3; + DWORD dwSVBCaps; + DWORD dwSVBCKeyCaps; + DWORD dwSVBFXCaps; + DWORD dwSVBRops[DD_ROP_SPACE]; + DWORD dwVSBCaps; + DWORD dwVSBCKeyCaps; + DWORD dwVSBFXCaps; + DWORD dwVSBRops[DD_ROP_SPACE]; + DWORD dwSSBCaps; + DWORD dwSSBCKeyCaps; + DWORD dwSSBFXCaps; + DWORD dwSSBRops[DD_ROP_SPACE]; + DWORD dwMaxVideoPorts; + DWORD dwCurrVideoPorts; + DWORD dwSVBCaps2; +} DDCORECAPS,*LPDDCORECAPS; + +/***************************************************************************** + * ddraw->driver callbacks + */ +#define DDHAL_DRIVER_NOTHANDLED 0 +#define DDHAL_DRIVER_HANDLED 1 +#define DDHAL_DRIVER_NOCKEYHW 2 + +typedef struct _DDHAL_DESTROYDRIVERDATA *LPDDHAL_DESTROYDRIVERDATA; +typedef struct _DDHAL_CREATESURFACEDATA *LPDDHAL_CREATESURFACEDATA; +typedef struct _DDHAL_DRVSETCOLORKEYDATA *LPDDHAL_DRVSETCOLORKEYDATA; +typedef struct _DDHAL_SETMODEDATA *LPDDHAL_SETMODEDATA; +typedef struct _DDHAL_WAITFORVERTICALBLANKDATA *LPDDHAL_WAITFORVERTICALBLANKDATA; +typedef struct _DDHAL_CANCREATESURFACEDATA *LPDDHAL_CANCREATESURFACEDATA; +typedef struct _DDHAL_CREATEPALETTEDATA *LPDDHAL_CREATEPALETTEDATA; +typedef struct _DDHAL_GETSCANLINEDATA *LPDDHAL_GETSCANLINEDATA; +typedef struct _DDHAL_SETEXCLUSIVEMODEDATA *LPDDHAL_SETEXCLUSIVEMODEDATA; +typedef struct _DDHAL_FLIPTOGDISURFACEDATA *LPDDHAL_FLIPTOGDISURFACEDATA; + +typedef DWORD PASCAL (*LPDDHAL_DESTROYDRIVER) (LPDDHAL_DESTROYDRIVERDATA); +typedef DWORD PASCAL (*LPDDHAL_CREATESURFACE) (LPDDHAL_CREATESURFACEDATA); +typedef DWORD PASCAL (*LPDDHAL_SETCOLORKEY) (LPDDHAL_DRVSETCOLORKEYDATA); +typedef DWORD PASCAL (*LPDDHAL_SETMODE) (LPDDHAL_SETMODEDATA); +typedef DWORD PASCAL (*LPDDHAL_WAITFORVERTICALBLANK)(LPDDHAL_WAITFORVERTICALBLANKDATA); +typedef DWORD PASCAL (*LPDDHAL_CANCREATESURFACE) (LPDDHAL_CANCREATESURFACEDATA ); +typedef DWORD PASCAL (*LPDDHAL_CREATEPALETTE) (LPDDHAL_CREATEPALETTEDATA); +typedef DWORD PASCAL (*LPDDHAL_GETSCANLINE) (LPDDHAL_GETSCANLINEDATA); +typedef DWORD PASCAL (*LPDDHAL_SETEXCLUSIVEMODE) (LPDDHAL_SETEXCLUSIVEMODEDATA); +typedef DWORD PASCAL (*LPDDHAL_FLIPTOGDISURFACE) (LPDDHAL_FLIPTOGDISURFACEDATA); + +typedef struct _DDHAL_DDCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHAL_DESTROYDRIVER DestroyDriver; + LPDDHAL_CREATESURFACE CreateSurface; + LPDDHAL_SETCOLORKEY SetColorKey; + LPDDHAL_SETMODE SetMode; + LPDDHAL_WAITFORVERTICALBLANK WaitForVerticalBlank; + LPDDHAL_CANCREATESURFACE CanCreateSurface; + LPDDHAL_CREATEPALETTE CreatePalette; + LPDDHAL_GETSCANLINE GetScanLine; + /* DirectX 2 */ + LPDDHAL_SETEXCLUSIVEMODE SetExclusiveMode; + LPDDHAL_FLIPTOGDISURFACE FlipToGDISurface; +} DDHAL_DDCALLBACKS,*LPDDHAL_DDCALLBACKS; + +typedef struct _DDHAL_DESTROYSURFACEDATA *LPDDHAL_DESTROYSURFACEDATA; +typedef struct _DDHAL_FLIPDATA *LPDDHAL_FLIPDATA; +typedef struct _DDHAL_SETCLIPLISTDATA *LPDDHAL_SETCLIPLISTDATA; +typedef struct _DDHAL_LOCKDATA *LPDDHAL_LOCKDATA; +typedef struct _DDHAL_UNLOCKDATA *LPDDHAL_UNLOCKDATA; +typedef struct _DDHAL_BLTDATA *LPDDHAL_BLTDATA; +typedef struct _DDHAL_SETCOLORKEYDATA *LPDDHAL_SETCOLORKEYDATA; +typedef struct _DDHAL_ADDATTACHEDSURFACEDATA *LPDDHAL_ADDATTACHEDSURFACEDATA; +typedef struct _DDHAL_GETBLTSTATUSDATA *LPDDHAL_GETBLTSTATUSDATA; +typedef struct _DDHAL_GETFLIPSTATUSDATA *LPDDHAL_GETFLIPSTATUSDATA; +typedef struct _DDHAL_UPDATEOVERLAYDATA *LPDDHAL_UPDATEOVERLAYDATA; +typedef struct _DDHAL_SETOVERLAYPOSITIONDATA *LPDDHAL_SETOVERLAYPOSITIONDATA; +typedef struct _DDHAL_SETPALETTEDATA *LPDDHAL_SETPALETTEDATA; + +typedef DWORD PASCAL (*LPDDHALSURFCB_DESTROYSURFACE) (LPDDHAL_DESTROYSURFACEDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_FLIP) (LPDDHAL_FLIPDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_SETCLIPLIST) (LPDDHAL_SETCLIPLISTDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_LOCK) (LPDDHAL_LOCKDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_UNLOCK) (LPDDHAL_UNLOCKDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_BLT) (LPDDHAL_BLTDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_SETCOLORKEY) (LPDDHAL_SETCOLORKEYDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_ADDATTACHEDSURFACE)(LPDDHAL_ADDATTACHEDSURFACEDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_GETBLTSTATUS) (LPDDHAL_GETBLTSTATUSDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_GETFLIPSTATUS) (LPDDHAL_GETFLIPSTATUSDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_UPDATEOVERLAY) (LPDDHAL_UPDATEOVERLAYDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_SETOVERLAYPOSITION)(LPDDHAL_SETOVERLAYPOSITIONDATA); +typedef DWORD PASCAL (*LPDDHALSURFCB_SETPALETTE) (LPDDHAL_SETPALETTEDATA); + +typedef struct _DDHAL_DDSURFACECALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALSURFCB_DESTROYSURFACE DestroySurface; + LPDDHALSURFCB_FLIP Flip; + LPDDHALSURFCB_SETCLIPLIST SetClipList; + LPDDHALSURFCB_LOCK Lock; + LPDDHALSURFCB_UNLOCK Unlock; + LPDDHALSURFCB_BLT Blt; + LPDDHALSURFCB_SETCOLORKEY SetColorKey; + LPDDHALSURFCB_ADDATTACHEDSURFACE AddAttachedSurface; + LPDDHALSURFCB_GETBLTSTATUS GetBltStatus; + LPDDHALSURFCB_GETFLIPSTATUS GetFlipStatus; + LPDDHALSURFCB_UPDATEOVERLAY UpdateOverlay; + LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition; + LPVOID reserved4; + LPDDHALSURFCB_SETPALETTE SetPalette; +} DDHAL_DDSURFACECALLBACKS,*LPDDHAL_DDSURFACECALLBACKS; + +typedef struct _DDHAL_DESTROYPALETTEDATA *LPDDHAL_DESTROYPALETTEDATA; +typedef struct _DDHAL_SETENTRIESDATA *LPDDHAL_SETENTRIESDATA; + +typedef DWORD PASCAL (*LPDDHALPALCB_DESTROYPALETTE)(LPDDHAL_DESTROYPALETTEDATA); +typedef DWORD PASCAL (*LPDDHALPALCB_SETENTRIES) (LPDDHAL_SETENTRIESDATA); + +typedef struct _DDHAL_DDPALETTECALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALPALCB_DESTROYPALETTE DestroyPalette; + LPDDHALPALCB_SETENTRIES SetEntries; +} DDHAL_DDPALETTECALLBACKS,*LPDDHAL_DDPALETTECALLBACKS; + +typedef DWORD PASCAL (*LPDDHALEXEBUFCB_CANCREATEEXEBUF)(LPDDHAL_CANCREATESURFACEDATA ); +typedef DWORD PASCAL (*LPDDHALEXEBUFCB_CREATEEXEBUF) (LPDDHAL_CREATESURFACEDATA); +typedef DWORD PASCAL (*LPDDHALEXEBUFCB_DESTROYEXEBUF) (LPDDHAL_DESTROYSURFACEDATA); +typedef DWORD PASCAL (*LPDDHALEXEBUFCB_LOCKEXEBUF) (LPDDHAL_LOCKDATA); +typedef DWORD PASCAL (*LPDDHALEXEBUFCB_UNLOCKEXEBUF) (LPDDHAL_UNLOCKDATA); + +typedef struct _DDHAL_DDEXEBUFCALLBACKS { + DWORD dwSize; + DWORD dwFlags; + LPDDHALEXEBUFCB_CANCREATEEXEBUF CanCreateExecuteBuffer; + LPDDHALEXEBUFCB_CREATEEXEBUF CreateExecuteBuffer; + LPDDHALEXEBUFCB_DESTROYEXEBUF DestroyExecuteBuffer; + LPDDHALEXEBUFCB_LOCKEXEBUF LockExecuteBuffer; + LPDDHALEXEBUFCB_UNLOCKEXEBUF UnlockExecuteBuffer; +} DDHAL_DDEXEBUFCALLBACKS,*LPDDHAL_DDEXEBUFCALLBACKS; + +/***************************************************************************** + * driver info structure + * + * The HAL is queried for additional callbacks via the GetDriverInfo callback. + */ +typedef struct _DDHAL_GETDRIVERINFODATA *LPDDHAL_GETDRIVERINFODATA; +typedef DWORD PASCAL (*LPDDHAL_GETDRIVERINFO)(LPDDHAL_GETDRIVERINFODATA); + +typedef struct _DDHALINFO { + DWORD dwSize; + LPDDHAL_DDCALLBACKS lpDDCallbacks; + LPDDHAL_DDSURFACECALLBACKS lpDDSurfaceCallbacks; + LPDDHAL_DDPALETTECALLBACKS lpDDPaletteCallbacks; + VIDMEMINFO vmiData; + DDCORECAPS ddCaps; + DWORD dwMonitorFrequency; + LPDDHAL_GETDRIVERINFO GetDriverInfo; + DWORD dwModeIndex; + LPDWORD lpdwFourCC; + DWORD dwNumModes; + LPDDHALMODEINFO lpModeInfo; + DWORD dwFlags; + LPVOID lpPDevice; + DWORD hInstance; + /* DirectX 2 */ + ULONG_PTR lpD3DGlobalDriverData; + ULONG_PTR lpD3DHALCallbacks; + LPDDHAL_DDEXEBUFCALLBACKS lpDDExeBufCallbacks; +} DDHALINFO; + +#define DDHALINFO_ISPRIMARYDISPLAY 0x00000001 +#define DDHALINFO_MODEXILLEGAL 0x00000002 +#define DDHALINFO_GETDRIVERINFOSET 0x00000004 + +/***************************************************************************** + * parameter structures + */ +typedef struct _DDHAL_DESTROYDRIVERDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + HRESULT ddRVal; + LPDDHAL_DESTROYDRIVER DestroyDriver; +} DDHAL_DESTROYDRIVERDATA; + +typedef struct _DDHAL_SETMODEDATA { + LPDDRAWI_DIRECTDRAW_GBL lpDD; + DWORD dwModeIndex; + HRESULT ddRVal; + LPDDHAL_SETMODE SetMode; + BOOL inexcl; + BOOL useRefreshRate; +} DDHAL_SETMODEDATA; + +typedef struct _DDHAL_GETDRIVERINFODATA { + DWORD dwSize; + DWORD dwFlags; + GUID guidInfo; + DWORD dwExpectedSize; + LPVOID lpvData; + DWORD dwActualSize; + HRESULT ddRVal; + ULONG_PTR dwContext; +} DDHAL_GETDRIVERINFODATA; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* __WINE_DDRAWI_H */