| /* 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 */ |