2 * Direct3D NT driver interface
5 #ifndef __DDK_D3DNTHAL_H
6 #define __DDK_D3DNTHAL_H
12 /* Helper macro to enable gcc's extension. */
13 #ifndef __GNU_EXTENSION
15 #define __GNU_EXTENSION __extension__
17 #define __GNU_EXTENSION
25 DEFINE_GUID(GUID_D3DCallbacks
, 0x7BF06990, 0x8794, 0x11D0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xD2, 0xEF, 0x02);
26 DEFINE_GUID(GUID_D3DCallbacks3
, 0xDDF41230, 0xEC0A, 0x11D0, 0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E);
27 DEFINE_GUID(GUID_D3DExtendedCaps
, 0x7DE41F80, 0x9D93, 0x11D0, 0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29);
28 DEFINE_GUID(GUID_D3DParseUnknownCommandCallback
, 0x2E04FFA0, 0x98E4, 0x11D1, 0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8);
29 DEFINE_GUID(GUID_ZPixelFormats
, 0x93869880, 0x36CF, 0x11D1, 0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE);
30 DEFINE_GUID(GUID_DDStereoMode
, 0xF828169C, 0xA8E8, 0x11D2, 0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6);
32 typedef struct _D3DNTHAL_CONTEXTCREATEDATA
36 PDD_DIRECTDRAW_GLOBAL lpDDGbl
;
37 PDD_DIRECTDRAW_LOCAL lpDDLcl
;
41 PDD_SURFACE_LOCAL lpDDS
;
42 PDD_SURFACE_LOCAL lpDDSLcl
;
46 PDD_SURFACE_LOCAL lpDDSZ
;
47 PDD_SURFACE_LOCAL lpDDSZLcl
;
52 } D3DNTHAL_CONTEXTCREATEDATA
, *LPD3DNTHAL_CONTEXTCREATEDATA
;
54 typedef struct _D3DNTHAL_CONTEXTDESTROYDATA
58 } D3DNTHAL_CONTEXTDESTROYDATA
, *LPD3DNTHAL_CONTEXTDESTROYDATA
;
60 typedef struct _D3DNTHAL_CONTEXTDESTROYALLDATA
64 } D3DNTHAL_CONTEXTDESTROYALLDATA
, *LPD3DNTHAL_CONTEXTDESTROYALLDATA
;
66 typedef struct _D3DNTHAL_SCENECAPTUREDATA
71 } D3DNTHAL_SCENECAPTUREDATA
, *LPD3DNTHAL_SCENECAPTUREDATA
;
73 typedef struct _D3DNTHAL_TEXTURECREATEDATA
79 } D3DNTHAL_TEXTURECREATEDATA
, *LPD3DNTHAL_TEXTURECREATEDATA
;
81 typedef struct _D3DNTHAL_TEXTUREDESTROYDATA
86 } D3DNTHAL_TEXTUREDESTROYDATA
, *LPD3DNTHAL_TEXTUREDESTROYDATA
;
88 typedef struct _D3DNTHAL_TEXTURESWAPDATA
94 } D3DNTHAL_TEXTURESWAPDATA
, *LPD3DNTHAL_TEXTURESWAPDATA
;
96 typedef struct _D3DNTHAL_TEXTUREGETSURFDATA
102 } D3DNTHAL_TEXTUREGETSURFDATA
, *LPD3DNTHAL_TEXTUREGETSURFDATA
;
104 typedef DWORD (APIENTRY
*LPD3DNTHAL_CONTEXTCREATECB
)(LPD3DNTHAL_CONTEXTCREATEDATA
);
105 typedef DWORD (APIENTRY
*LPD3DNTHAL_CONTEXTDESTROYCB
)(LPD3DNTHAL_CONTEXTDESTROYDATA
);
106 typedef DWORD (APIENTRY
*LPD3DNTHAL_CONTEXTDESTROYALLCB
)(LPD3DNTHAL_CONTEXTDESTROYALLDATA
);
107 typedef DWORD (APIENTRY
*LPD3DNTHAL_SCENECAPTURECB
)(LPD3DNTHAL_SCENECAPTUREDATA
);
108 typedef DWORD (APIENTRY
*LPD3DNTHAL_TEXTURECREATECB
)(LPD3DNTHAL_TEXTURECREATEDATA
);
109 typedef DWORD (APIENTRY
*LPD3DNTHAL_TEXTUREDESTROYCB
)(LPD3DNTHAL_TEXTUREDESTROYDATA
);
110 typedef DWORD (APIENTRY
*LPD3DNTHAL_TEXTURESWAPCB
)(LPD3DNTHAL_TEXTURESWAPDATA
);
111 typedef DWORD (APIENTRY
*LPD3DNTHAL_TEXTUREGETSURFCB
)(LPD3DNTHAL_TEXTUREGETSURFDATA
);
113 typedef struct _D3DNTHALDeviceDesc_V1
117 D3DCOLORMODEL dcmColorModel
;
119 D3DTRANSFORMCAPS dtcTransformCaps
;
121 D3DLIGHTINGCAPS dlcLightingCaps
;
122 D3DPRIMCAPS dpcLineCaps
;
123 D3DPRIMCAPS dpcTriCaps
;
124 DWORD dwDeviceRenderBitDepth
;
125 DWORD dwDeviceZBufferBitDepth
;
126 DWORD dwMaxBufferSize
;
127 DWORD dwMaxVertexCount
;
128 } D3DNTHALDEVICEDESC_V1
, *LPD3DNTHALDEVICEDESC_V1
;
130 typedef struct _D3DNTHAL_GLOBALDRIVERDATA
133 D3DNTHALDEVICEDESC_V1 hwCaps
;
135 DWORD dwNumClipVertices
;
136 DWORD dwNumTextureFormats
;
137 LPDDSURFACEDESC lpTextureFormats
;
138 } D3DNTHAL_GLOBALDRIVERDATA
, *LPD3DNTHAL_GLOBALDRIVERDATA
;
140 typedef struct _D3DNTHAL_CALLBACKS
143 LPD3DNTHAL_CONTEXTCREATECB ContextCreate
;
144 LPD3DNTHAL_CONTEXTDESTROYCB ContextDestroy
;
145 LPD3DNTHAL_CONTEXTDESTROYALLCB ContextDestroyAll
;
146 LPD3DNTHAL_SCENECAPTURECB SceneCapture
;
151 ULONG_PTR dwReserved
;
152 LPD3DNTHAL_TEXTURECREATECB TextureCreate
;
153 LPD3DNTHAL_TEXTUREDESTROYCB TextureDestroy
;
154 LPD3DNTHAL_TEXTURESWAPCB TextureSwap
;
155 LPD3DNTHAL_TEXTUREGETSURFCB TextureGetSurf
;
167 ULONG_PTR dwReserved0
;
168 ULONG_PTR dwReserved1
;
169 ULONG_PTR dwReserved2
;
170 ULONG_PTR dwReserved3
;
171 ULONG_PTR dwReserved4
;
172 ULONG_PTR dwReserved5
;
173 ULONG_PTR dwReserved6
;
174 ULONG_PTR dwReserved7
;
175 ULONG_PTR dwReserved8
;
176 ULONG_PTR dwReserved9
;
177 } D3DNTHAL_CALLBACKS
, *LPD3DNTHAL_CALLBACKS
;
180 typedef struct _D3DNTHAL_SETRENDERTARGETDATA
182 ULONG_PTR dwhContext
;
183 PDD_SURFACE_LOCAL lpDDS
;
184 PDD_SURFACE_LOCAL lpDDSZ
;
186 } D3DNTHAL_SETRENDERTARGETDATA
;
187 typedef D3DNTHAL_SETRENDERTARGETDATA
*LPD3DNTHAL_SETRENDERTARGETDATA
;
189 typedef DWORD (APIENTRY
*LPD3DNTHAL_SETRENDERTARGETCB
)(LPD3DNTHAL_SETRENDERTARGETDATA
);
192 typedef struct _D3DNTHAL_CALLBACKS2
197 LPD3DNTHAL_SETRENDERTARGETCB SetRenderTarget
;
202 } D3DNTHAL_CALLBACKS2
, *LPD3DNTHAL_CALLBACKS2
;
205 typedef struct _D3DNTHAL_CLEAR2DATA
207 ULONG_PTR dwhContext
;
210 D3DVALUE dvFillDepth
;
215 } D3DNTHAL_CLEAR2DATA
;
216 typedef D3DNTHAL_CLEAR2DATA FAR
*LPD3DNTHAL_CLEAR2DATA
;
218 typedef struct _D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA
220 ULONG_PTR dwhContext
;
222 ULONG_PTR dwReserved
;
225 } D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA
, FAR
*LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA
;
227 typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA
229 ULONG_PTR dwhContext
;
232 PDD_SURFACE_LOCAL lpDDCommands
;
233 DWORD dwCommandOffset
;
234 DWORD dwCommandLength
;
235 __GNU_EXTENSION
union
237 PDD_SURFACE_LOCAL lpDDVertex
;
240 DWORD dwVertexOffset
;
241 DWORD dwVertexLength
;
242 DWORD dwReqVertexBufSize
;
243 DWORD dwReqCommandBufSize
;
245 __GNU_EXTENSION
union
251 } D3DNTHAL_DRAWPRIMITIVES2DATA
, FAR
*LPD3DNTHAL_DRAWPRIMITIVES2DATA
;
253 typedef DWORD (APIENTRY
*LPD3DNTHAL_CLEAR2CB
)(LPD3DNTHAL_CLEAR2DATA
);
254 typedef DWORD (APIENTRY
*LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB
)(LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA
);
255 typedef DWORD (APIENTRY
*LPD3DNTHAL_DRAWPRIMITIVES2CB
)(LPD3DNTHAL_DRAWPRIMITIVES2DATA
);
257 typedef struct _D3DNTHAL_CALLBACKS3
262 LPD3DNTHAL_CLEAR2CB Clear2
;
264 LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState
;
265 LPD3DNTHAL_DRAWPRIMITIVES2CB DrawPrimitives2
;
266 } D3DNTHAL_CALLBACKS3
, *LPD3DNTHAL_CALLBACKS3
;
272 #endif /* __DDK_D3DNTHAL_H */