wine/include/ddrawi.h

378 lines
13 KiB
C

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