#include <d3dtypes.h>
#include <d3dcaps.h>
+/* Helper macro to enable gcc's extension. */
+#ifndef __GNU_EXTENSION
+#ifdef __GNUC__
+#define __GNU_EXTENSION __extension__
+#else
+#define __GNU_EXTENSION
+#endif
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
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
+typedef struct _D3DNTHAL_CONTEXTCREATEDATA
{
- union
+ __GNU_EXTENSION union
{
PDD_DIRECTDRAW_GLOBAL lpDDGbl;
PDD_DIRECTDRAW_LOCAL lpDDLcl;
};
- union
+ __GNU_EXTENSION union
{
PDD_SURFACE_LOCAL lpDDS;
PDD_SURFACE_LOCAL lpDDSLcl;
};
- union
+ __GNU_EXTENSION union
{
PDD_SURFACE_LOCAL lpDDSZ;
PDD_SURFACE_LOCAL lpDDSZLcl;
HRESULT ddrval;
} D3DNTHAL_CONTEXTCREATEDATA, *LPD3DNTHAL_CONTEXTCREATEDATA;
-typedef struct _D3DNTHAL_CONTEXTDESTROYDATA
+typedef struct _D3DNTHAL_CONTEXTDESTROYDATA
{
ULONG_PTR dwhContext;
HRESULT ddrval;
} D3DNTHAL_CONTEXTDESTROYDATA, *LPD3DNTHAL_CONTEXTDESTROYDATA;
-typedef struct _D3DNTHAL_CONTEXTDESTROYALLDATA
+typedef struct _D3DNTHAL_CONTEXTDESTROYALLDATA
{
DWORD dwPID;
HRESULT ddrval;
} D3DNTHAL_CONTEXTDESTROYALLDATA, *LPD3DNTHAL_CONTEXTDESTROYALLDATA;
-typedef struct _D3DNTHAL_SCENECAPTUREDATA
+typedef struct _D3DNTHAL_SCENECAPTUREDATA
{
ULONG_PTR dwhContext;
DWORD dwFlag;
HRESULT ddrval;
} D3DNTHAL_SCENECAPTUREDATA, *LPD3DNTHAL_SCENECAPTUREDATA;
-typedef struct _D3DNTHAL_TEXTURECREATEDATA
+typedef struct _D3DNTHAL_TEXTURECREATEDATA
{
ULONG_PTR dwhContext;
HANDLE hDDS;
HRESULT ddrval;
} D3DNTHAL_TEXTURECREATEDATA, *LPD3DNTHAL_TEXTURECREATEDATA;
-typedef struct _D3DNTHAL_TEXTUREDESTROYDATA
+typedef struct _D3DNTHAL_TEXTUREDESTROYDATA
{
ULONG_PTR dwhContext;
ULONG_PTR dwHandle;
HRESULT ddrval;
} D3DNTHAL_TEXTUREDESTROYDATA, *LPD3DNTHAL_TEXTUREDESTROYDATA;
-typedef struct _D3DNTHAL_TEXTURESWAPDATA
+typedef struct _D3DNTHAL_TEXTURESWAPDATA
{
ULONG_PTR dwhContext;
ULONG_PTR dwHandle1;
HRESULT ddrval;
} D3DNTHAL_TEXTURESWAPDATA, *LPD3DNTHAL_TEXTURESWAPDATA;
-typedef struct _D3DNTHAL_TEXTUREGETSURFDATA
+typedef struct _D3DNTHAL_TEXTUREGETSURFDATA
{
ULONG_PTR dwhContext;
- HANDLE hDDS;
+ HANDLE hDDS;
ULONG_PTR dwHandle;
HRESULT ddrval;
} D3DNTHAL_TEXTUREGETSURFDATA, *LPD3DNTHAL_TEXTUREGETSURFDATA;
typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURESWAPCB)(LPD3DNTHAL_TEXTURESWAPDATA);
typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREGETSURFCB)(LPD3DNTHAL_TEXTUREGETSURFDATA);
-typedef struct _D3DNTHALDeviceDesc_V1
+typedef struct _D3DNTHALDeviceDesc_V1
{
DWORD dwSize;
DWORD dwFlags;
DWORD dwMaxVertexCount;
} D3DNTHALDEVICEDESC_V1, *LPD3DNTHALDEVICEDESC_V1;
-typedef struct _D3DNTHAL_GLOBALDRIVERDATA
+typedef struct _D3DNTHAL_GLOBALDRIVERDATA
{
DWORD dwSize;
D3DNTHALDEVICEDESC_V1 hwCaps;
LPDDSURFACEDESC lpTextureFormats;
} D3DNTHAL_GLOBALDRIVERDATA, *LPD3DNTHAL_GLOBALDRIVERDATA;
-typedef struct _D3DNTHAL_CALLBACKS
+typedef struct _D3DNTHAL_CALLBACKS
{
DWORD dwSize;
LPD3DNTHAL_CONTEXTCREATECB ContextCreate;
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;
LPVOID dwReserved4;
} D3DNTHAL_CALLBACKS2, *LPD3DNTHAL_CALLBACKS2;
-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
+typedef struct _D3DNTHAL_CLEAR2DATA
{
- DWORD dwSize;
+ ULONG_PTR dwhContext;
DWORD dwFlags;
-
- LPD3DNTHAL_CLEAR2CB Clear2;
- LPVOID lpvReserved;
- LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState;
- LPD3DNTHAL_DRAWPRIMITIVES2CB DrawPrimitives2;
-} D3DNTHAL_CALLBACKS3, *LPD3DNTHAL_CALLBACKS3;
-
+ DWORD dwFillColor;
+ D3DVALUE dvFillDepth;
+ DWORD dwFillStencil;
+ LPD3DRECT lpRects;
+ DWORD dwNumRects;
+ HRESULT ddrval;
+} D3DNTHAL_CLEAR2DATA;
+typedef D3DNTHAL_CLEAR2DATA FAR *LPD3DNTHAL_CLEAR2DATA;
typedef struct _D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA
{
PDD_SURFACE_LOCAL lpDDCommands;
DWORD dwCommandOffset;
DWORD dwCommandLength;
- union
+ __GNU_EXTENSION union
{
PDD_SURFACE_LOCAL lpDDVertex;
LPVOID lpVertices;
DWORD dwReqVertexBufSize;
DWORD dwReqCommandBufSize;
LPDWORD lpdwRStates;
- union
+ __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