[RXCE]
[reactos.git] / reactos / sdk / include / psdk / d3dnthal.h
1 /*
2 * d3dnthal.h
3 *
4 * Direct3D NT driver interface
5 *
6 * Contributors:
7 * Created by Ge van Geldorp
8 *
9 * THIS SOFTWARE IS NOT COPYRIGHTED
10 *
11 * This source code is offered for use in the public domain. You may
12 * use, modify or distribute it freely.
13 *
14 * This code is distributed in the hope that it will be useful but
15 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
16 * DISCLAIMED. This includes but is not limited to warranties of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 *
19 */
20
21 #ifndef __DDK_D3DNTHAL_H
22 #define __DDK_D3DNTHAL_H
23
24 #include <ddrawint.h>
25 #include <d3dtypes.h>
26 #include <d3dcaps.h>
27 #include <d3dkmthk.h>
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 DEFINE_GUID(GUID_D3DCallbacks, 0x7BF06990, 0x8794, 0x11D0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xD2, 0xEF, 0x02);
34 DEFINE_GUID(GUID_D3DCallbacks3, 0xDDF41230, 0xEC0A, 0x11D0, 0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E);
35 DEFINE_GUID(GUID_D3DExtendedCaps, 0x7DE41F80, 0x9D93, 0x11D0, 0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29);
36 DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2E04FFA0, 0x98E4, 0x11D1, 0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8);
37 DEFINE_GUID(GUID_ZPixelFormats, 0x93869880, 0x36CF, 0x11D1, 0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE);
38 DEFINE_GUID(GUID_DDStereoMode, 0xF828169C, 0xA8E8, 0x11D2, 0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6);
39
40 typedef struct _D3DNTHAL_CONTEXTCREATEDATA {
41 __GNU_EXTENSION union {
42 PDD_DIRECTDRAW_GLOBAL lpDDGbl;
43 PDD_DIRECTDRAW_LOCAL lpDDLcl;
44 };
45 __GNU_EXTENSION union {
46 PDD_SURFACE_LOCAL lpDDS;
47 PDD_SURFACE_LOCAL lpDDSLcl;
48 };
49 __GNU_EXTENSION union {
50 PDD_SURFACE_LOCAL lpDDSZ;
51 PDD_SURFACE_LOCAL lpDDSZLcl;
52 };
53 DWORD dwPID;
54 ULONG_PTR dwhContext;
55 HRESULT ddrval;
56 } D3DNTHAL_CONTEXTCREATEDATA, *LPD3DNTHAL_CONTEXTCREATEDATA;
57
58 typedef struct _D3DNTHAL_CONTEXTDESTROYDATA {
59 ULONG_PTR dwhContext;
60 HRESULT ddrval;
61 } D3DNTHAL_CONTEXTDESTROYDATA, *LPD3DNTHAL_CONTEXTDESTROYDATA;
62
63 typedef struct _D3DNTHAL_CONTEXTDESTROYALLDATA {
64 DWORD dwPID;
65 HRESULT ddrval;
66 } D3DNTHAL_CONTEXTDESTROYALLDATA, *LPD3DNTHAL_CONTEXTDESTROYALLDATA;
67
68 typedef struct _D3DNTHAL_SCENECAPTUREDATA {
69 ULONG_PTR dwhContext;
70 DWORD dwFlag;
71 HRESULT ddrval;
72 } D3DNTHAL_SCENECAPTUREDATA, *LPD3DNTHAL_SCENECAPTUREDATA;
73
74 typedef struct _D3DNTHAL_TEXTURECREATEDATA {
75 ULONG_PTR dwhContext;
76 HANDLE hDDS;
77 ULONG_PTR dwHandle;
78 HRESULT ddrval;
79 } D3DNTHAL_TEXTURECREATEDATA, *LPD3DNTHAL_TEXTURECREATEDATA;
80
81 typedef struct _D3DNTHAL_TEXTUREDESTROYDATA {
82 ULONG_PTR dwhContext;
83 ULONG_PTR dwHandle;
84 HRESULT ddrval;
85 } D3DNTHAL_TEXTUREDESTROYDATA, *LPD3DNTHAL_TEXTUREDESTROYDATA;
86
87 typedef struct _D3DNTHAL_TEXTURESWAPDATA {
88 ULONG_PTR dwhContext;
89 ULONG_PTR dwHandle1;
90 ULONG_PTR dwHandle2;
91 HRESULT ddrval;
92 } D3DNTHAL_TEXTURESWAPDATA, *LPD3DNTHAL_TEXTURESWAPDATA;
93
94 typedef struct _D3DNTHAL_TEXTUREGETSURFDATA {
95 ULONG_PTR dwhContext;
96 HANDLE hDDS;
97 ULONG_PTR dwHandle;
98 HRESULT ddrval;
99 } D3DNTHAL_TEXTUREGETSURFDATA, *LPD3DNTHAL_TEXTUREGETSURFDATA;
100
101 typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTCREATECB)(LPD3DNTHAL_CONTEXTCREATEDATA);
102 typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTDESTROYCB)(LPD3DNTHAL_CONTEXTDESTROYDATA);
103 typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTDESTROYALLCB)(LPD3DNTHAL_CONTEXTDESTROYALLDATA);
104 typedef DWORD (APIENTRY *LPD3DNTHAL_SCENECAPTURECB)(LPD3DNTHAL_SCENECAPTUREDATA);
105 typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURECREATECB)(LPD3DNTHAL_TEXTURECREATEDATA);
106 typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREDESTROYCB)(LPD3DNTHAL_TEXTUREDESTROYDATA);
107 typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURESWAPCB)(LPD3DNTHAL_TEXTURESWAPDATA);
108 typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREGETSURFCB)(LPD3DNTHAL_TEXTUREGETSURFDATA);
109
110 typedef struct _D3DNTHALDeviceDesc_V1 {
111 DWORD dwSize;
112 DWORD dwFlags;
113 D3DCOLORMODEL dcmColorModel;
114 DWORD dwDevCaps;
115 D3DTRANSFORMCAPS dtcTransformCaps;
116 BOOL bClipping;
117 D3DLIGHTINGCAPS dlcLightingCaps;
118 D3DPRIMCAPS dpcLineCaps;
119 D3DPRIMCAPS dpcTriCaps;
120 DWORD dwDeviceRenderBitDepth;
121 DWORD dwDeviceZBufferBitDepth;
122 DWORD dwMaxBufferSize;
123 DWORD dwMaxVertexCount;
124 } D3DNTHALDEVICEDESC_V1, *LPD3DNTHALDEVICEDESC_V1;
125
126 typedef struct _D3DNTHAL_GLOBALDRIVERDATA {
127 DWORD dwSize;
128 D3DNTHALDEVICEDESC_V1 hwCaps;
129 DWORD dwNumVertices;
130 DWORD dwNumClipVertices;
131 DWORD dwNumTextureFormats;
132 LPDDSURFACEDESC lpTextureFormats;
133 } D3DNTHAL_GLOBALDRIVERDATA, *LPD3DNTHAL_GLOBALDRIVERDATA;
134
135 typedef struct _D3DNTHAL_CALLBACKS {
136 DWORD dwSize;
137 LPD3DNTHAL_CONTEXTCREATECB ContextCreate;
138 LPD3DNTHAL_CONTEXTDESTROYCB ContextDestroy;
139 LPD3DNTHAL_CONTEXTDESTROYALLCB ContextDestroyAll;
140 LPD3DNTHAL_SCENECAPTURECB SceneCapture;
141 LPVOID dwReserved10;
142 LPVOID dwReserved11;
143 LPVOID dwReserved22;
144 LPVOID dwReserved23;
145 ULONG_PTR dwReserved;
146 LPD3DNTHAL_TEXTURECREATECB TextureCreate;
147 LPD3DNTHAL_TEXTUREDESTROYCB TextureDestroy;
148 LPD3DNTHAL_TEXTURESWAPCB TextureSwap;
149 LPD3DNTHAL_TEXTUREGETSURFCB TextureGetSurf;
150 LPVOID dwReserved12;
151 LPVOID dwReserved13;
152 LPVOID dwReserved14;
153 LPVOID dwReserved15;
154 LPVOID dwReserved16;
155 LPVOID dwReserved17;
156 LPVOID dwReserved18;
157 LPVOID dwReserved19;
158 LPVOID dwReserved20;
159 LPVOID dwReserved21;
160 LPVOID dwReserved24;
161 ULONG_PTR dwReserved0;
162 ULONG_PTR dwReserved1;
163 ULONG_PTR dwReserved2;
164 ULONG_PTR dwReserved3;
165 ULONG_PTR dwReserved4;
166 ULONG_PTR dwReserved5;
167 ULONG_PTR dwReserved6;
168 ULONG_PTR dwReserved7;
169 ULONG_PTR dwReserved8;
170 ULONG_PTR dwReserved9;
171 } D3DNTHAL_CALLBACKS, *LPD3DNTHAL_CALLBACKS;
172
173 typedef struct _D3DNTHAL_SETRENDERTARGETDATA {
174 ULONG_PTR dwhContext;
175 PDD_SURFACE_LOCAL lpDDS;
176 PDD_SURFACE_LOCAL lpDDSZ;
177 HRESULT ddrval;
178 } D3DNTHAL_SETRENDERTARGETDATA, *LPD3DNTHAL_SETRENDERTARGETDATA;
179
180 typedef DWORD (APIENTRY *LPD3DNTHAL_SETRENDERTARGETCB)(LPD3DNTHAL_SETRENDERTARGETDATA);
181
182 typedef struct _D3DNTHAL_CALLBACKS2 {
183 DWORD dwSize;
184 DWORD dwFlags;
185 LPD3DNTHAL_SETRENDERTARGETCB SetRenderTarget;
186 LPVOID dwReserved1;
187 LPVOID dwReserved2;
188 LPVOID dwReserved3;
189 LPVOID dwReserved4;
190 } D3DNTHAL_CALLBACKS2, *LPD3DNTHAL_CALLBACKS2;
191
192 typedef struct _D3DNTHAL_CLEAR2DATA {
193 ULONG_PTR dwhContext;
194 DWORD dwFlags;
195 DWORD dwFillColor;
196 D3DVALUE dvFillDepth;
197 DWORD dwFillStencil;
198 LPD3DRECT lpRects;
199 DWORD dwNumRects;
200 HRESULT ddrval;
201 } D3DNTHAL_CLEAR2DATA, FAR *LPD3DNTHAL_CLEAR2DATA;
202
203 typedef struct _D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA {
204 ULONG_PTR dwhContext;
205 DWORD dwFlags;
206 ULONG_PTR dwReserved;
207 DWORD dwNumPasses;
208 HRESULT ddrval;
209 } D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA, FAR *LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA;
210
211 typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA {
212 ULONG_PTR dwhContext;
213 DWORD dwFlags;
214 DWORD dwVertexType;
215 PDD_SURFACE_LOCAL lpDDCommands;
216 DWORD dwCommandOffset;
217 DWORD dwCommandLength;
218 __GNU_EXTENSION union {
219 PDD_SURFACE_LOCAL lpDDVertex;
220 LPVOID lpVertices;
221 };
222 DWORD dwVertexOffset;
223 DWORD dwVertexLength;
224 DWORD dwReqVertexBufSize;
225 DWORD dwReqCommandBufSize;
226 LPDWORD lpdwRStates;
227 __GNU_EXTENSION union {
228 DWORD dwVertexSize;
229 HRESULT ddrval;
230 };
231 DWORD dwErrorOffset;
232 } D3DNTHAL_DRAWPRIMITIVES2DATA, FAR *LPD3DNTHAL_DRAWPRIMITIVES2DATA;
233
234 typedef DWORD (APIENTRY *LPD3DNTHAL_CLEAR2CB)(LPD3DNTHAL_CLEAR2DATA);
235 typedef DWORD (APIENTRY *LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA);
236 typedef DWORD (APIENTRY *LPD3DNTHAL_DRAWPRIMITIVES2CB)(LPD3DNTHAL_DRAWPRIMITIVES2DATA);
237
238 typedef struct _D3DNTHAL_CALLBACKS3 {
239 DWORD dwSize;
240 DWORD dwFlags;
241 LPD3DNTHAL_CLEAR2CB Clear2;
242 LPVOID lpvReserved;
243 LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState;
244 LPD3DNTHAL_DRAWPRIMITIVES2CB DrawPrimitives2;
245 } D3DNTHAL_CALLBACKS3, *LPD3DNTHAL_CALLBACKS3;
246
247 #ifdef __cplusplus
248 } /* extern "C" */
249 #endif
250
251 #endif /* __DDK_D3DNTHAL_H */