• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 DEFINE_GUID(GUID_D3DCallbacks,                   0x7BF06990, 0x8794, 0x11D0, 0x91, 0x39, 0x08, 0x00, 0x36, 0xD2, 0xEF, 0x02);
33 DEFINE_GUID(GUID_D3DCallbacks3,                  0xDDF41230, 0xEC0A, 0x11D0, 0xA9, 0xB6, 0x00, 0xAA, 0x00, 0xC0, 0x99, 0x3E);
34 DEFINE_GUID(GUID_D3DExtendedCaps,                0x7DE41F80, 0x9D93, 0x11D0, 0x89, 0xAB, 0x00, 0xA0, 0xC9, 0x05, 0x41, 0x29);
35 DEFINE_GUID(GUID_D3DParseUnknownCommandCallback, 0x2E04FFA0, 0x98E4, 0x11D1, 0x8C, 0xE1, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0xA8);
36 DEFINE_GUID(GUID_ZPixelFormats,                  0x93869880, 0x36CF, 0x11D1, 0x9B, 0x1B, 0x00, 0xAA, 0x00, 0xBB, 0xB8, 0xAE);
37 DEFINE_GUID(GUID_DDStereoMode,                   0xF828169C, 0xA8E8, 0x11D2, 0xA1, 0xF2, 0x00, 0xA0, 0xC9, 0x83, 0xEA, 0xF6);
38 
39 typedef struct _D3DNTHAL_CONTEXTCREATEDATA {
40   __GNU_EXTENSION union {
41     PDD_DIRECTDRAW_GLOBAL lpDDGbl;
42     PDD_DIRECTDRAW_LOCAL lpDDLcl;
43   };
44   __GNU_EXTENSION union {
45     PDD_SURFACE_LOCAL lpDDS;
46     PDD_SURFACE_LOCAL lpDDSLcl;
47   };
48   __GNU_EXTENSION union {
49     PDD_SURFACE_LOCAL lpDDSZ;
50     PDD_SURFACE_LOCAL lpDDSZLcl;
51   };
52   DWORD dwPID;
53   ULONG_PTR dwhContext;
54   HRESULT ddrval;
55 } D3DNTHAL_CONTEXTCREATEDATA, *LPD3DNTHAL_CONTEXTCREATEDATA;
56 
57 typedef struct _D3DNTHAL_CONTEXTDESTROYDATA {
58   ULONG_PTR dwhContext;
59   HRESULT ddrval;
60 } D3DNTHAL_CONTEXTDESTROYDATA, *LPD3DNTHAL_CONTEXTDESTROYDATA;
61 
62 typedef struct _D3DNTHAL_CONTEXTDESTROYALLDATA {
63   DWORD dwPID;
64   HRESULT ddrval;
65 } D3DNTHAL_CONTEXTDESTROYALLDATA, *LPD3DNTHAL_CONTEXTDESTROYALLDATA;
66 
67 typedef struct _D3DNTHAL_SCENECAPTUREDATA {
68   ULONG_PTR dwhContext;
69   DWORD dwFlag;
70   HRESULT ddrval;
71 } D3DNTHAL_SCENECAPTUREDATA, *LPD3DNTHAL_SCENECAPTUREDATA;
72 
73 typedef struct _D3DNTHAL_TEXTURECREATEDATA {
74   ULONG_PTR dwhContext;
75   HANDLE hDDS;
76   ULONG_PTR dwHandle;
77   HRESULT ddrval;
78 } D3DNTHAL_TEXTURECREATEDATA, *LPD3DNTHAL_TEXTURECREATEDATA;
79 
80 typedef struct _D3DNTHAL_TEXTUREDESTROYDATA {
81   ULONG_PTR dwhContext;
82   ULONG_PTR dwHandle;
83   HRESULT ddrval;
84 } D3DNTHAL_TEXTUREDESTROYDATA, *LPD3DNTHAL_TEXTUREDESTROYDATA;
85 
86 typedef struct _D3DNTHAL_TEXTURESWAPDATA {
87   ULONG_PTR dwhContext;
88   ULONG_PTR dwHandle1;
89   ULONG_PTR dwHandle2;
90   HRESULT ddrval;
91 } D3DNTHAL_TEXTURESWAPDATA, *LPD3DNTHAL_TEXTURESWAPDATA;
92 
93 typedef struct _D3DNTHAL_TEXTUREGETSURFDATA {
94   ULONG_PTR dwhContext;
95   HANDLE hDDS;
96   ULONG_PTR dwHandle;
97   HRESULT ddrval;
98 } D3DNTHAL_TEXTUREGETSURFDATA, *LPD3DNTHAL_TEXTUREGETSURFDATA;
99 
100 typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTCREATECB)(LPD3DNTHAL_CONTEXTCREATEDATA);
101 typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTDESTROYCB)(LPD3DNTHAL_CONTEXTDESTROYDATA);
102 typedef DWORD (APIENTRY *LPD3DNTHAL_CONTEXTDESTROYALLCB)(LPD3DNTHAL_CONTEXTDESTROYALLDATA);
103 typedef DWORD (APIENTRY *LPD3DNTHAL_SCENECAPTURECB)(LPD3DNTHAL_SCENECAPTUREDATA);
104 typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURECREATECB)(LPD3DNTHAL_TEXTURECREATEDATA);
105 typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREDESTROYCB)(LPD3DNTHAL_TEXTUREDESTROYDATA);
106 typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTURESWAPCB)(LPD3DNTHAL_TEXTURESWAPDATA);
107 typedef DWORD (APIENTRY *LPD3DNTHAL_TEXTUREGETSURFCB)(LPD3DNTHAL_TEXTUREGETSURFDATA);
108 
109 typedef struct _D3DNTHALDeviceDesc_V1 {
110 	DWORD            dwSize;
111 	DWORD            dwFlags;
112 	D3DCOLORMODEL    dcmColorModel;
113 	DWORD            dwDevCaps;
114 	D3DTRANSFORMCAPS dtcTransformCaps;
115 	WINBOOL          bClipping;
116 	D3DLIGHTINGCAPS  dlcLightingCaps;
117 	D3DPRIMCAPS      dpcLineCaps;
118 	D3DPRIMCAPS      dpcTriCaps;
119 	DWORD            dwDeviceRenderBitDepth;
120 	DWORD            dwDeviceZBufferBitDepth;
121 	DWORD            dwMaxBufferSize;
122 	DWORD            dwMaxVertexCount;
123 } D3DNTHALDEVICEDESC_V1, *LPD3DNTHALDEVICEDESC_V1;
124 
125 typedef struct _D3DNTHAL_GLOBALDRIVERDATA {
126 	DWORD               dwSize;
127 	D3DNTHALDEVICEDESC_V1 hwCaps;
128 	DWORD               dwNumVertices;
129 	DWORD               dwNumClipVertices;
130 	DWORD               dwNumTextureFormats;
131 	LPDDSURFACEDESC     lpTextureFormats;
132 } D3DNTHAL_GLOBALDRIVERDATA, *LPD3DNTHAL_GLOBALDRIVERDATA;
133 
134 typedef struct _D3DNTHAL_CALLBACKS {
135   DWORD dwSize;
136   LPD3DNTHAL_CONTEXTCREATECB ContextCreate;
137   LPD3DNTHAL_CONTEXTDESTROYCB ContextDestroy;
138   LPD3DNTHAL_CONTEXTDESTROYALLCB ContextDestroyAll;
139   LPD3DNTHAL_SCENECAPTURECB SceneCapture;
140   LPVOID dwReserved10;
141   LPVOID dwReserved11;
142   LPVOID dwReserved22;
143   LPVOID dwReserved23;
144   ULONG_PTR dwReserved;
145   LPD3DNTHAL_TEXTURECREATECB TextureCreate;
146   LPD3DNTHAL_TEXTUREDESTROYCB TextureDestroy;
147   LPD3DNTHAL_TEXTURESWAPCB TextureSwap;
148   LPD3DNTHAL_TEXTUREGETSURFCB TextureGetSurf;
149   LPVOID dwReserved12;
150   LPVOID dwReserved13;
151   LPVOID dwReserved14;
152   LPVOID dwReserved15;
153   LPVOID dwReserved16;
154   LPVOID dwReserved17;
155   LPVOID dwReserved18;
156   LPVOID dwReserved19;
157   LPVOID dwReserved20;
158   LPVOID dwReserved21;
159   LPVOID dwReserved24;
160   ULONG_PTR dwReserved0;
161   ULONG_PTR dwReserved1;
162   ULONG_PTR dwReserved2;
163   ULONG_PTR dwReserved3;
164   ULONG_PTR dwReserved4;
165   ULONG_PTR dwReserved5;
166   ULONG_PTR dwReserved6;
167   ULONG_PTR dwReserved7;
168   ULONG_PTR dwReserved8;
169   ULONG_PTR dwReserved9;
170 } D3DNTHAL_CALLBACKS, *LPD3DNTHAL_CALLBACKS;
171 
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;
179 typedef D3DNTHAL_SETRENDERTARGETDATA *LPD3DNTHAL_SETRENDERTARGETDATA;
180 
181 typedef DWORD (APIENTRY *LPD3DNTHAL_SETRENDERTARGETCB)(LPD3DNTHAL_SETRENDERTARGETDATA);
182 
183 
184 typedef struct _D3DNTHAL_CALLBACKS2 {
185   DWORD dwSize;
186   DWORD dwFlags;
187 
188   LPD3DNTHAL_SETRENDERTARGETCB SetRenderTarget;
189   LPVOID dwReserved1;
190   LPVOID dwReserved2;
191   LPVOID dwReserved3;
192   LPVOID dwReserved4;
193 } D3DNTHAL_CALLBACKS2, *LPD3DNTHAL_CALLBACKS2;
194 
195 
196 typedef struct _D3DNTHAL_CLEAR2DATA {
197   ULONG_PTR dwhContext;
198   DWORD dwFlags;
199   DWORD dwFillColor;
200   D3DVALUE dvFillDepth;
201   DWORD dwFillStencil;
202   LPD3DRECT lpRects;
203   DWORD dwNumRects;
204   HRESULT ddrval;
205 } D3DNTHAL_CLEAR2DATA;
206 typedef D3DNTHAL_CLEAR2DATA FAR *LPD3DNTHAL_CLEAR2DATA;
207 
208 typedef struct _D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA {
209   ULONG_PTR dwhContext;
210   DWORD dwFlags;
211   ULONG_PTR dwReserved;
212   DWORD dwNumPasses;
213   HRESULT ddrval;
214 } D3DNTHAL_VALIDATETEXTURESTAGESTATEDATA, FAR *LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA;
215 
216 typedef struct _D3DNTHAL_DRAWPRIMITIVES2DATA {
217   ULONG_PTR dwhContext;
218   DWORD dwFlags;
219   DWORD dwVertexType;
220   PDD_SURFACE_LOCAL lpDDCommands;
221   DWORD dwCommandOffset;
222   DWORD dwCommandLength;
223   __GNU_EXTENSION union {
224     PDD_SURFACE_LOCAL lpDDVertex;
225     LPVOID lpVertices;
226   };
227   DWORD dwVertexOffset;
228   DWORD dwVertexLength;
229   DWORD dwReqVertexBufSize;
230   DWORD dwReqCommandBufSize;
231   LPDWORD lpdwRStates;
232   __GNU_EXTENSION union {
233     DWORD dwVertexSize;
234     HRESULT ddrval;
235   };
236   DWORD dwErrorOffset;
237 } D3DNTHAL_DRAWPRIMITIVES2DATA, FAR *LPD3DNTHAL_DRAWPRIMITIVES2DATA;
238 
239 typedef DWORD (APIENTRY *LPD3DNTHAL_CLEAR2CB)(LPD3DNTHAL_CLEAR2DATA);
240 typedef DWORD (APIENTRY *LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB)(LPD3DNTHAL_VALIDATETEXTURESTAGESTATEDATA);
241 typedef DWORD (APIENTRY *LPD3DNTHAL_DRAWPRIMITIVES2CB)(LPD3DNTHAL_DRAWPRIMITIVES2DATA);
242 
243 typedef struct _D3DNTHAL_CALLBACKS3 {
244   DWORD dwSize;
245   DWORD dwFlags;
246 
247   LPD3DNTHAL_CLEAR2CB Clear2;
248   LPVOID lpvReserved;
249   LPD3DNTHAL_VALIDATETEXTURESTAGESTATECB ValidateTextureStageState;
250   LPD3DNTHAL_DRAWPRIMITIVES2CB DrawPrimitives2;
251 } D3DNTHAL_CALLBACKS3, *LPD3DNTHAL_CALLBACKS3;
252 
253 #ifdef __cplusplus
254 } /* extern "C" */
255 #endif
256 
257 #endif /* __DDK_D3DNTHAL_H */
258 
259