Don't open device if already open.
[wine] / dlls / ddraw / d3d_private.h
1 /* Direct3D private include file
2  * Copyright (c) 1998-2004 Lionel ULMER
3  * Copyright (c) 2002-2004 Christian Costa
4  *
5  * This file contains all the structure that are not exported
6  * through d3d.h and all common macros.
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22
23 #ifndef __GRAPHICS_WINE_D3D_PRIVATE_H
24 #define __GRAPHICS_WINE_D3D_PRIVATE_H
25
26 /* THIS FILE MUST NOT CONTAIN X11 or MESA DEFINES */
27
28 #include <stdarg.h>
29
30 #include "windef.h"
31 #include "winbase.h"
32 #include "wingdi.h"
33 #include "d3d.h"
34
35 #define MAX_TEXTURES 8
36 #define MAX_LIGHTS  16
37
38 #define HIGHEST_RENDER_STATE         152
39 #define HIGHEST_TEXTURE_STAGE_STATE   24
40
41 /*****************************************************************************
42  * Predeclare the interface implementation structures
43  */
44 typedef struct IDirect3DLightImpl IDirect3DLightImpl;
45 typedef struct IDirect3DMaterialImpl IDirect3DMaterialImpl;
46 typedef struct IDirect3DViewportImpl IDirect3DViewportImpl;
47 typedef struct IDirect3DExecuteBufferImpl IDirect3DExecuteBufferImpl;
48 typedef struct IDirect3DVertexBufferImpl IDirect3DVertexBufferImpl;
49
50 #include "ddraw_private.h"
51
52 typedef struct STATEBLOCKFLAGS {
53    BOOL render_state[HIGHEST_RENDER_STATE];
54    BOOL texture_stage_state[MAX_TEXTURES][HIGHEST_TEXTURE_STAGE_STATE];
55 } STATEBLOCKFLAGS;
56
57 typedef struct STATEBLOCK {
58    STATEBLOCKFLAGS set_flags; 
59    DWORD render_state[HIGHEST_RENDER_STATE];
60    DWORD texture_stage_state[MAX_TEXTURES][HIGHEST_TEXTURE_STAGE_STATE];
61 } STATEBLOCK;
62
63
64 /*****************************************************************************
65  * IDirect3DLight implementation structure
66  */
67 struct IDirect3DLightImpl
68 {
69     ICOM_VFIELD_MULTI(IDirect3DLight);
70     DWORD ref;
71     /* IDirect3DLight fields */
72     IDirectDrawImpl *d3d;
73     /* If this light is active for one viewport, put the viewport here */
74     IDirect3DViewportImpl *active_viewport;
75
76     D3DLIGHT2 light;
77     D3DLIGHT7 light7;
78
79     DWORD dwLightIndex;
80
81     /* Chained list used for adding / removing from viewports */
82     IDirect3DLightImpl *next;
83
84     /* Activation function */
85     void (*activate)(IDirect3DLightImpl*);
86     void (*desactivate)(IDirect3DLightImpl*);
87     void (*update)(IDirect3DLightImpl*);
88 };
89
90 /*****************************************************************************
91  * IDirect3DMaterial implementation structure
92  */
93 struct IDirect3DMaterialImpl
94 {
95     ICOM_VFIELD_MULTI(IDirect3DMaterial3);
96     ICOM_VFIELD_MULTI(IDirect3DMaterial2);
97     ICOM_VFIELD_MULTI(IDirect3DMaterial);
98     DWORD  ref;
99     /* IDirect3DMaterial2 fields */
100     IDirectDrawImpl *d3d;
101     IDirect3DDeviceImpl *active_device;
102
103     D3DMATERIAL mat;
104
105     void (*activate)(IDirect3DMaterialImpl* this);
106 };
107
108 /*****************************************************************************
109  * IDirect3DViewport implementation structure
110  */
111 struct IDirect3DViewportImpl
112 {
113     ICOM_VFIELD_MULTI(IDirect3DViewport3);
114     DWORD ref;
115     /* IDirect3DViewport fields */
116     IDirectDrawImpl *d3d;
117     /* If this viewport is active for one device, put the device here */
118     IDirect3DDeviceImpl *active_device;
119
120     DWORD num_lights;
121     DWORD map_lights;
122
123     int use_vp2;
124     union {
125         D3DVIEWPORT vp1;
126         D3DVIEWPORT2 vp2;
127     } viewports;
128
129     /* Activation function */
130     void (*activate)(IDirect3DViewportImpl*);
131
132     /* Field used to chain viewports together */
133     IDirect3DViewportImpl *next;
134
135     /* Lights list */
136     IDirect3DLightImpl *lights;
137
138     /* Background material */
139     IDirect3DMaterialImpl *background;
140 };
141
142 /*****************************************************************************
143  * IDirect3DExecuteBuffer implementation structure
144  */
145 struct IDirect3DExecuteBufferImpl
146 {
147     ICOM_VFIELD_MULTI(IDirect3DExecuteBuffer);
148     DWORD ref;
149     /* IDirect3DExecuteBuffer fields */
150     IDirectDrawImpl *d3d;
151     IDirect3DDeviceImpl* d3ddev;
152
153     D3DEXECUTEBUFFERDESC desc;
154     D3DEXECUTEDATA data;
155
156     /* This buffer will store the transformed vertices */
157     void* vertex_data;
158     WORD* indices;
159     int nb_indices;
160
161     /* This flags is set to TRUE if we allocated ourselves the
162        data buffer */
163     BOOL need_free;
164
165     void (*execute)(IDirect3DExecuteBufferImpl* this,
166                     IDirect3DDeviceImpl* dev,
167                     IDirect3DViewportImpl* vp);
168 };
169
170 /* Internal structure to store the state of the clipping planes */
171 typedef struct d3d7clippingplane 
172 {
173     D3DVALUE plane[4];
174 } d3d7clippingplane;
175
176 /*****************************************************************************
177  * IDirect3DDevice implementation structure
178  */
179
180 #define WORLDMAT_CHANGED (0x00000001 <<  0)
181 #define VIEWMAT_CHANGED  (0x00000001 <<  1)
182 #define PROJMAT_CHANGED  (0x00000001 <<  2)
183 #define TEXMAT0_CHANGED  (0x00000001 <<  3)
184 #define TEXMAT1_CHANGED  (0x00000001 <<  4)
185 #define TEXMAT2_CHANGED  (0x00000001 <<  5)
186 #define TEXMAT3_CHANGED  (0x00000001 <<  6)
187 #define TEXMAT4_CHANGED  (0x00000001 <<  7)
188 #define TEXMAT5_CHANGED  (0x00000001 <<  8)
189 #define TEXMAT6_CHANGED  (0x00000001 <<  9)
190 #define TEXMAT7_CHANGED  (0x00000001 << 10)
191
192 struct IDirect3DDeviceImpl
193 {
194     ICOM_VFIELD_MULTI(IDirect3DDevice7);
195     ICOM_VFIELD_MULTI(IDirect3DDevice3);
196     ICOM_VFIELD_MULTI(IDirect3DDevice2);
197     ICOM_VFIELD_MULTI(IDirect3DDevice);
198     DWORD  ref;
199
200     /* Version of the Direct3D object from which the device has been created */
201     DWORD version;
202
203     /* IDirect3DDevice fields */
204     IDirectDrawImpl *d3d;
205     IDirectDrawSurfaceImpl *surface;
206
207     IDirect3DViewportImpl *viewport_list;
208     IDirect3DViewportImpl *current_viewport;
209     D3DVIEWPORT7 active_viewport;
210
211     IDirectDrawSurfaceImpl *current_texture[MAX_TEXTURES];
212     IDirectDrawSurfaceImpl *current_zbuffer;
213     
214     /* Current transformation matrices */
215     D3DMATRIX *world_mat;
216     D3DMATRIX *view_mat;
217     D3DMATRIX *proj_mat;
218     D3DMATRIX *tex_mat[MAX_TEXTURES];
219     BOOLEAN tex_mat_is_identity[MAX_TEXTURES];
220     
221     /* Current material used in D3D7 mode */
222     D3DMATERIAL7 current_material;
223
224     /* Light state */
225     DWORD material;
226
227     /* Light parameters */
228     DWORD active_lights, set_lights;
229     D3DLIGHT7 light_parameters[MAX_LIGHTS];
230
231     /* clipping planes */
232     DWORD max_clipping_planes;
233     d3d7clippingplane *clipping_planes;
234     
235     void (*set_context)(IDirect3DDeviceImpl*);
236     HRESULT (*clear)(IDirect3DDeviceImpl *This,
237                      DWORD dwCount,
238                      LPD3DRECT lpRects,
239                      DWORD dwFlags,
240                      DWORD dwColor,
241                      D3DVALUE dvZ,
242                      DWORD dwStencil);
243     void (*matrices_updated)(IDirect3DDeviceImpl *This, DWORD matrices);
244     void (*set_matrices)(IDirect3DDeviceImpl *This, DWORD matrices,
245                          D3DMATRIX *world_mat, D3DMATRIX *view_mat, D3DMATRIX *proj_mat);
246     void (*flush_to_framebuffer)(IDirect3DDeviceImpl *This, LPCRECT pRect, IDirectDrawSurfaceImpl *surf);
247
248     STATEBLOCK state_block;
249
250     /* Used to prevent locks and rendering to overlap */
251     CRITICAL_SECTION crit;
252 };
253
254 /*****************************************************************************
255  * IDirect3DVertexBuffer implementation structure
256  */
257 struct IDirect3DVertexBufferImpl
258 {
259     ICOM_VFIELD_MULTI(IDirect3DVertexBuffer7);
260     ICOM_VFIELD_MULTI(IDirect3DVertexBuffer);
261     DWORD ref;
262     IDirectDrawImpl *d3d;
263     D3DVERTEXBUFFERDESC desc;
264     LPVOID *vertices;
265     DWORD vertex_buffer_size;
266
267     BOOLEAN processed;
268 };
269
270 /* Various dump and helper functions */
271 extern const char *_get_renderstate(D3DRENDERSTATETYPE type);
272 extern void dump_D3DMATERIAL7(LPD3DMATERIAL7 lpMat);
273 extern void dump_D3DCOLORVALUE(D3DCOLORVALUE *lpCol);
274 extern void dump_D3DLIGHT7(LPD3DLIGHT7 lpLight);
275 extern void dump_DPFLAGS(DWORD dwFlags);
276 extern void dump_D3DMATRIX(D3DMATRIX *mat);
277 extern void dump_D3DVECTOR(D3DVECTOR *lpVec);
278 extern void dump_flexible_vertex(DWORD d3dvtVertexType);
279 extern DWORD get_flexible_vertex_size(DWORD d3dvtVertexType);
280 extern void convert_FVF_to_strided_data(DWORD d3dvtVertexType, LPVOID lpvVertices, D3DDRAWPRIMITIVESTRIDEDDATA *strided, DWORD dwStartVertex);
281 extern void dump_D3DVOP(DWORD dwVertexOp);
282 extern void dump_D3DPV(DWORD dwFlags);
283 extern void multiply_matrix(LPD3DMATRIX,LPD3DMATRIX,LPD3DMATRIX);
284 extern void InitDefaultStateBlock(STATEBLOCK* lpStateBlock, int version);
285
286 extern const float id_mat[16];
287
288 /*****************************************************************************
289  * IDirect3D object methods
290  */
291 HRESULT WINAPI
292 Main_IDirect3DImpl_7_EnumDevices(LPDIRECT3D7 iface,
293                                  LPD3DENUMDEVICESCALLBACK7 lpEnumDevicesCallback,
294                                  LPVOID lpUserArg);
295
296 HRESULT WINAPI
297 Main_IDirect3DImpl_7_CreateDevice(LPDIRECT3D7 iface,
298                                   REFCLSID rclsid,
299                                   LPDIRECTDRAWSURFACE7 lpDDS,
300                                   LPDIRECT3DDEVICE7* lplpD3DDevice);
301
302 HRESULT WINAPI
303 Main_IDirect3DImpl_7_3T_CreateVertexBuffer(LPDIRECT3D7 iface,
304                                            LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,
305                                            LPDIRECT3DVERTEXBUFFER7* lplpD3DVertBuf,
306                                            DWORD dwFlags);
307
308 HRESULT WINAPI
309 Main_IDirect3DImpl_7_3T_EnumZBufferFormats(LPDIRECT3D7 iface,
310                                            REFCLSID riidDevice,
311                                            LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,
312                                            LPVOID lpContext);
313
314 HRESULT WINAPI
315 Main_IDirect3DImpl_7_3T_EvictManagedTextures(LPDIRECT3D7 iface);
316
317 HRESULT WINAPI
318 Main_IDirect3DImpl_3_2T_1T_EnumDevices(LPDIRECT3D3 iface,
319                                        LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
320                                        LPVOID lpUserArg);
321
322 HRESULT WINAPI
323 Main_IDirect3DImpl_3_2T_1T_CreateLight(LPDIRECT3D3 iface,
324                                        LPDIRECT3DLIGHT* lplpDirect3DLight,
325                                        IUnknown* pUnkOuter);
326
327 HRESULT WINAPI
328 Main_IDirect3DImpl_3_2T_1T_CreateMaterial(LPDIRECT3D3 iface,
329                                           LPDIRECT3DMATERIAL3* lplpDirect3DMaterial3,
330                                           IUnknown* pUnkOuter);
331
332 HRESULT WINAPI
333 Main_IDirect3DImpl_3_2T_1T_CreateViewport(LPDIRECT3D3 iface,
334                                           LPDIRECT3DVIEWPORT3* lplpD3DViewport3,
335                                           IUnknown* pUnkOuter);
336
337 HRESULT WINAPI
338 Main_IDirect3DImpl_3_2T_1T_FindDevice(LPDIRECT3D3 iface,
339                                       LPD3DFINDDEVICESEARCH lpD3DDFS,
340                                       LPD3DFINDDEVICERESULT lpD3DFDR);
341
342 HRESULT WINAPI
343 Main_IDirect3DImpl_3_CreateDevice(LPDIRECT3D3 iface,
344                                   REFCLSID rclsid,
345                                   LPDIRECTDRAWSURFACE4 lpDDS,
346                                   LPDIRECT3DDEVICE3* lplpD3DDevice3,
347                                   LPUNKNOWN lpUnk);
348
349 HRESULT WINAPI
350 Thunk_IDirect3DImpl_3_CreateVertexBuffer(LPDIRECT3D3 iface,
351                                          LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,
352                                          LPDIRECT3DVERTEXBUFFER* lplpD3DVertBuf,
353                                          DWORD dwFlags,
354                                          LPUNKNOWN lpUnk);
355
356 HRESULT WINAPI
357 Thunk_IDirect3DImpl_2_CreateMaterial(LPDIRECT3D2 iface,
358                                      LPDIRECT3DMATERIAL2* lplpDirect3DMaterial2,
359                                      IUnknown* pUnkOuter);
360
361 HRESULT WINAPI
362 Thunk_IDirect3DImpl_2_CreateViewport(LPDIRECT3D2 iface,
363                                      LPDIRECT3DVIEWPORT2* lplpD3DViewport2,
364                                      IUnknown* pUnkOuter);
365
366 HRESULT WINAPI
367 Main_IDirect3DImpl_2_CreateDevice(LPDIRECT3D2 iface,
368                                   REFCLSID rclsid,
369                                   LPDIRECTDRAWSURFACE lpDDS,
370                                   LPDIRECT3DDEVICE2* lplpD3DDevice2);
371
372 HRESULT WINAPI
373 Main_IDirect3DImpl_1_Initialize(LPDIRECT3D iface,
374                                 REFIID riid);
375
376 HRESULT WINAPI
377 Thunk_IDirect3DImpl_1_CreateMaterial(LPDIRECT3D iface,
378                                      LPDIRECT3DMATERIAL* lplpDirect3DMaterial,
379                                      IUnknown* pUnkOuter);
380
381 HRESULT WINAPI
382 Thunk_IDirect3DImpl_1_CreateViewport(LPDIRECT3D iface,
383                                      LPDIRECT3DVIEWPORT* lplpD3DViewport,
384                                      IUnknown* pUnkOuter);
385
386 HRESULT WINAPI
387 Main_IDirect3DImpl_1_FindDevice(LPDIRECT3D iface,
388                                 LPD3DFINDDEVICESEARCH lpD3DDFS,
389                                 LPD3DFINDDEVICERESULT lplpD3DDevice);
390
391 HRESULT WINAPI
392 Thunk_IDirect3DImpl_7_QueryInterface(LPDIRECT3D7 iface,
393                                      REFIID riid,
394                                      LPVOID* obp);
395
396 HRESULT WINAPI
397 Thunk_IDirect3DImpl_3_QueryInterface(LPDIRECT3D3 iface,
398                                      REFIID riid,
399                                      LPVOID* obp);
400
401 HRESULT WINAPI
402 Thunk_IDirect3DImpl_2_QueryInterface(LPDIRECT3D2 iface,
403                                      REFIID riid,
404                                      LPVOID* obp);
405
406 HRESULT WINAPI
407 Thunk_IDirect3DImpl_1_QueryInterface(LPDIRECT3D iface,
408                                      REFIID riid,
409                                      LPVOID* obp);
410
411 ULONG WINAPI
412 Thunk_IDirect3DImpl_7_AddRef(LPDIRECT3D7 iface);
413
414 ULONG WINAPI
415 Thunk_IDirect3DImpl_3_AddRef(LPDIRECT3D3 iface);
416
417 ULONG WINAPI
418 Thunk_IDirect3DImpl_2_AddRef(LPDIRECT3D2 iface);
419
420 ULONG WINAPI
421 Thunk_IDirect3DImpl_1_AddRef(LPDIRECT3D iface);
422
423 ULONG WINAPI
424 Thunk_IDirect3DImpl_7_Release(LPDIRECT3D7 iface);
425
426 ULONG WINAPI
427 Thunk_IDirect3DImpl_3_Release(LPDIRECT3D3 iface);
428
429 ULONG WINAPI
430 Thunk_IDirect3DImpl_2_Release(LPDIRECT3D2 iface);
431
432 ULONG WINAPI
433 Thunk_IDirect3DImpl_1_Release(LPDIRECT3D iface);
434
435 HRESULT WINAPI
436 Thunk_IDirect3DImpl_3_EnumZBufferFormats(LPDIRECT3D3 iface,
437                                          REFCLSID riidDevice,
438                                          LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,
439                                          LPVOID lpContext);
440
441 HRESULT WINAPI
442 Thunk_IDirect3DImpl_3_EvictManagedTextures(LPDIRECT3D3 iface);
443
444 HRESULT WINAPI
445 Thunk_IDirect3DImpl_2_EnumDevices(LPDIRECT3D2 iface,
446                                   LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
447                                   LPVOID lpUserArg);
448
449 HRESULT WINAPI
450 Thunk_IDirect3DImpl_1_EnumDevices(LPDIRECT3D iface,
451                                   LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
452                                   LPVOID lpUserArg);
453
454 HRESULT WINAPI
455 Thunk_IDirect3DImpl_2_CreateLight(LPDIRECT3D2 iface,
456                                   LPDIRECT3DLIGHT* lplpDirect3DLight,
457                                   IUnknown* pUnkOuter);
458
459 HRESULT WINAPI
460 Thunk_IDirect3DImpl_1_CreateLight(LPDIRECT3D iface,
461                                   LPDIRECT3DLIGHT* lplpDirect3DLight,
462                                   IUnknown* pUnkOuter);
463
464 HRESULT WINAPI
465 Thunk_IDirect3DImpl_1_FindDevice(LPDIRECT3D iface,
466                                  LPD3DFINDDEVICESEARCH lpD3DDFS,
467                                  LPD3DFINDDEVICERESULT lplpD3DDevice);
468
469 HRESULT WINAPI
470 Thunk_IDirect3DImpl_2_FindDevice(LPDIRECT3D2 iface,
471                                  LPD3DFINDDEVICESEARCH lpD3DDFS,
472                                  LPD3DFINDDEVICERESULT lpD3DFDR);
473
474 /*****************************************************************************
475  * IDirect3DDevice object methods
476  */
477 HRESULT WINAPI
478 Main_IDirect3DDeviceImpl_7_3T_2T_1T_QueryInterface(LPDIRECT3DDEVICE7 iface,
479                                                    REFIID riid,
480                                                    LPVOID* obp);
481
482 ULONG WINAPI
483 Main_IDirect3DDeviceImpl_7_3T_2T_1T_AddRef(LPDIRECT3DDEVICE7 iface);
484
485 ULONG WINAPI
486 Main_IDirect3DDeviceImpl_7_3T_2T_1T_Release(LPDIRECT3DDEVICE7 iface);
487
488 HRESULT WINAPI
489 Main_IDirect3DDeviceImpl_7_GetCaps(LPDIRECT3DDEVICE7 iface,
490                                    LPD3DDEVICEDESC7 lpD3DHELDevDesc);
491
492 HRESULT WINAPI
493 Main_IDirect3DDeviceImpl_7_3T_EnumTextureFormats(LPDIRECT3DDEVICE7 iface,
494                                                  LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc,
495                                                  LPVOID lpArg);
496
497 HRESULT WINAPI
498 Main_IDirect3DDeviceImpl_7_3T_2T_1T_BeginScene(LPDIRECT3DDEVICE7 iface);
499
500 HRESULT WINAPI
501 Main_IDirect3DDeviceImpl_7_3T_2T_1T_EndScene(LPDIRECT3DDEVICE7 iface);
502
503 HRESULT WINAPI
504 Main_IDirect3DDeviceImpl_7_3T_2T_1T_GetDirect3D(LPDIRECT3DDEVICE7 iface,
505                                                 LPDIRECT3D7* lplpDirect3D3);
506
507 HRESULT WINAPI
508 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderTarget(LPDIRECT3DDEVICE7 iface,
509                                                  LPDIRECTDRAWSURFACE7 lpNewRenderTarget,
510                                                  DWORD dwFlags);
511
512 HRESULT WINAPI
513 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderTarget(LPDIRECT3DDEVICE7 iface,
514                                                  LPDIRECTDRAWSURFACE7* lplpRenderTarget);
515
516 HRESULT WINAPI
517 Main_IDirect3DDeviceImpl_7_Clear(LPDIRECT3DDEVICE7 iface,
518                                  DWORD dwCount,
519                                  LPD3DRECT lpRects,
520                                  DWORD dwFlags,
521                                  D3DCOLOR dwColor,
522                                  D3DVALUE dvZ,
523                                  DWORD dwStencil);
524
525 HRESULT WINAPI
526 Main_IDirect3DDeviceImpl_7_3T_2T_SetTransform(LPDIRECT3DDEVICE7 iface,
527                                               D3DTRANSFORMSTATETYPE dtstTransformStateType,
528                                               LPD3DMATRIX lpD3DMatrix);
529
530 HRESULT WINAPI
531 Main_IDirect3DDeviceImpl_7_3T_2T_GetTransform(LPDIRECT3DDEVICE7 iface,
532                                               D3DTRANSFORMSTATETYPE dtstTransformStateType,
533                                               LPD3DMATRIX lpD3DMatrix);
534
535 HRESULT WINAPI
536 Main_IDirect3DDeviceImpl_7_SetViewport(LPDIRECT3DDEVICE7 iface,
537                                        LPD3DVIEWPORT7 lpData);
538
539 HRESULT WINAPI
540 Main_IDirect3DDeviceImpl_7_3T_2T_MultiplyTransform(LPDIRECT3DDEVICE7 iface,
541                                                    D3DTRANSFORMSTATETYPE dtstTransformStateType,
542                                                    LPD3DMATRIX lpD3DMatrix);
543
544 HRESULT WINAPI
545 Main_IDirect3DDeviceImpl_7_GetViewport(LPDIRECT3DDEVICE7 iface,
546                                        LPD3DVIEWPORT7 lpData);
547
548 HRESULT WINAPI
549 Main_IDirect3DDeviceImpl_7_SetMaterial(LPDIRECT3DDEVICE7 iface,
550                                        LPD3DMATERIAL7 lpMat);
551
552 HRESULT WINAPI
553 Main_IDirect3DDeviceImpl_7_GetMaterial(LPDIRECT3DDEVICE7 iface,
554                                        LPD3DMATERIAL7 lpMat);
555
556 HRESULT WINAPI
557 Main_IDirect3DDeviceImpl_7_SetLight(LPDIRECT3DDEVICE7 iface,
558                                     DWORD dwLightIndex,
559                                     LPD3DLIGHT7 lpLight);
560
561 HRESULT WINAPI
562 Main_IDirect3DDeviceImpl_7_GetLight(LPDIRECT3DDEVICE7 iface,
563                                     DWORD dwLightIndex,
564                                     LPD3DLIGHT7 lpLight);
565
566 HRESULT WINAPI
567 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderState(LPDIRECT3DDEVICE7 iface,
568                                                 D3DRENDERSTATETYPE dwRenderStateType,
569                                                 DWORD dwRenderState);
570
571 HRESULT WINAPI
572 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderState(LPDIRECT3DDEVICE7 iface,
573                                                 D3DRENDERSTATETYPE dwRenderStateType,
574                                                 LPDWORD lpdwRenderState);
575
576 HRESULT WINAPI
577 Main_IDirect3DDeviceImpl_7_BeginStateBlock(LPDIRECT3DDEVICE7 iface);
578
579 HRESULT WINAPI
580 Main_IDirect3DDeviceImpl_7_EndStateBlock(LPDIRECT3DDEVICE7 iface,
581                                          LPDWORD lpdwBlockHandle);
582
583 HRESULT WINAPI
584 Main_IDirect3DDeviceImpl_7_PreLoad(LPDIRECT3DDEVICE7 iface,
585                                    LPDIRECTDRAWSURFACE7 lpddsTexture);
586
587 HRESULT WINAPI
588 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitive(LPDIRECT3DDEVICE7 iface,
589                                             D3DPRIMITIVETYPE d3dptPrimitiveType,
590                                             DWORD d3dvtVertexType,
591                                             LPVOID lpvVertices,
592                                             DWORD dwVertexCount,
593                                             DWORD dwFlags);
594
595 HRESULT WINAPI
596 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitive(LPDIRECT3DDEVICE7 iface,
597                                                    D3DPRIMITIVETYPE d3dptPrimitiveType,
598                                                    DWORD d3dvtVertexType,
599                                                    LPVOID lpvVertices,
600                                                    DWORD dwVertexCount,
601                                                    LPWORD dwIndices,
602                                                    DWORD dwIndexCount,
603                                                    DWORD dwFlags);
604
605 HRESULT WINAPI
606 Main_IDirect3DDeviceImpl_7_3T_2T_SetClipStatus(LPDIRECT3DDEVICE7 iface,
607                                                LPD3DCLIPSTATUS lpD3DClipStatus);
608
609 HRESULT WINAPI
610 Main_IDirect3DDeviceImpl_7_3T_2T_GetClipStatus(LPDIRECT3DDEVICE7 iface,
611                                                LPD3DCLIPSTATUS lpD3DClipStatus);
612
613 HRESULT WINAPI
614 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveStrided(LPDIRECT3DDEVICE7 iface,
615                                                    D3DPRIMITIVETYPE d3dptPrimitiveType,
616                                                    DWORD dwVertexType,
617                                                    LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
618                                                    DWORD dwVertexCount,
619                                                    DWORD dwFlags);
620
621 HRESULT WINAPI
622 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE7 iface,
623                                                           D3DPRIMITIVETYPE d3dptPrimitiveType,
624                                                           DWORD dwVertexType,
625                                                           LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
626                                                           DWORD dwVertexCount,
627                                                           LPWORD lpIndex,
628                                                           DWORD dwIndexCount,
629                                                           DWORD dwFlags);
630
631 HRESULT WINAPI
632 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveVB(LPDIRECT3DDEVICE7 iface,
633                                               D3DPRIMITIVETYPE d3dptPrimitiveType,
634                                               LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,
635                                               DWORD dwStartVertex,
636                                               DWORD dwNumVertices,
637                                               DWORD dwFlags);
638
639 HRESULT WINAPI
640 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE7 iface,
641                                                      D3DPRIMITIVETYPE d3dptPrimitiveType,
642                                                      LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,
643                                                      DWORD dwStartVertex,
644                                                      DWORD dwNumVertices,
645                                                      LPWORD lpwIndices,
646                                                      DWORD dwIndexCount,
647                                                      DWORD dwFlags);
648
649 HRESULT WINAPI
650 Main_IDirect3DDeviceImpl_7_3T_ComputeSphereVisibility(LPDIRECT3DDEVICE7 iface,
651                                                       LPD3DVECTOR lpCenters,
652                                                       LPD3DVALUE lpRadii,
653                                                       DWORD dwNumSpheres,
654                                                       DWORD dwFlags,
655                                                       LPDWORD lpdwReturnValues);
656
657 HRESULT WINAPI
658 Main_IDirect3DDeviceImpl_7_3T_GetTexture(LPDIRECT3DDEVICE7 iface,
659                                          DWORD dwStage,
660                                          LPDIRECTDRAWSURFACE7* lpTexture);
661
662 HRESULT WINAPI
663 Main_IDirect3DDeviceImpl_7_3T_SetTexture(LPDIRECT3DDEVICE7 iface,
664                                          DWORD dwStage,
665                                          LPDIRECTDRAWSURFACE7 lpTexture);
666
667 HRESULT WINAPI
668 Main_IDirect3DDeviceImpl_7_3T_GetTextureStageState(LPDIRECT3DDEVICE7 iface,
669                                                    DWORD dwStage,
670                                                    D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
671                                                    LPDWORD lpdwState);
672
673 HRESULT WINAPI
674 Main_IDirect3DDeviceImpl_7_3T_SetTextureStageState(LPDIRECT3DDEVICE7 iface,
675                                                    DWORD dwStage,
676                                                    D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
677                                                    DWORD dwState);
678
679 HRESULT WINAPI
680 Main_IDirect3DDeviceImpl_7_3T_ValidateDevice(LPDIRECT3DDEVICE7 iface,
681                                              LPDWORD lpdwPasses);
682
683 HRESULT WINAPI
684 Main_IDirect3DDeviceImpl_7_ApplyStateBlock(LPDIRECT3DDEVICE7 iface,
685                                            DWORD dwBlockHandle);
686
687 HRESULT WINAPI
688 Main_IDirect3DDeviceImpl_7_CaptureStateBlock(LPDIRECT3DDEVICE7 iface,
689                                              DWORD dwBlockHandle);
690
691 HRESULT WINAPI
692 Main_IDirect3DDeviceImpl_7_DeleteStateBlock(LPDIRECT3DDEVICE7 iface,
693                                             DWORD dwBlockHandle);
694
695 HRESULT WINAPI
696 Main_IDirect3DDeviceImpl_7_CreateStateBlock(LPDIRECT3DDEVICE7 iface,
697                                             D3DSTATEBLOCKTYPE d3dsbType,
698                                             LPDWORD lpdwBlockHandle);
699
700 HRESULT WINAPI
701 Main_IDirect3DDeviceImpl_7_Load(LPDIRECT3DDEVICE7 iface,
702                                 LPDIRECTDRAWSURFACE7 lpDestTex,
703                                 LPPOINT lpDestPoint,
704                                 LPDIRECTDRAWSURFACE7 lpSrcTex,
705                                 LPRECT lprcSrcRect,
706                                 DWORD dwFlags);
707
708 HRESULT WINAPI
709 Main_IDirect3DDeviceImpl_7_LightEnable(LPDIRECT3DDEVICE7 iface,
710                                        DWORD dwLightIndex,
711                                        BOOL bEnable);
712
713 HRESULT WINAPI
714 Main_IDirect3DDeviceImpl_7_GetLightEnable(LPDIRECT3DDEVICE7 iface,
715                                           DWORD dwLightIndex,
716                                           BOOL* pbEnable);
717
718 HRESULT WINAPI
719 Main_IDirect3DDeviceImpl_7_SetClipPlane(LPDIRECT3DDEVICE7 iface,
720                                         DWORD dwIndex,
721                                         D3DVALUE* pPlaneEquation);
722
723 HRESULT WINAPI
724 Main_IDirect3DDeviceImpl_7_GetClipPlane(LPDIRECT3DDEVICE7 iface,
725                                         DWORD dwIndex,
726                                         D3DVALUE* pPlaneEquation);
727
728 HRESULT WINAPI
729 Main_IDirect3DDeviceImpl_7_GetInfo(LPDIRECT3DDEVICE7 iface,
730                                    DWORD dwDevInfoID,
731                                    LPVOID pDevInfoStruct,
732                                    DWORD dwSize);
733
734 HRESULT WINAPI
735 Main_IDirect3DDeviceImpl_3_2T_1T_GetCaps(LPDIRECT3DDEVICE3 iface,
736                                          LPD3DDEVICEDESC lpD3DHWDevDesc,
737                                          LPD3DDEVICEDESC lpD3DHELDevDesc);
738
739 HRESULT WINAPI
740 Main_IDirect3DDeviceImpl_3_2T_1T_GetStats(LPDIRECT3DDEVICE3 iface,
741                                           LPD3DSTATS lpD3DStats);
742
743 HRESULT WINAPI
744 Main_IDirect3DDeviceImpl_3_2T_1T_AddViewport(LPDIRECT3DDEVICE3 iface,
745                                              LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
746
747 HRESULT WINAPI
748 Main_IDirect3DDeviceImpl_3_2T_1T_DeleteViewport(LPDIRECT3DDEVICE3 iface,
749                                                 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
750
751 HRESULT WINAPI
752 Main_IDirect3DDeviceImpl_3_2T_1T_NextViewport(LPDIRECT3DDEVICE3 iface,
753                                               LPDIRECT3DVIEWPORT3 lpDirect3DViewport3,
754                                               LPDIRECT3DVIEWPORT3* lplpDirect3DViewport3,
755                                               DWORD dwFlags);
756
757 HRESULT WINAPI
758 Main_IDirect3DDeviceImpl_3_2T_SetCurrentViewport(LPDIRECT3DDEVICE3 iface,
759                                                  LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
760
761 HRESULT WINAPI
762 Main_IDirect3DDeviceImpl_3_2T_GetCurrentViewport(LPDIRECT3DDEVICE3 iface,
763                                                  LPDIRECT3DVIEWPORT3* lplpDirect3DViewport3);
764
765 HRESULT WINAPI
766 Main_IDirect3DDeviceImpl_3_Begin(LPDIRECT3DDEVICE3 iface,
767                                  D3DPRIMITIVETYPE d3dptPrimitiveType,
768                                  DWORD dwVertexTypeDesc,
769                                  DWORD dwFlags);
770
771 HRESULT WINAPI
772 Main_IDirect3DDeviceImpl_3_BeginIndexed(LPDIRECT3DDEVICE3 iface,
773                                         D3DPRIMITIVETYPE d3dptPrimitiveType,
774                                         DWORD d3dvtVertexType,
775                                         LPVOID lpvVertices,
776                                         DWORD dwNumVertices,
777                                         DWORD dwFlags);
778
779 HRESULT WINAPI
780 Main_IDirect3DDeviceImpl_3_2T_Vertex(LPDIRECT3DDEVICE3 iface,
781                                      LPVOID lpVertexType);
782
783 HRESULT WINAPI
784 Main_IDirect3DDeviceImpl_3_2T_Index(LPDIRECT3DDEVICE3 iface,
785                                     WORD wVertexIndex);
786
787 HRESULT WINAPI
788 Main_IDirect3DDeviceImpl_3_2T_End(LPDIRECT3DDEVICE3 iface,
789                                   DWORD dwFlags);
790
791 HRESULT WINAPI
792 Main_IDirect3DDeviceImpl_3_2T_GetLightState(LPDIRECT3DDEVICE3 iface,
793                                             D3DLIGHTSTATETYPE dwLightStateType,
794                                             LPDWORD lpdwLightState);
795
796 HRESULT WINAPI
797 Main_IDirect3DDeviceImpl_3_2T_SetLightState(LPDIRECT3DDEVICE3 iface,
798                                             D3DLIGHTSTATETYPE dwLightStateType,
799                                             DWORD dwLightState);
800
801 HRESULT WINAPI
802 Main_IDirect3DDeviceImpl_2_1T_SwapTextureHandles(LPDIRECT3DDEVICE2 iface,
803                                                  LPDIRECT3DTEXTURE2 lpD3DTex1,
804                                                  LPDIRECT3DTEXTURE2 lpD3DTex2);
805
806 HRESULT WINAPI
807 Main_IDirect3DDeviceImpl_2_1T_EnumTextureFormats(LPDIRECT3DDEVICE2 iface,
808                                                  LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc,
809                                                  LPVOID lpArg);
810
811 HRESULT WINAPI
812 Main_IDirect3DDeviceImpl_2_Begin(LPDIRECT3DDEVICE2 iface,
813                                  D3DPRIMITIVETYPE d3dpt,
814                                  D3DVERTEXTYPE dwVertexTypeDesc,
815                                  DWORD dwFlags);
816
817 HRESULT WINAPI
818 Main_IDirect3DDeviceImpl_2_BeginIndexed(LPDIRECT3DDEVICE2 iface,
819                                         D3DPRIMITIVETYPE d3dptPrimitiveType,
820                                         D3DVERTEXTYPE d3dvtVertexType,
821                                         LPVOID lpvVertices,
822                                         DWORD dwNumVertices,
823                                         DWORD dwFlags);
824
825 HRESULT WINAPI
826 Main_IDirect3DDeviceImpl_2_DrawPrimitive(LPDIRECT3DDEVICE2 iface,
827                                          D3DPRIMITIVETYPE d3dptPrimitiveType,
828                                          D3DVERTEXTYPE d3dvtVertexType,
829                                          LPVOID lpvVertices,
830                                          DWORD dwVertexCount,
831                                          DWORD dwFlags);
832
833 HRESULT WINAPI
834 Main_IDirect3DDeviceImpl_2_DrawIndexedPrimitive(LPDIRECT3DDEVICE2 iface,
835                                                 D3DPRIMITIVETYPE d3dptPrimitiveType,
836                                                 D3DVERTEXTYPE d3dvtVertexType,
837                                                 LPVOID lpvVertices,
838                                                 DWORD dwVertexCount,
839                                                 LPWORD dwIndices,
840                                                 DWORD dwIndexCount,
841                                                 DWORD dwFlags);
842
843 HRESULT WINAPI
844 Main_IDirect3DDeviceImpl_1_Initialize(LPDIRECT3DDEVICE iface,
845                                       LPDIRECT3D lpDirect3D,
846                                       LPGUID lpGUID,
847                                       LPD3DDEVICEDESC lpD3DDVDesc);
848
849 HRESULT WINAPI
850 Main_IDirect3DDeviceImpl_1_CreateExecuteBuffer(LPDIRECT3DDEVICE iface,
851                                                LPD3DEXECUTEBUFFERDESC lpDesc,
852                                                LPDIRECT3DEXECUTEBUFFER* lplpDirect3DExecuteBuffer,
853                                                IUnknown* pUnkOuter);
854
855 HRESULT WINAPI
856 Main_IDirect3DDeviceImpl_1_Execute(LPDIRECT3DDEVICE iface,
857                                    LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
858                                    LPDIRECT3DVIEWPORT lpDirect3DViewport,
859                                    DWORD dwFlags);
860
861 HRESULT WINAPI
862 Main_IDirect3DDeviceImpl_1_Pick(LPDIRECT3DDEVICE iface,
863                                 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
864                                 LPDIRECT3DVIEWPORT lpDirect3DViewport,
865                                 DWORD dwFlags,
866                                 LPD3DRECT lpRect);
867
868 HRESULT WINAPI
869 Main_IDirect3DDeviceImpl_1_GetPickRecords(LPDIRECT3DDEVICE iface,
870                                           LPDWORD lpCount,
871                                           LPD3DPICKRECORD lpD3DPickRec);
872
873 HRESULT WINAPI
874 Main_IDirect3DDeviceImpl_1_CreateMatrix(LPDIRECT3DDEVICE iface,
875                                         LPD3DMATRIXHANDLE lpD3DMatHandle);
876
877 HRESULT WINAPI
878 Main_IDirect3DDeviceImpl_1_SetMatrix(LPDIRECT3DDEVICE iface,
879                                      D3DMATRIXHANDLE D3DMatHandle,
880                                      LPD3DMATRIX lpD3DMatrix);
881
882 HRESULT WINAPI
883 Main_IDirect3DDeviceImpl_1_GetMatrix(LPDIRECT3DDEVICE iface,
884                                      D3DMATRIXHANDLE D3DMatHandle,
885                                      LPD3DMATRIX lpD3DMatrix);
886
887 HRESULT WINAPI
888 Main_IDirect3DDeviceImpl_1_DeleteMatrix(LPDIRECT3DDEVICE iface,
889                                         D3DMATRIXHANDLE D3DMatHandle);
890
891 HRESULT WINAPI
892 Thunk_IDirect3DDeviceImpl_3_QueryInterface(LPDIRECT3DDEVICE3 iface,
893                                            REFIID riid,
894                                            LPVOID* obp);
895
896 HRESULT WINAPI
897 Thunk_IDirect3DDeviceImpl_2_QueryInterface(LPDIRECT3DDEVICE2 iface,
898                                            REFIID riid,
899                                            LPVOID* obp);
900
901 HRESULT WINAPI
902 Thunk_IDirect3DDeviceImpl_1_QueryInterface(LPDIRECT3DDEVICE iface,
903                                            REFIID riid,
904                                            LPVOID* obp);
905
906 ULONG WINAPI
907 Thunk_IDirect3DDeviceImpl_3_AddRef(LPDIRECT3DDEVICE3 iface);
908
909 ULONG WINAPI
910 Thunk_IDirect3DDeviceImpl_2_AddRef(LPDIRECT3DDEVICE2 iface);
911
912 ULONG WINAPI
913 Thunk_IDirect3DDeviceImpl_1_AddRef(LPDIRECT3DDEVICE iface);
914
915 ULONG WINAPI
916 Thunk_IDirect3DDeviceImpl_3_Release(LPDIRECT3DDEVICE3 iface);
917
918 ULONG WINAPI
919 Thunk_IDirect3DDeviceImpl_2_Release(LPDIRECT3DDEVICE2 iface);
920
921 ULONG WINAPI
922 Thunk_IDirect3DDeviceImpl_1_Release(LPDIRECT3DDEVICE iface);
923
924 HRESULT WINAPI
925 Thunk_IDirect3DDeviceImpl_2_AddViewport(LPDIRECT3DDEVICE2 iface,
926                                         LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
927
928 HRESULT WINAPI
929 Thunk_IDirect3DDeviceImpl_1_AddViewport(LPDIRECT3DDEVICE iface,
930                                         LPDIRECT3DVIEWPORT lpDirect3DViewport);
931
932 HRESULT WINAPI
933 Thunk_IDirect3DDeviceImpl_2_DeleteViewport(LPDIRECT3DDEVICE2 iface,
934                                            LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
935
936 HRESULT WINAPI
937 Thunk_IDirect3DDeviceImpl_1_DeleteViewport(LPDIRECT3DDEVICE iface,
938                                            LPDIRECT3DVIEWPORT lpDirect3DViewport);
939
940 HRESULT WINAPI
941 Thunk_IDirect3DDeviceImpl_2_NextViewport(LPDIRECT3DDEVICE3 iface,
942                                          LPDIRECT3DVIEWPORT2 lpDirect3DViewport2,
943                                          LPDIRECT3DVIEWPORT2* lplpDirect3DViewport2,
944                                          DWORD dwFlags);
945
946 HRESULT WINAPI
947 Thunk_IDirect3DDeviceImpl_1_NextViewport(LPDIRECT3DDEVICE3 iface,
948                                          LPDIRECT3DVIEWPORT lpDirect3DViewport,
949                                          LPDIRECT3DVIEWPORT* lplpDirect3DViewport,
950                                          DWORD dwFlags);
951
952 HRESULT WINAPI
953 Thunk_IDirect3DDeviceImpl_3_GetDirect3D(LPDIRECT3DDEVICE3 iface,
954                                         LPDIRECT3D3* lplpDirect3D3);
955
956 HRESULT WINAPI
957 Thunk_IDirect3DDeviceImpl_2_GetDirect3D(LPDIRECT3DDEVICE2 iface,
958                                         LPDIRECT3D2* lplpDirect3D2);
959
960 HRESULT WINAPI
961 Thunk_IDirect3DDeviceImpl_1_GetDirect3D(LPDIRECT3DDEVICE iface,
962                                         LPDIRECT3D* lplpDirect3D);
963
964 HRESULT WINAPI
965 Thunk_IDirect3DDeviceImpl_2_SetCurrentViewport(LPDIRECT3DDEVICE2 iface,
966                                                LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
967
968 HRESULT WINAPI
969 Thunk_IDirect3DDeviceImpl_2_GetCurrentViewport(LPDIRECT3DDEVICE2 iface,
970                                                LPDIRECT3DVIEWPORT2* lpDirect3DViewport2);
971
972 HRESULT WINAPI
973 Thunk_IDirect3DDeviceImpl_3_EnumTextureFormats(LPDIRECT3DDEVICE3 iface,
974                                                LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc,
975                                                LPVOID lpArg);
976
977 HRESULT WINAPI
978 Thunk_IDirect3DDeviceImpl_3_BeginScene(LPDIRECT3DDEVICE3 iface);
979
980 HRESULT WINAPI
981 Thunk_IDirect3DDeviceImpl_2_BeginScene(LPDIRECT3DDEVICE2 iface);
982
983 HRESULT WINAPI
984 Thunk_IDirect3DDeviceImpl_1_BeginScene(LPDIRECT3DDEVICE iface);
985
986 HRESULT WINAPI
987 Thunk_IDirect3DDeviceImpl_3_EndScene(LPDIRECT3DDEVICE3 iface);
988
989 HRESULT WINAPI
990 Thunk_IDirect3DDeviceImpl_2_EndScene(LPDIRECT3DDEVICE2 iface);
991
992 HRESULT WINAPI
993 Thunk_IDirect3DDeviceImpl_1_EndScene(LPDIRECT3DDEVICE iface);
994
995 HRESULT WINAPI
996 Thunk_IDirect3DDeviceImpl_3_SetTransform(LPDIRECT3DDEVICE3 iface,
997                                          D3DTRANSFORMSTATETYPE dtstTransformStateType,
998                                          LPD3DMATRIX lpD3DMatrix);
999
1000 HRESULT WINAPI
1001 Thunk_IDirect3DDeviceImpl_2_SetTransform(LPDIRECT3DDEVICE2 iface,
1002                                          D3DTRANSFORMSTATETYPE dtstTransformStateType,
1003                                          LPD3DMATRIX lpD3DMatrix);
1004
1005 HRESULT WINAPI
1006 Thunk_IDirect3DDeviceImpl_3_GetTransform(LPDIRECT3DDEVICE3 iface,
1007                                          D3DTRANSFORMSTATETYPE dtstTransformStateType,
1008                                          LPD3DMATRIX lpD3DMatrix);
1009
1010 HRESULT WINAPI
1011 Thunk_IDirect3DDeviceImpl_2_GetTransform(LPDIRECT3DDEVICE2 iface,
1012                                          D3DTRANSFORMSTATETYPE dtstTransformStateType,
1013                                          LPD3DMATRIX lpD3DMatrix);
1014
1015 HRESULT WINAPI
1016 Thunk_IDirect3DDeviceImpl_3_MultiplyTransform(LPDIRECT3DDEVICE3 iface,
1017                                               D3DTRANSFORMSTATETYPE dtstTransformStateType,
1018                                               LPD3DMATRIX lpD3DMatrix);
1019
1020 HRESULT WINAPI
1021 Thunk_IDirect3DDeviceImpl_2_MultiplyTransform(LPDIRECT3DDEVICE2 iface,
1022                                               D3DTRANSFORMSTATETYPE dtstTransformStateType,
1023                                               LPD3DMATRIX lpD3DMatrix);
1024
1025 HRESULT WINAPI
1026 Thunk_IDirect3DDeviceImpl_3_SetRenderState(LPDIRECT3DDEVICE3 iface,
1027                                            D3DRENDERSTATETYPE dwRenderStateType,
1028                                            DWORD dwRenderState);
1029
1030 HRESULT WINAPI
1031 Thunk_IDirect3DDeviceImpl_2_SetRenderState(LPDIRECT3DDEVICE2 iface,
1032                                            D3DRENDERSTATETYPE dwRenderStateType,
1033                                            DWORD dwRenderState);
1034
1035 HRESULT WINAPI
1036 Thunk_IDirect3DDeviceImpl_3_GetRenderState(LPDIRECT3DDEVICE3 iface,
1037                                            D3DRENDERSTATETYPE dwRenderStateType,
1038                                            LPDWORD lpdwRenderState);
1039
1040 HRESULT WINAPI
1041 Thunk_IDirect3DDeviceImpl_2_GetRenderState(LPDIRECT3DDEVICE2 iface,
1042                                            D3DRENDERSTATETYPE dwRenderStateType,
1043                                            LPDWORD lpdwRenderState);
1044
1045 HRESULT WINAPI
1046 Thunk_IDirect3DDeviceImpl_3_DrawPrimitive(LPDIRECT3DDEVICE3 iface,
1047                                           D3DPRIMITIVETYPE d3dptPrimitiveType,
1048                                           DWORD d3dvtVertexType,
1049                                           LPVOID lpvVertices,
1050                                           DWORD dwVertexCount,
1051                                           DWORD dwFlags);
1052
1053 HRESULT WINAPI
1054 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitive(LPDIRECT3DDEVICE3 iface,
1055                                                  D3DPRIMITIVETYPE d3dptPrimitiveType,
1056                                                  DWORD d3dvtVertexType,
1057                                                  LPVOID lpvVertices,
1058                                                  DWORD dwVertexCount,
1059                                                  LPWORD dwIndices,
1060                                                  DWORD dwIndexCount,
1061                                                  DWORD dwFlags);
1062
1063 HRESULT WINAPI
1064 Thunk_IDirect3DDeviceImpl_3_SetClipStatus(LPDIRECT3DDEVICE3 iface,
1065                                           LPD3DCLIPSTATUS lpD3DClipStatus);
1066
1067 HRESULT WINAPI
1068 Thunk_IDirect3DDeviceImpl_2_SetClipStatus(LPDIRECT3DDEVICE2 iface,
1069                                           LPD3DCLIPSTATUS lpD3DClipStatus);
1070
1071 HRESULT WINAPI
1072 Thunk_IDirect3DDeviceImpl_3_GetClipStatus(LPDIRECT3DDEVICE3 iface,
1073                                           LPD3DCLIPSTATUS lpD3DClipStatus);
1074
1075 HRESULT WINAPI
1076 Thunk_IDirect3DDeviceImpl_2_GetClipStatus(LPDIRECT3DDEVICE2 iface,
1077                                           LPD3DCLIPSTATUS lpD3DClipStatus);
1078
1079 HRESULT WINAPI
1080 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveStrided(LPDIRECT3DDEVICE3 iface,
1081                                                  D3DPRIMITIVETYPE d3dptPrimitiveType,
1082                                                  DWORD dwVertexType,
1083                                                  LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
1084                                                  DWORD dwVertexCount,
1085                                                  DWORD dwFlags);
1086
1087 HRESULT WINAPI
1088 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE3 iface,
1089                                                         D3DPRIMITIVETYPE d3dptPrimitiveType,
1090                                                         DWORD dwVertexType,
1091                                                         LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
1092                                                         DWORD dwVertexCount,
1093                                                         LPWORD lpIndex,
1094                                                         DWORD dwIndexCount,
1095                                                         DWORD dwFlags);
1096
1097 HRESULT WINAPI
1098 Thunk_IDirect3DDeviceImpl_3_ComputeSphereVisibility(LPDIRECT3DDEVICE3 iface,
1099                                                     LPD3DVECTOR lpCenters,
1100                                                     LPD3DVALUE lpRadii,
1101                                                     DWORD dwNumSpheres,
1102                                                     DWORD dwFlags,
1103                                                     LPDWORD lpdwReturnValues);
1104
1105 HRESULT WINAPI
1106 Thunk_IDirect3DDeviceImpl_3_GetTextureStageState(LPDIRECT3DDEVICE3 iface,
1107                                                  DWORD dwStage,
1108                                                  D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
1109                                                  LPDWORD lpdwState);
1110
1111 HRESULT WINAPI
1112 Thunk_IDirect3DDeviceImpl_3_SetTextureStageState(LPDIRECT3DDEVICE3 iface,
1113                                                  DWORD dwStage,
1114                                                  D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
1115                                                  DWORD dwState);
1116
1117 HRESULT WINAPI
1118 Thunk_IDirect3DDeviceImpl_3_ValidateDevice(LPDIRECT3DDEVICE3 iface,
1119                                            LPDWORD lpdwPasses);
1120
1121 HRESULT WINAPI
1122 Thunk_IDirect3DDeviceImpl_2_GetCaps(LPDIRECT3DDEVICE2 iface,
1123                                     LPD3DDEVICEDESC lpD3DHWDevDesc,
1124                                     LPD3DDEVICEDESC lpD3DHELDevDesc);
1125
1126 HRESULT WINAPI
1127 Thunk_IDirect3DDeviceImpl_1_GetCaps(LPDIRECT3DDEVICE iface,
1128                                     LPD3DDEVICEDESC lpD3DHWDevDesc,
1129                                     LPD3DDEVICEDESC lpD3DHELDevDesc);
1130
1131 HRESULT WINAPI
1132 Thunk_IDirect3DDeviceImpl_1_SwapTextureHandles(LPDIRECT3DDEVICE iface,
1133                                                LPDIRECT3DTEXTURE lpD3Dtex1,
1134                                                LPDIRECT3DTEXTURE lpD3DTex2);
1135
1136 HRESULT WINAPI
1137 Thunk_IDirect3DDeviceImpl_2_GetStats(LPDIRECT3DDEVICE2 iface,
1138                                      LPD3DSTATS lpD3DStats);
1139
1140 HRESULT WINAPI
1141 Thunk_IDirect3DDeviceImpl_1_GetStats(LPDIRECT3DDEVICE iface,
1142                                      LPD3DSTATS lpD3DStats);
1143
1144 HRESULT WINAPI
1145 Thunk_IDirect3DDeviceImpl_3_SetRenderTarget(LPDIRECT3DDEVICE3 iface,
1146                                             LPDIRECTDRAWSURFACE4 lpNewRenderTarget,
1147                                             DWORD dwFlags);
1148
1149 HRESULT WINAPI
1150 Thunk_IDirect3DDeviceImpl_3_GetRenderTarget(LPDIRECT3DDEVICE3 iface,
1151                                             LPDIRECTDRAWSURFACE4* lplpRenderTarget);
1152
1153 HRESULT WINAPI
1154 Thunk_IDirect3DDeviceImpl_2_SetRenderTarget(LPDIRECT3DDEVICE2 iface,
1155                                             LPDIRECTDRAWSURFACE lpNewRenderTarget,
1156                                             DWORD dwFlags);
1157
1158 HRESULT WINAPI
1159 Thunk_IDirect3DDeviceImpl_2_GetRenderTarget(LPDIRECT3DDEVICE2 iface,
1160                                             LPDIRECTDRAWSURFACE* lplpRenderTarget);
1161
1162 HRESULT WINAPI
1163 Thunk_IDirect3DDeviceImpl_2_Vertex(LPDIRECT3DDEVICE2 iface,
1164                                    LPVOID lpVertexType);
1165
1166 HRESULT WINAPI
1167 Thunk_IDirect3DDeviceImpl_2_Index(LPDIRECT3DDEVICE2 iface,
1168                                   WORD wVertexIndex);
1169
1170 HRESULT WINAPI
1171 Thunk_IDirect3DDeviceImpl_2_End(LPDIRECT3DDEVICE2 iface,
1172                                 DWORD dwFlags);
1173
1174 HRESULT WINAPI
1175 Thunk_IDirect3DDeviceImpl_2_GetLightState(LPDIRECT3DDEVICE2 iface,
1176                                           D3DLIGHTSTATETYPE dwLightStateType,
1177                                           LPDWORD lpdwLightState);
1178
1179 HRESULT WINAPI
1180 Thunk_IDirect3DDeviceImpl_2_SetLightState(LPDIRECT3DDEVICE2 iface,
1181                                           D3DLIGHTSTATETYPE dwLightStateType,
1182                                           DWORD dwLightState);
1183
1184 HRESULT WINAPI
1185 Thunk_IDirect3DDeviceImpl_1_EnumTextureFormats(LPDIRECT3DDEVICE iface,
1186                                                LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc,
1187                                                LPVOID lpArg);
1188
1189 HRESULT WINAPI
1190 Thunk_IDirect3DDeviceImpl_3_SetTexture(LPDIRECT3DDEVICE3 iface,
1191                                        DWORD dwStage,
1192                                        LPDIRECT3DTEXTURE2 lpTexture2);
1193
1194 HRESULT WINAPI
1195 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveVB(LPDIRECT3DDEVICE3 iface,
1196                                             D3DPRIMITIVETYPE d3dptPrimitiveType,
1197                                             LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,
1198                                             DWORD dwStartVertex,
1199                                             DWORD dwNumVertices,
1200                                             DWORD dwFlags);
1201
1202 HRESULT WINAPI
1203 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE3 iface,
1204                                                    D3DPRIMITIVETYPE d3dptPrimitiveType,
1205                                                    LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,
1206                                                    LPWORD lpwIndices,
1207                                                    DWORD dwIndexCount,
1208                                                    DWORD dwFlags);
1209
1210 HRESULT WINAPI
1211 Thunk_IDirect3DDeviceImpl_3_GetTexture(LPDIRECT3DDEVICE3 iface,
1212                                        DWORD dwStage,
1213                                        LPDIRECT3DTEXTURE2* lplpTexture2);
1214
1215 #endif /* __GRAPHICS_WINE_D3D_PRIVATE_H */