blob: 3588b8cf7ecd35c94c6235d25e14bdcc6021188d [file] [log] [blame]
/*
* d3dnthal.h
*
* Direct3D NT driver interface
*
* Contributors:
* Created by Ge van Geldorp
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __DDK_D3DNTHAL_H
#define __DDK_D3DNTHAL_H
#include <ddrawint.h>
#include <d3dtypes.h>
#include <d3dcaps.h>
#ifdef __cplusplus
extern "C" {
#endif
DEFINE_GUID(GUID_D3DCallbacks, 0x7BF06990, 0x8794, 0x11D0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xD2, 0xEF, 0x02);
DEFINE_GUID(GUID_D3DCallbacks3, 0xDDF41230, 0xEC0A, 0x11D0, 0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E);
DEFINE_GUID(GUID_D3DExtendedCaps, 0x7DE41F80, 0x9D93, 0x11D0, 0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29);
DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2E04FFA0, 0x98E4, 0x11D1, 0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8);
DEFINE_GUID(GUID_ZPixelFormats, 0x93869880, 0x36CF, 0x11D1, 0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE);
DEFINE_GUID(GUID_DDStereoMode, 0xF828169C, 0xA8E8, 0x11D2, 0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6);
typedef struct _D3DNTHAL_CONTEXTCREATEDATA {
__GNU_EXTENSION union {
PDD_DIRECTDRAW_GLOBAL lpDDGbl;
PDD_DIRECTDRAW_LOCAL lpDDLcl;
};
__GNU_EXTENSION union {
PDD_SURFACE_LOCAL lpDDS;
PDD_SURFACE_LOCAL lpDDSLcl;
};
__GNU_EXTENSION union {
PDD_SURFACE_LOCAL lpDDSZ;
PDD_SURFACE_LOCAL lpDDSZLcl;
};
DWORD dwPID;
ULONG_PTR dwhContext;
HRESULT ddrval;
} D3DNTHAL_CONTEXTCREATEDATA, *LPD3DNTHAL_CONTEXTCREATEDATA;
typedef struct _D3DNTHAL_CONTEXTDESTROYDATA {
ULONG_PTR dwhContext;
HRESULT ddrval;
} D3DNTHAL_CONTEXTDESTROYDATA, *LPD3DNTHAL_CONTEXTDESTROYDATA;
typedef struct _D3DNTHAL_CONTEXTDESTROYALLDATA {
DWORD dwPID;
HRESULT ddrval;
} D3DNTHAL_CONTEXTDESTROYALLDATA, *LPD3DNTHAL_CONTEXTDESTROYALLDATA;
typedef struct _D3DNTHAL_SCENECAPTUREDATA {
ULONG_PTR dwhContext;
DWORD dwFlag;
HRESULT ddrval;
} D3DNTHAL_SCENECAPTUREDATA, *LPD3DNTHAL_SCENECAPTUREDATA;
typedef struct _D3DNTHAL_TEXTURECREATEDATA {
ULONG_PTR dwhContext;
HANDLE hDDS;
ULONG_PTR dwHandle;
HRESULT ddrval;
} D3DNTHAL_TEXTURECREATEDATA, *LPD3DNTHAL_TEXTURECREATEDATA;
typedef struct _D3DNTHAL_TEXTUREDESTROYDATA {
ULONG_PTR dwhContext;
ULONG_PTR dwHandle;
HRESULT ddrval;
} D3DNTHAL_TEXTUREDESTROYDATA, *LPD3DNTHAL_TEXTUREDESTROYDATA;
typedef struct _D3DNTHAL_TEXTURESWAPDATA {
ULONG_PTR dwhContext;
ULONG_PTR dwHandle1;
ULONG_PTR dwHandle2;
HRESULT ddrval;
} D3DNTHAL_TEXTURESWAPDATA, *LPD3DNTHAL_TEXTURESWAPDATA;
typedef struct _D3DNTHAL_TEXTUREGETSURFDATA {
ULONG_PTR dwhContext;
HANDLE hDDS;
ULONG_PTR dwHandle;
HRESULT ddrval;
} D3DNTHAL_TEXTUREGETSURFDATA, *LPD3DNTHAL_TEXTUREGETSURFDATA;
typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTCREATECB)(LPD3DNTHAL_CONTEXTCREATEDATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTDESTROYCB)(LPD3DNTHAL_CONTEXTDESTROYDATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTDESTROYALLCB)(LPD3DNTHAL_CONTEXTDESTROYALLDATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_SCENECAPTURECB)(LPD3DNTHAL_SCENECAPTUREDATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURECREATECB)(LPD3DNTHAL_TEXTURECREATEDATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREDESTROYCB)(LPD3DNTHAL_TEXTUREDESTROYDATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURESWAPCB)(LPD3DNTHAL_TEXTURESWAPDATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREGETSURFCB)(LPD3DNTHAL_TEXTUREGETSURFDATA);
typedef struct _D3DNTHALDeviceDesc_V1 {
DWORD dwSize;
DWORD dwFlags;
D3DCOLORMODEL dcmColorModel;
DWORD dwDevCaps;
D3DTRANSFORMCAPS dtcTransformCaps;
WINBOOL bClipping;
D3DLIGHTINGCAPS dlcLightingCaps;
D3DPRIMCAPS dpcLineCaps;
D3DPRIMCAPS dpcTriCaps;
DWORD dwDeviceRenderBitDepth;
DWORD dwDeviceZBufferBitDepth;
DWORD dwMaxBufferSize;
DWORD dwMaxVertexCount;
} D3DNTHALDEVICEDESC_V1, *LPD3DNTHALDEVICEDESC_V1;
typedef struct _D3DNTHAL_GLOBALDRIVERDATA {
DWORD dwSize;
D3DNTHALDEVICEDESC_V1 hwCaps;
DWORD dwNumVertices;
DWORD dwNumClipVertices;
DWORD dwNumTextureFormats;
LPDDSURFACEDESC lpTextureFormats;
} D3DNTHAL_GLOBALDRIVERDATA, *LPD3DNTHAL_GLOBALDRIVERDATA;
typedef struct _D3DNTHAL_CALLBACKS {
DWORD dwSize;
LPD3DNTHAL_CONTEXTCREATECB ContextCreate;
LPD3DNTHAL_CONTEXTDESTROYCB ContextDestroy;
LPD3DNTHAL_CONTEXTDESTROYALLCB ContextDestroyAll;
LPD3DNTHAL_SCENECAPTURECB SceneCapture;
LPVOID dwReserved10;
LPVOID dwReserved11;
LPVOID dwReserved22;
LPVOID dwReserved23;
ULONG_PTR dwReserved;
LPD3DNTHAL_TEXTURECREATECB TextureCreate;
LPD3DNTHAL_TEXTUREDESTROYCB TextureDestroy;
LPD3DNTHAL_TEXTURESWAPCB TextureSwap;
LPD3DNTHAL_TEXTUREGETSURFCB TextureGetSurf;
LPVOID dwReserved12;
LPVOID dwReserved13;
LPVOID dwReserved14;
LPVOID dwReserved15;
LPVOID dwReserved16;
LPVOID dwReserved17;
LPVOID dwReserved18;
LPVOID dwReserved19;
LPVOID dwReserved20;
LPVOID dwReserved21;
LPVOID dwReserved24;
ULONG_PTR dwReserved0;
ULONG_PTR dwReserved1;
ULONG_PTR dwReserved2;
ULONG_PTR dwReserved3;
ULONG_PTR dwReserved4;
ULONG_PTR dwReserved5;
ULONG_PTR dwReserved6;
ULONG_PTR dwReserved7;
ULONG_PTR dwReserved8;
ULONG_PTR dwReserved9;
} D3DNTHAL_CALLBACKS, *LPD3DNTHAL_CALLBACKS;
typedef struct _D3DNTHAL_SETRENDERTARGETDATA {
ULONG_PTR dwhContext;
PDD_SURFACE_LOCAL lpDDS;
PDD_SURFACE_LOCAL lpDDSZ;
HRESULT ddrval;
} D3DNTHAL_SETRENDERTARGETDATA;
typedef D3DNTHAL_SETRENDERTARGETDATA *LPD3DNTHAL_SETRENDERTARGETDATA;
typedef DWORD (APIENTRY *LPD3DNTHAL_SETRENDERTARGETCB)(LPD3DNTHAL_SETRENDERTARGETDATA);
typedef struct _D3DNTHAL_CALLBACKS2 {
DWORD dwSize;
DWORD dwFlags;
LPD3DNTHAL_SETRENDERTARGETCB SetRenderTarget;
LPVOID dwReserved1;
LPVOID dwReserved2;
LPVOID dwReserved3;
LPVOID dwReserved4;
} D3DNTHAL_CALLBACKS2, *LPD3DNTHAL_CALLBACKS2;
typedef struct _D3DNTHAL_CLEAR2DATA {
ULONG_PTR dwhContext;
DWORD dwFlags;
DWORD dwFillColor;
D3DVALUE dvFillDepth;
DWORD dwFillStencil;
LPD3DRECT lpRects;
DWORD dwNumRects;
HRESULT ddrval;
} D3DNTHAL_CLEAR2DATA;
typedef D3DNTHAL_CLEAR2DATA FAR *LPD3DNTHAL_CLEAR2DATA;
typedef struct _D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA {
ULONG_PTR dwhContext;
DWORD dwFlags;
ULONG_PTR dwReserved;
DWORD dwNumPasses;
HRESULT ddrval;
} D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA, FAR *LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA;
typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA {
ULONG_PTR dwhContext;
DWORD dwFlags;
DWORD dwVertexType;
PDD_SURFACE_LOCAL lpDDCommands;
DWORD dwCommandOffset;
DWORD dwCommandLength;
__GNU_EXTENSION union {
PDD_SURFACE_LOCAL lpDDVertex;
LPVOID lpVertices;
};
DWORD dwVertexOffset;
DWORD dwVertexLength;
DWORD dwReqVertexBufSize;
DWORD dwReqCommandBufSize;
LPDWORD lpdwRStates;
__GNU_EXTENSION union {
DWORD dwVertexSize;
HRESULT ddrval;
};
DWORD dwErrorOffset;
} D3DNTHAL_DRAWPRIMITIVES2DATA, FAR *LPD3DNTHAL_DRAWPRIMITIVES2DATA;
typedef DWORD (APIENTRY *LPD3DNTHAL_CLEAR2CB)(LPD3DNTHAL_CLEAR2DATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_DRAWPRIMITIVES2CB)(LPD3DNTHAL_DRAWPRIMITIVES2DATA);
typedef struct _D3DNTHAL_CALLBACKS3 {
DWORD dwSize;
DWORD dwFlags;
LPD3DNTHAL_CLEAR2CB Clear2;
LPVOID lpvReserved;
LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState;
LPD3DNTHAL_DRAWPRIMITIVES2CB DrawPrimitives2;
} D3DNTHAL_CALLBACKS3, *LPD3DNTHAL_CALLBACKS3;
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* __DDK_D3DNTHAL_H */