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