Add PAGE_GUARD flag to the returned protection of guard pages.
[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 num_set_lights;
229     DWORD max_active_lights;
230     LPD3DLIGHT7 light_parameters;
231     DWORD *active_lights;
232
233     /* clipping planes */
234     DWORD max_clipping_planes;
235     d3d7clippingplane *clipping_planes;
236     
237     void (*set_context)(IDirect3DDeviceImpl*);
238     HRESULT (*clear)(IDirect3DDeviceImpl *This,
239                      DWORD dwCount,
240                      LPD3DRECT lpRects,
241                      DWORD dwFlags,
242                      DWORD dwColor,
243                      D3DVALUE dvZ,
244                      DWORD dwStencil);
245     void (*matrices_updated)(IDirect3DDeviceImpl *This, DWORD matrices);
246     void (*set_matrices)(IDirect3DDeviceImpl *This, DWORD matrices,
247                          D3DMATRIX *world_mat, D3DMATRIX *view_mat, D3DMATRIX *proj_mat);
248     void (*flush_to_framebuffer)(IDirect3DDeviceImpl *This, LPCRECT pRect, IDirectDrawSurfaceImpl *surf);
249
250     STATEBLOCK state_block;
251
252     /* Used to prevent locks and rendering to overlap */
253     CRITICAL_SECTION crit;
254 };
255
256 /*****************************************************************************
257  * IDirect3DVertexBuffer implementation structure
258  */
259 struct IDirect3DVertexBufferImpl
260 {
261     ICOM_VFIELD_MULTI(IDirect3DVertexBuffer7);
262     ICOM_VFIELD_MULTI(IDirect3DVertexBuffer);
263     DWORD ref;
264     IDirectDrawImpl *d3d;
265     D3DVERTEXBUFFERDESC desc;
266     LPVOID *vertices;
267     DWORD vertex_buffer_size;
268
269     BOOLEAN processed;
270 };
271
272 /* Various dump and helper functions */
273 #define GET_TEXCOUNT_FROM_FVF(d3dvtVertexType) \
274     (((d3dvtVertexType) & D3DFVF_TEXCOUNT_MASK) >> D3DFVF_TEXCOUNT_SHIFT)
275
276 #define GET_TEXCOORD_SIZE_FROM_FVF(d3dvtVertexType, tex_num) \
277     (((((d3dvtVertexType) >> (16 + (2 * (tex_num)))) + 1) & 0x03) + 1)
278
279 extern const char *_get_renderstate(D3DRENDERSTATETYPE type);
280 extern void dump_D3DMATERIAL7(LPD3DMATERIAL7 lpMat);
281 extern void dump_D3DCOLORVALUE(D3DCOLORVALUE *lpCol);
282 extern void dump_D3DLIGHT7(LPD3DLIGHT7 lpLight);
283 extern void dump_DPFLAGS(DWORD dwFlags);
284 extern void dump_D3DMATRIX(D3DMATRIX *mat);
285 extern void dump_D3DVECTOR(D3DVECTOR *lpVec);
286 extern void dump_flexible_vertex(DWORD d3dvtVertexType);
287 extern DWORD get_flexible_vertex_size(DWORD d3dvtVertexType);
288 extern void convert_FVF_to_strided_data(DWORD d3dvtVertexType, LPVOID lpvVertices, D3DDRAWPRIMITIVESTRIDEDDATA *strided, DWORD dwStartVertex);
289 extern void dump_D3DVOP(DWORD dwVertexOp);
290 extern void dump_D3DPV(DWORD dwFlags);
291 extern void multiply_matrix(LPD3DMATRIX,LPD3DMATRIX,LPD3DMATRIX);
292 extern void InitDefaultStateBlock(STATEBLOCK* lpStateBlock, int version);
293
294 extern const float id_mat[16];
295
296 /*****************************************************************************
297  * IDirect3D object methods
298  */
299 HRESULT WINAPI
300 Main_IDirect3DImpl_7_EnumDevices(LPDIRECT3D7 iface,
301                                  LPD3DENUMDEVICESCALLBACK7 lpEnumDevicesCallback,
302                                  LPVOID lpUserArg);
303
304 HRESULT WINAPI
305 Main_IDirect3DImpl_7_CreateDevice(LPDIRECT3D7 iface,
306                                   REFCLSID rclsid,
307                                   LPDIRECTDRAWSURFACE7 lpDDS,
308                                   LPDIRECT3DDEVICE7* lplpD3DDevice);
309
310 HRESULT WINAPI
311 Main_IDirect3DImpl_7_3T_CreateVertexBuffer(LPDIRECT3D7 iface,
312                                            LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,
313                                            LPDIRECT3DVERTEXBUFFER7* lplpD3DVertBuf,
314                                            DWORD dwFlags);
315
316 HRESULT WINAPI
317 Main_IDirect3DImpl_7_3T_EnumZBufferFormats(LPDIRECT3D7 iface,
318                                            REFCLSID riidDevice,
319                                            LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,
320                                            LPVOID lpContext);
321
322 HRESULT WINAPI
323 Main_IDirect3DImpl_7_3T_EvictManagedTextures(LPDIRECT3D7 iface);
324
325 HRESULT WINAPI
326 Main_IDirect3DImpl_3_2T_1T_EnumDevices(LPDIRECT3D3 iface,
327                                        LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
328                                        LPVOID lpUserArg);
329
330 HRESULT WINAPI
331 Main_IDirect3DImpl_3_2T_1T_CreateLight(LPDIRECT3D3 iface,
332                                        LPDIRECT3DLIGHT* lplpDirect3DLight,
333                                        IUnknown* pUnkOuter);
334
335 HRESULT WINAPI
336 Main_IDirect3DImpl_3_2T_1T_CreateMaterial(LPDIRECT3D3 iface,
337                                           LPDIRECT3DMATERIAL3* lplpDirect3DMaterial3,
338                                           IUnknown* pUnkOuter);
339
340 HRESULT WINAPI
341 Main_IDirect3DImpl_3_2T_1T_CreateViewport(LPDIRECT3D3 iface,
342                                           LPDIRECT3DVIEWPORT3* lplpD3DViewport3,
343                                           IUnknown* pUnkOuter);
344
345 HRESULT WINAPI
346 Main_IDirect3DImpl_3_2T_1T_FindDevice(LPDIRECT3D3 iface,
347                                       LPD3DFINDDEVICESEARCH lpD3DDFS,
348                                       LPD3DFINDDEVICERESULT lpD3DFDR);
349
350 HRESULT WINAPI
351 Main_IDirect3DImpl_3_CreateDevice(LPDIRECT3D3 iface,
352                                   REFCLSID rclsid,
353                                   LPDIRECTDRAWSURFACE4 lpDDS,
354                                   LPDIRECT3DDEVICE3* lplpD3DDevice3,
355                                   LPUNKNOWN lpUnk);
356
357 HRESULT WINAPI
358 Thunk_IDirect3DImpl_3_CreateVertexBuffer(LPDIRECT3D3 iface,
359                                          LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,
360                                          LPDIRECT3DVERTEXBUFFER* lplpD3DVertBuf,
361                                          DWORD dwFlags,
362                                          LPUNKNOWN lpUnk);
363
364 HRESULT WINAPI
365 Thunk_IDirect3DImpl_2_CreateMaterial(LPDIRECT3D2 iface,
366                                      LPDIRECT3DMATERIAL2* lplpDirect3DMaterial2,
367                                      IUnknown* pUnkOuter);
368
369 HRESULT WINAPI
370 Thunk_IDirect3DImpl_2_CreateViewport(LPDIRECT3D2 iface,
371                                      LPDIRECT3DVIEWPORT2* lplpD3DViewport2,
372                                      IUnknown* pUnkOuter);
373
374 HRESULT WINAPI
375 Main_IDirect3DImpl_2_CreateDevice(LPDIRECT3D2 iface,
376                                   REFCLSID rclsid,
377                                   LPDIRECTDRAWSURFACE lpDDS,
378                                   LPDIRECT3DDEVICE2* lplpD3DDevice2);
379
380 HRESULT WINAPI
381 Main_IDirect3DImpl_1_Initialize(LPDIRECT3D iface,
382                                 REFIID riid);
383
384 HRESULT WINAPI
385 Thunk_IDirect3DImpl_1_CreateMaterial(LPDIRECT3D iface,
386                                      LPDIRECT3DMATERIAL* lplpDirect3DMaterial,
387                                      IUnknown* pUnkOuter);
388
389 HRESULT WINAPI
390 Thunk_IDirect3DImpl_1_CreateViewport(LPDIRECT3D iface,
391                                      LPDIRECT3DVIEWPORT* lplpD3DViewport,
392                                      IUnknown* pUnkOuter);
393
394 HRESULT WINAPI
395 Main_IDirect3DImpl_1_FindDevice(LPDIRECT3D iface,
396                                 LPD3DFINDDEVICESEARCH lpD3DDFS,
397                                 LPD3DFINDDEVICERESULT lplpD3DDevice);
398
399 HRESULT WINAPI
400 Thunk_IDirect3DImpl_7_QueryInterface(LPDIRECT3D7 iface,
401                                      REFIID riid,
402                                      LPVOID* obp);
403
404 HRESULT WINAPI
405 Thunk_IDirect3DImpl_3_QueryInterface(LPDIRECT3D3 iface,
406                                      REFIID riid,
407                                      LPVOID* obp);
408
409 HRESULT WINAPI
410 Thunk_IDirect3DImpl_2_QueryInterface(LPDIRECT3D2 iface,
411                                      REFIID riid,
412                                      LPVOID* obp);
413
414 HRESULT WINAPI
415 Thunk_IDirect3DImpl_1_QueryInterface(LPDIRECT3D iface,
416                                      REFIID riid,
417                                      LPVOID* obp);
418
419 ULONG WINAPI
420 Thunk_IDirect3DImpl_7_AddRef(LPDIRECT3D7 iface);
421
422 ULONG WINAPI
423 Thunk_IDirect3DImpl_3_AddRef(LPDIRECT3D3 iface);
424
425 ULONG WINAPI
426 Thunk_IDirect3DImpl_2_AddRef(LPDIRECT3D2 iface);
427
428 ULONG WINAPI
429 Thunk_IDirect3DImpl_1_AddRef(LPDIRECT3D iface);
430
431 ULONG WINAPI
432 Thunk_IDirect3DImpl_7_Release(LPDIRECT3D7 iface);
433
434 ULONG WINAPI
435 Thunk_IDirect3DImpl_3_Release(LPDIRECT3D3 iface);
436
437 ULONG WINAPI
438 Thunk_IDirect3DImpl_2_Release(LPDIRECT3D2 iface);
439
440 ULONG WINAPI
441 Thunk_IDirect3DImpl_1_Release(LPDIRECT3D iface);
442
443 HRESULT WINAPI
444 Thunk_IDirect3DImpl_3_EnumZBufferFormats(LPDIRECT3D3 iface,
445                                          REFCLSID riidDevice,
446                                          LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,
447                                          LPVOID lpContext);
448
449 HRESULT WINAPI
450 Thunk_IDirect3DImpl_3_EvictManagedTextures(LPDIRECT3D3 iface);
451
452 HRESULT WINAPI
453 Thunk_IDirect3DImpl_2_EnumDevices(LPDIRECT3D2 iface,
454                                   LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
455                                   LPVOID lpUserArg);
456
457 HRESULT WINAPI
458 Thunk_IDirect3DImpl_1_EnumDevices(LPDIRECT3D iface,
459                                   LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
460                                   LPVOID lpUserArg);
461
462 HRESULT WINAPI
463 Thunk_IDirect3DImpl_2_CreateLight(LPDIRECT3D2 iface,
464                                   LPDIRECT3DLIGHT* lplpDirect3DLight,
465                                   IUnknown* pUnkOuter);
466
467 HRESULT WINAPI
468 Thunk_IDirect3DImpl_1_CreateLight(LPDIRECT3D iface,
469                                   LPDIRECT3DLIGHT* lplpDirect3DLight,
470                                   IUnknown* pUnkOuter);
471
472 HRESULT WINAPI
473 Thunk_IDirect3DImpl_1_FindDevice(LPDIRECT3D iface,
474                                  LPD3DFINDDEVICESEARCH lpD3DDFS,
475                                  LPD3DFINDDEVICERESULT lplpD3DDevice);
476
477 HRESULT WINAPI
478 Thunk_IDirect3DImpl_2_FindDevice(LPDIRECT3D2 iface,
479                                  LPD3DFINDDEVICESEARCH lpD3DDFS,
480                                  LPD3DFINDDEVICERESULT lpD3DFDR);
481
482 /*****************************************************************************
483  * IDirect3DDevice object methods
484  */
485 HRESULT WINAPI
486 Main_IDirect3DDeviceImpl_7_3T_2T_1T_QueryInterface(LPDIRECT3DDEVICE7 iface,
487                                                    REFIID riid,
488                                                    LPVOID* obp);
489
490 ULONG WINAPI
491 Main_IDirect3DDeviceImpl_7_3T_2T_1T_AddRef(LPDIRECT3DDEVICE7 iface);
492
493 ULONG WINAPI
494 Main_IDirect3DDeviceImpl_7_3T_2T_1T_Release(LPDIRECT3DDEVICE7 iface);
495
496 HRESULT WINAPI
497 Main_IDirect3DDeviceImpl_7_GetCaps(LPDIRECT3DDEVICE7 iface,
498                                    LPD3DDEVICEDESC7 lpD3DHELDevDesc);
499
500 HRESULT WINAPI
501 Main_IDirect3DDeviceImpl_7_3T_EnumTextureFormats(LPDIRECT3DDEVICE7 iface,
502                                                  LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc,
503                                                  LPVOID lpArg);
504
505 HRESULT WINAPI
506 Main_IDirect3DDeviceImpl_7_3T_2T_1T_BeginScene(LPDIRECT3DDEVICE7 iface);
507
508 HRESULT WINAPI
509 Main_IDirect3DDeviceImpl_7_3T_2T_1T_EndScene(LPDIRECT3DDEVICE7 iface);
510
511 HRESULT WINAPI
512 Main_IDirect3DDeviceImpl_7_3T_2T_1T_GetDirect3D(LPDIRECT3DDEVICE7 iface,
513                                                 LPDIRECT3D7* lplpDirect3D3);
514
515 HRESULT WINAPI
516 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderTarget(LPDIRECT3DDEVICE7 iface,
517                                                  LPDIRECTDRAWSURFACE7 lpNewRenderTarget,
518                                                  DWORD dwFlags);
519
520 HRESULT WINAPI
521 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderTarget(LPDIRECT3DDEVICE7 iface,
522                                                  LPDIRECTDRAWSURFACE7* lplpRenderTarget);
523
524 HRESULT WINAPI
525 Main_IDirect3DDeviceImpl_7_Clear(LPDIRECT3DDEVICE7 iface,
526                                  DWORD dwCount,
527                                  LPD3DRECT lpRects,
528                                  DWORD dwFlags,
529                                  D3DCOLOR dwColor,
530                                  D3DVALUE dvZ,
531                                  DWORD dwStencil);
532
533 HRESULT WINAPI
534 Main_IDirect3DDeviceImpl_7_3T_2T_SetTransform(LPDIRECT3DDEVICE7 iface,
535                                               D3DTRANSFORMSTATETYPE dtstTransformStateType,
536                                               LPD3DMATRIX lpD3DMatrix);
537
538 HRESULT WINAPI
539 Main_IDirect3DDeviceImpl_7_3T_2T_GetTransform(LPDIRECT3DDEVICE7 iface,
540                                               D3DTRANSFORMSTATETYPE dtstTransformStateType,
541                                               LPD3DMATRIX lpD3DMatrix);
542
543 HRESULT WINAPI
544 Main_IDirect3DDeviceImpl_7_SetViewport(LPDIRECT3DDEVICE7 iface,
545                                        LPD3DVIEWPORT7 lpData);
546
547 HRESULT WINAPI
548 Main_IDirect3DDeviceImpl_7_3T_2T_MultiplyTransform(LPDIRECT3DDEVICE7 iface,
549                                                    D3DTRANSFORMSTATETYPE dtstTransformStateType,
550                                                    LPD3DMATRIX lpD3DMatrix);
551
552 HRESULT WINAPI
553 Main_IDirect3DDeviceImpl_7_GetViewport(LPDIRECT3DDEVICE7 iface,
554                                        LPD3DVIEWPORT7 lpData);
555
556 HRESULT WINAPI
557 Main_IDirect3DDeviceImpl_7_SetMaterial(LPDIRECT3DDEVICE7 iface,
558                                        LPD3DMATERIAL7 lpMat);
559
560 HRESULT WINAPI
561 Main_IDirect3DDeviceImpl_7_GetMaterial(LPDIRECT3DDEVICE7 iface,
562                                        LPD3DMATERIAL7 lpMat);
563
564 HRESULT WINAPI
565 Main_IDirect3DDeviceImpl_7_SetLight(LPDIRECT3DDEVICE7 iface,
566                                     DWORD dwLightIndex,
567                                     LPD3DLIGHT7 lpLight);
568
569 HRESULT WINAPI
570 Main_IDirect3DDeviceImpl_7_GetLight(LPDIRECT3DDEVICE7 iface,
571                                     DWORD dwLightIndex,
572                                     LPD3DLIGHT7 lpLight);
573
574 HRESULT WINAPI
575 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderState(LPDIRECT3DDEVICE7 iface,
576                                                 D3DRENDERSTATETYPE dwRenderStateType,
577                                                 DWORD dwRenderState);
578
579 HRESULT WINAPI
580 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderState(LPDIRECT3DDEVICE7 iface,
581                                                 D3DRENDERSTATETYPE dwRenderStateType,
582                                                 LPDWORD lpdwRenderState);
583
584 HRESULT WINAPI
585 Main_IDirect3DDeviceImpl_7_BeginStateBlock(LPDIRECT3DDEVICE7 iface);
586
587 HRESULT WINAPI
588 Main_IDirect3DDeviceImpl_7_EndStateBlock(LPDIRECT3DDEVICE7 iface,
589                                          LPDWORD lpdwBlockHandle);
590
591 HRESULT WINAPI
592 Main_IDirect3DDeviceImpl_7_PreLoad(LPDIRECT3DDEVICE7 iface,
593                                    LPDIRECTDRAWSURFACE7 lpddsTexture);
594
595 HRESULT WINAPI
596 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitive(LPDIRECT3DDEVICE7 iface,
597                                             D3DPRIMITIVETYPE d3dptPrimitiveType,
598                                             DWORD d3dvtVertexType,
599                                             LPVOID lpvVertices,
600                                             DWORD dwVertexCount,
601                                             DWORD dwFlags);
602
603 HRESULT WINAPI
604 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitive(LPDIRECT3DDEVICE7 iface,
605                                                    D3DPRIMITIVETYPE d3dptPrimitiveType,
606                                                    DWORD d3dvtVertexType,
607                                                    LPVOID lpvVertices,
608                                                    DWORD dwVertexCount,
609                                                    LPWORD dwIndices,
610                                                    DWORD dwIndexCount,
611                                                    DWORD dwFlags);
612
613 HRESULT WINAPI
614 Main_IDirect3DDeviceImpl_7_3T_2T_SetClipStatus(LPDIRECT3DDEVICE7 iface,
615                                                LPD3DCLIPSTATUS lpD3DClipStatus);
616
617 HRESULT WINAPI
618 Main_IDirect3DDeviceImpl_7_3T_2T_GetClipStatus(LPDIRECT3DDEVICE7 iface,
619                                                LPD3DCLIPSTATUS lpD3DClipStatus);
620
621 HRESULT WINAPI
622 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveStrided(LPDIRECT3DDEVICE7 iface,
623                                                    D3DPRIMITIVETYPE d3dptPrimitiveType,
624                                                    DWORD dwVertexType,
625                                                    LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
626                                                    DWORD dwVertexCount,
627                                                    DWORD dwFlags);
628
629 HRESULT WINAPI
630 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE7 iface,
631                                                           D3DPRIMITIVETYPE d3dptPrimitiveType,
632                                                           DWORD dwVertexType,
633                                                           LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
634                                                           DWORD dwVertexCount,
635                                                           LPWORD lpIndex,
636                                                           DWORD dwIndexCount,
637                                                           DWORD dwFlags);
638
639 HRESULT WINAPI
640 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveVB(LPDIRECT3DDEVICE7 iface,
641                                               D3DPRIMITIVETYPE d3dptPrimitiveType,
642                                               LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,
643                                               DWORD dwStartVertex,
644                                               DWORD dwNumVertices,
645                                               DWORD dwFlags);
646
647 HRESULT WINAPI
648 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE7 iface,
649                                                      D3DPRIMITIVETYPE d3dptPrimitiveType,
650                                                      LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,
651                                                      DWORD dwStartVertex,
652                                                      DWORD dwNumVertices,
653                                                      LPWORD lpwIndices,
654                                                      DWORD dwIndexCount,
655                                                      DWORD dwFlags);
656
657 HRESULT WINAPI
658 Main_IDirect3DDeviceImpl_7_3T_ComputeSphereVisibility(LPDIRECT3DDEVICE7 iface,
659                                                       LPD3DVECTOR lpCenters,
660                                                       LPD3DVALUE lpRadii,
661                                                       DWORD dwNumSpheres,
662                                                       DWORD dwFlags,
663                                                       LPDWORD lpdwReturnValues);
664
665 HRESULT WINAPI
666 Main_IDirect3DDeviceImpl_7_3T_GetTexture(LPDIRECT3DDEVICE7 iface,
667                                          DWORD dwStage,
668                                          LPDIRECTDRAWSURFACE7* lpTexture);
669
670 HRESULT WINAPI
671 Main_IDirect3DDeviceImpl_7_3T_SetTexture(LPDIRECT3DDEVICE7 iface,
672                                          DWORD dwStage,
673                                          LPDIRECTDRAWSURFACE7 lpTexture);
674
675 HRESULT WINAPI
676 Main_IDirect3DDeviceImpl_7_3T_GetTextureStageState(LPDIRECT3DDEVICE7 iface,
677                                                    DWORD dwStage,
678                                                    D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
679                                                    LPDWORD lpdwState);
680
681 HRESULT WINAPI
682 Main_IDirect3DDeviceImpl_7_3T_SetTextureStageState(LPDIRECT3DDEVICE7 iface,
683                                                    DWORD dwStage,
684                                                    D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
685                                                    DWORD dwState);
686
687 HRESULT WINAPI
688 Main_IDirect3DDeviceImpl_7_3T_ValidateDevice(LPDIRECT3DDEVICE7 iface,
689                                              LPDWORD lpdwPasses);
690
691 HRESULT WINAPI
692 Main_IDirect3DDeviceImpl_7_ApplyStateBlock(LPDIRECT3DDEVICE7 iface,
693                                            DWORD dwBlockHandle);
694
695 HRESULT WINAPI
696 Main_IDirect3DDeviceImpl_7_CaptureStateBlock(LPDIRECT3DDEVICE7 iface,
697                                              DWORD dwBlockHandle);
698
699 HRESULT WINAPI
700 Main_IDirect3DDeviceImpl_7_DeleteStateBlock(LPDIRECT3DDEVICE7 iface,
701                                             DWORD dwBlockHandle);
702
703 HRESULT WINAPI
704 Main_IDirect3DDeviceImpl_7_CreateStateBlock(LPDIRECT3DDEVICE7 iface,
705                                             D3DSTATEBLOCKTYPE d3dsbType,
706                                             LPDWORD lpdwBlockHandle);
707
708 HRESULT WINAPI
709 Main_IDirect3DDeviceImpl_7_Load(LPDIRECT3DDEVICE7 iface,
710                                 LPDIRECTDRAWSURFACE7 lpDestTex,
711                                 LPPOINT lpDestPoint,
712                                 LPDIRECTDRAWSURFACE7 lpSrcTex,
713                                 LPRECT lprcSrcRect,
714                                 DWORD dwFlags);
715
716 HRESULT WINAPI
717 Main_IDirect3DDeviceImpl_7_LightEnable(LPDIRECT3DDEVICE7 iface,
718                                        DWORD dwLightIndex,
719                                        BOOL bEnable);
720
721 HRESULT WINAPI
722 Main_IDirect3DDeviceImpl_7_GetLightEnable(LPDIRECT3DDEVICE7 iface,
723                                           DWORD dwLightIndex,
724                                           BOOL* pbEnable);
725
726 HRESULT WINAPI
727 Main_IDirect3DDeviceImpl_7_SetClipPlane(LPDIRECT3DDEVICE7 iface,
728                                         DWORD dwIndex,
729                                         D3DVALUE* pPlaneEquation);
730
731 HRESULT WINAPI
732 Main_IDirect3DDeviceImpl_7_GetClipPlane(LPDIRECT3DDEVICE7 iface,
733                                         DWORD dwIndex,
734                                         D3DVALUE* pPlaneEquation);
735
736 HRESULT WINAPI
737 Main_IDirect3DDeviceImpl_7_GetInfo(LPDIRECT3DDEVICE7 iface,
738                                    DWORD dwDevInfoID,
739                                    LPVOID pDevInfoStruct,
740                                    DWORD dwSize);
741
742 HRESULT WINAPI
743 Main_IDirect3DDeviceImpl_3_2T_1T_GetCaps(LPDIRECT3DDEVICE3 iface,
744                                          LPD3DDEVICEDESC lpD3DHWDevDesc,
745                                          LPD3DDEVICEDESC lpD3DHELDevDesc);
746
747 HRESULT WINAPI
748 Main_IDirect3DDeviceImpl_3_2T_1T_GetStats(LPDIRECT3DDEVICE3 iface,
749                                           LPD3DSTATS lpD3DStats);
750
751 HRESULT WINAPI
752 Main_IDirect3DDeviceImpl_3_2T_1T_AddViewport(LPDIRECT3DDEVICE3 iface,
753                                              LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
754
755 HRESULT WINAPI
756 Main_IDirect3DDeviceImpl_3_2T_1T_DeleteViewport(LPDIRECT3DDEVICE3 iface,
757                                                 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
758
759 HRESULT WINAPI
760 Main_IDirect3DDeviceImpl_3_2T_1T_NextViewport(LPDIRECT3DDEVICE3 iface,
761                                               LPDIRECT3DVIEWPORT3 lpDirect3DViewport3,
762                                               LPDIRECT3DVIEWPORT3* lplpDirect3DViewport3,
763                                               DWORD dwFlags);
764
765 HRESULT WINAPI
766 Main_IDirect3DDeviceImpl_3_2T_SetCurrentViewport(LPDIRECT3DDEVICE3 iface,
767                                                  LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
768
769 HRESULT WINAPI
770 Main_IDirect3DDeviceImpl_3_2T_GetCurrentViewport(LPDIRECT3DDEVICE3 iface,
771                                                  LPDIRECT3DVIEWPORT3* lplpDirect3DViewport3);
772
773 HRESULT WINAPI
774 Main_IDirect3DDeviceImpl_3_Begin(LPDIRECT3DDEVICE3 iface,
775                                  D3DPRIMITIVETYPE d3dptPrimitiveType,
776                                  DWORD dwVertexTypeDesc,
777                                  DWORD dwFlags);
778
779 HRESULT WINAPI
780 Main_IDirect3DDeviceImpl_3_BeginIndexed(LPDIRECT3DDEVICE3 iface,
781                                         D3DPRIMITIVETYPE d3dptPrimitiveType,
782                                         DWORD d3dvtVertexType,
783                                         LPVOID lpvVertices,
784                                         DWORD dwNumVertices,
785                                         DWORD dwFlags);
786
787 HRESULT WINAPI
788 Main_IDirect3DDeviceImpl_3_2T_Vertex(LPDIRECT3DDEVICE3 iface,
789                                      LPVOID lpVertexType);
790
791 HRESULT WINAPI
792 Main_IDirect3DDeviceImpl_3_2T_Index(LPDIRECT3DDEVICE3 iface,
793                                     WORD wVertexIndex);
794
795 HRESULT WINAPI
796 Main_IDirect3DDeviceImpl_3_2T_End(LPDIRECT3DDEVICE3 iface,
797                                   DWORD dwFlags);
798
799 HRESULT WINAPI
800 Main_IDirect3DDeviceImpl_3_2T_GetLightState(LPDIRECT3DDEVICE3 iface,
801                                             D3DLIGHTSTATETYPE dwLightStateType,
802                                             LPDWORD lpdwLightState);
803
804 HRESULT WINAPI
805 Main_IDirect3DDeviceImpl_3_2T_SetLightState(LPDIRECT3DDEVICE3 iface,
806                                             D3DLIGHTSTATETYPE dwLightStateType,
807                                             DWORD dwLightState);
808
809 HRESULT WINAPI
810 Main_IDirect3DDeviceImpl_2_1T_SwapTextureHandles(LPDIRECT3DDEVICE2 iface,
811                                                  LPDIRECT3DTEXTURE2 lpD3DTex1,
812                                                  LPDIRECT3DTEXTURE2 lpD3DTex2);
813
814 HRESULT WINAPI
815 Main_IDirect3DDeviceImpl_2_1T_EnumTextureFormats(LPDIRECT3DDEVICE2 iface,
816                                                  LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc,
817                                                  LPVOID lpArg);
818
819 HRESULT WINAPI
820 Main_IDirect3DDeviceImpl_2_Begin(LPDIRECT3DDEVICE2 iface,
821                                  D3DPRIMITIVETYPE d3dpt,
822                                  D3DVERTEXTYPE dwVertexTypeDesc,
823                                  DWORD dwFlags);
824
825 HRESULT WINAPI
826 Main_IDirect3DDeviceImpl_2_BeginIndexed(LPDIRECT3DDEVICE2 iface,
827                                         D3DPRIMITIVETYPE d3dptPrimitiveType,
828                                         D3DVERTEXTYPE d3dvtVertexType,
829                                         LPVOID lpvVertices,
830                                         DWORD dwNumVertices,
831                                         DWORD dwFlags);
832
833 HRESULT WINAPI
834 Main_IDirect3DDeviceImpl_2_DrawPrimitive(LPDIRECT3DDEVICE2 iface,
835                                          D3DPRIMITIVETYPE d3dptPrimitiveType,
836                                          D3DVERTEXTYPE d3dvtVertexType,
837                                          LPVOID lpvVertices,
838                                          DWORD dwVertexCount,
839                                          DWORD dwFlags);
840
841 HRESULT WINAPI
842 Main_IDirect3DDeviceImpl_2_DrawIndexedPrimitive(LPDIRECT3DDEVICE2 iface,
843                                                 D3DPRIMITIVETYPE d3dptPrimitiveType,
844                                                 D3DVERTEXTYPE d3dvtVertexType,
845                                                 LPVOID lpvVertices,
846                                                 DWORD dwVertexCount,
847                                                 LPWORD dwIndices,
848                                                 DWORD dwIndexCount,
849                                                 DWORD dwFlags);
850
851 HRESULT WINAPI
852 Main_IDirect3DDeviceImpl_1_Initialize(LPDIRECT3DDEVICE iface,
853                                       LPDIRECT3D lpDirect3D,
854                                       LPGUID lpGUID,
855                                       LPD3DDEVICEDESC lpD3DDVDesc);
856
857 HRESULT WINAPI
858 Main_IDirect3DDeviceImpl_1_CreateExecuteBuffer(LPDIRECT3DDEVICE iface,
859                                                LPD3DEXECUTEBUFFERDESC lpDesc,
860                                                LPDIRECT3DEXECUTEBUFFER* lplpDirect3DExecuteBuffer,
861                                                IUnknown* pUnkOuter);
862
863 HRESULT WINAPI
864 Main_IDirect3DDeviceImpl_1_Execute(LPDIRECT3DDEVICE iface,
865                                    LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
866                                    LPDIRECT3DVIEWPORT lpDirect3DViewport,
867                                    DWORD dwFlags);
868
869 HRESULT WINAPI
870 Main_IDirect3DDeviceImpl_1_Pick(LPDIRECT3DDEVICE iface,
871                                 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
872                                 LPDIRECT3DVIEWPORT lpDirect3DViewport,
873                                 DWORD dwFlags,
874                                 LPD3DRECT lpRect);
875
876 HRESULT WINAPI
877 Main_IDirect3DDeviceImpl_1_GetPickRecords(LPDIRECT3DDEVICE iface,
878                                           LPDWORD lpCount,
879                                           LPD3DPICKRECORD lpD3DPickRec);
880
881 HRESULT WINAPI
882 Main_IDirect3DDeviceImpl_1_CreateMatrix(LPDIRECT3DDEVICE iface,
883                                         LPD3DMATRIXHANDLE lpD3DMatHandle);
884
885 HRESULT WINAPI
886 Main_IDirect3DDeviceImpl_1_SetMatrix(LPDIRECT3DDEVICE iface,
887                                      D3DMATRIXHANDLE D3DMatHandle,
888                                      LPD3DMATRIX lpD3DMatrix);
889
890 HRESULT WINAPI
891 Main_IDirect3DDeviceImpl_1_GetMatrix(LPDIRECT3DDEVICE iface,
892                                      D3DMATRIXHANDLE D3DMatHandle,
893                                      LPD3DMATRIX lpD3DMatrix);
894
895 HRESULT WINAPI
896 Main_IDirect3DDeviceImpl_1_DeleteMatrix(LPDIRECT3DDEVICE iface,
897                                         D3DMATRIXHANDLE D3DMatHandle);
898
899 HRESULT WINAPI
900 Thunk_IDirect3DDeviceImpl_3_QueryInterface(LPDIRECT3DDEVICE3 iface,
901                                            REFIID riid,
902                                            LPVOID* obp);
903
904 HRESULT WINAPI
905 Thunk_IDirect3DDeviceImpl_2_QueryInterface(LPDIRECT3DDEVICE2 iface,
906                                            REFIID riid,
907                                            LPVOID* obp);
908
909 HRESULT WINAPI
910 Thunk_IDirect3DDeviceImpl_1_QueryInterface(LPDIRECT3DDEVICE iface,
911                                            REFIID riid,
912                                            LPVOID* obp);
913
914 ULONG WINAPI
915 Thunk_IDirect3DDeviceImpl_3_AddRef(LPDIRECT3DDEVICE3 iface);
916
917 ULONG WINAPI
918 Thunk_IDirect3DDeviceImpl_2_AddRef(LPDIRECT3DDEVICE2 iface);
919
920 ULONG WINAPI
921 Thunk_IDirect3DDeviceImpl_1_AddRef(LPDIRECT3DDEVICE iface);
922
923 ULONG WINAPI
924 Thunk_IDirect3DDeviceImpl_3_Release(LPDIRECT3DDEVICE3 iface);
925
926 ULONG WINAPI
927 Thunk_IDirect3DDeviceImpl_2_Release(LPDIRECT3DDEVICE2 iface);
928
929 ULONG WINAPI
930 Thunk_IDirect3DDeviceImpl_1_Release(LPDIRECT3DDEVICE iface);
931
932 HRESULT WINAPI
933 Thunk_IDirect3DDeviceImpl_2_AddViewport(LPDIRECT3DDEVICE2 iface,
934                                         LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
935
936 HRESULT WINAPI
937 Thunk_IDirect3DDeviceImpl_1_AddViewport(LPDIRECT3DDEVICE iface,
938                                         LPDIRECT3DVIEWPORT lpDirect3DViewport);
939
940 HRESULT WINAPI
941 Thunk_IDirect3DDeviceImpl_2_DeleteViewport(LPDIRECT3DDEVICE2 iface,
942                                            LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
943
944 HRESULT WINAPI
945 Thunk_IDirect3DDeviceImpl_1_DeleteViewport(LPDIRECT3DDEVICE iface,
946                                            LPDIRECT3DVIEWPORT lpDirect3DViewport);
947
948 HRESULT WINAPI
949 Thunk_IDirect3DDeviceImpl_2_NextViewport(LPDIRECT3DDEVICE3 iface,
950                                          LPDIRECT3DVIEWPORT2 lpDirect3DViewport2,
951                                          LPDIRECT3DVIEWPORT2* lplpDirect3DViewport2,
952                                          DWORD dwFlags);
953
954 HRESULT WINAPI
955 Thunk_IDirect3DDeviceImpl_1_NextViewport(LPDIRECT3DDEVICE3 iface,
956                                          LPDIRECT3DVIEWPORT lpDirect3DViewport,
957                                          LPDIRECT3DVIEWPORT* lplpDirect3DViewport,
958                                          DWORD dwFlags);
959
960 HRESULT WINAPI
961 Thunk_IDirect3DDeviceImpl_3_GetDirect3D(LPDIRECT3DDEVICE3 iface,
962                                         LPDIRECT3D3* lplpDirect3D3);
963
964 HRESULT WINAPI
965 Thunk_IDirect3DDeviceImpl_2_GetDirect3D(LPDIRECT3DDEVICE2 iface,
966                                         LPDIRECT3D2* lplpDirect3D2);
967
968 HRESULT WINAPI
969 Thunk_IDirect3DDeviceImpl_1_GetDirect3D(LPDIRECT3DDEVICE iface,
970                                         LPDIRECT3D* lplpDirect3D);
971
972 HRESULT WINAPI
973 Thunk_IDirect3DDeviceImpl_2_SetCurrentViewport(LPDIRECT3DDEVICE2 iface,
974                                                LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
975
976 HRESULT WINAPI
977 Thunk_IDirect3DDeviceImpl_2_GetCurrentViewport(LPDIRECT3DDEVICE2 iface,
978                                                LPDIRECT3DVIEWPORT2* lpDirect3DViewport2);
979
980 HRESULT WINAPI
981 Thunk_IDirect3DDeviceImpl_3_EnumTextureFormats(LPDIRECT3DDEVICE3 iface,
982                                                LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc,
983                                                LPVOID lpArg);
984
985 HRESULT WINAPI
986 Thunk_IDirect3DDeviceImpl_3_BeginScene(LPDIRECT3DDEVICE3 iface);
987
988 HRESULT WINAPI
989 Thunk_IDirect3DDeviceImpl_2_BeginScene(LPDIRECT3DDEVICE2 iface);
990
991 HRESULT WINAPI
992 Thunk_IDirect3DDeviceImpl_1_BeginScene(LPDIRECT3DDEVICE iface);
993
994 HRESULT WINAPI
995 Thunk_IDirect3DDeviceImpl_3_EndScene(LPDIRECT3DDEVICE3 iface);
996
997 HRESULT WINAPI
998 Thunk_IDirect3DDeviceImpl_2_EndScene(LPDIRECT3DDEVICE2 iface);
999
1000 HRESULT WINAPI
1001 Thunk_IDirect3DDeviceImpl_1_EndScene(LPDIRECT3DDEVICE iface);
1002
1003 HRESULT WINAPI
1004 Thunk_IDirect3DDeviceImpl_3_SetTransform(LPDIRECT3DDEVICE3 iface,
1005                                          D3DTRANSFORMSTATETYPE dtstTransformStateType,
1006                                          LPD3DMATRIX lpD3DMatrix);
1007
1008 HRESULT WINAPI
1009 Thunk_IDirect3DDeviceImpl_2_SetTransform(LPDIRECT3DDEVICE2 iface,
1010                                          D3DTRANSFORMSTATETYPE dtstTransformStateType,
1011                                          LPD3DMATRIX lpD3DMatrix);
1012
1013 HRESULT WINAPI
1014 Thunk_IDirect3DDeviceImpl_3_GetTransform(LPDIRECT3DDEVICE3 iface,
1015                                          D3DTRANSFORMSTATETYPE dtstTransformStateType,
1016                                          LPD3DMATRIX lpD3DMatrix);
1017
1018 HRESULT WINAPI
1019 Thunk_IDirect3DDeviceImpl_2_GetTransform(LPDIRECT3DDEVICE2 iface,
1020                                          D3DTRANSFORMSTATETYPE dtstTransformStateType,
1021                                          LPD3DMATRIX lpD3DMatrix);
1022
1023 HRESULT WINAPI
1024 Thunk_IDirect3DDeviceImpl_3_MultiplyTransform(LPDIRECT3DDEVICE3 iface,
1025                                               D3DTRANSFORMSTATETYPE dtstTransformStateType,
1026                                               LPD3DMATRIX lpD3DMatrix);
1027
1028 HRESULT WINAPI
1029 Thunk_IDirect3DDeviceImpl_2_MultiplyTransform(LPDIRECT3DDEVICE2 iface,
1030                                               D3DTRANSFORMSTATETYPE dtstTransformStateType,
1031                                               LPD3DMATRIX lpD3DMatrix);
1032
1033 HRESULT WINAPI
1034 Thunk_IDirect3DDeviceImpl_3_SetRenderState(LPDIRECT3DDEVICE3 iface,
1035                                            D3DRENDERSTATETYPE dwRenderStateType,
1036                                            DWORD dwRenderState);
1037
1038 HRESULT WINAPI
1039 Thunk_IDirect3DDeviceImpl_2_SetRenderState(LPDIRECT3DDEVICE2 iface,
1040                                            D3DRENDERSTATETYPE dwRenderStateType,
1041                                            DWORD dwRenderState);
1042
1043 HRESULT WINAPI
1044 Thunk_IDirect3DDeviceImpl_3_GetRenderState(LPDIRECT3DDEVICE3 iface,
1045                                            D3DRENDERSTATETYPE dwRenderStateType,
1046                                            LPDWORD lpdwRenderState);
1047
1048 HRESULT WINAPI
1049 Thunk_IDirect3DDeviceImpl_2_GetRenderState(LPDIRECT3DDEVICE2 iface,
1050                                            D3DRENDERSTATETYPE dwRenderStateType,
1051                                            LPDWORD lpdwRenderState);
1052
1053 HRESULT WINAPI
1054 Thunk_IDirect3DDeviceImpl_3_DrawPrimitive(LPDIRECT3DDEVICE3 iface,
1055                                           D3DPRIMITIVETYPE d3dptPrimitiveType,
1056                                           DWORD d3dvtVertexType,
1057                                           LPVOID lpvVertices,
1058                                           DWORD dwVertexCount,
1059                                           DWORD dwFlags);
1060
1061 HRESULT WINAPI
1062 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitive(LPDIRECT3DDEVICE3 iface,
1063                                                  D3DPRIMITIVETYPE d3dptPrimitiveType,
1064                                                  DWORD d3dvtVertexType,
1065                                                  LPVOID lpvVertices,
1066                                                  DWORD dwVertexCount,
1067                                                  LPWORD dwIndices,
1068                                                  DWORD dwIndexCount,
1069                                                  DWORD dwFlags);
1070
1071 HRESULT WINAPI
1072 Thunk_IDirect3DDeviceImpl_3_SetClipStatus(LPDIRECT3DDEVICE3 iface,
1073                                           LPD3DCLIPSTATUS lpD3DClipStatus);
1074
1075 HRESULT WINAPI
1076 Thunk_IDirect3DDeviceImpl_2_SetClipStatus(LPDIRECT3DDEVICE2 iface,
1077                                           LPD3DCLIPSTATUS lpD3DClipStatus);
1078
1079 HRESULT WINAPI
1080 Thunk_IDirect3DDeviceImpl_3_GetClipStatus(LPDIRECT3DDEVICE3 iface,
1081                                           LPD3DCLIPSTATUS lpD3DClipStatus);
1082
1083 HRESULT WINAPI
1084 Thunk_IDirect3DDeviceImpl_2_GetClipStatus(LPDIRECT3DDEVICE2 iface,
1085                                           LPD3DCLIPSTATUS lpD3DClipStatus);
1086
1087 HRESULT WINAPI
1088 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveStrided(LPDIRECT3DDEVICE3 iface,
1089                                                  D3DPRIMITIVETYPE d3dptPrimitiveType,
1090                                                  DWORD dwVertexType,
1091                                                  LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
1092                                                  DWORD dwVertexCount,
1093                                                  DWORD dwFlags);
1094
1095 HRESULT WINAPI
1096 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE3 iface,
1097                                                         D3DPRIMITIVETYPE d3dptPrimitiveType,
1098                                                         DWORD dwVertexType,
1099                                                         LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
1100                                                         DWORD dwVertexCount,
1101                                                         LPWORD lpIndex,
1102                                                         DWORD dwIndexCount,
1103                                                         DWORD dwFlags);
1104
1105 HRESULT WINAPI
1106 Thunk_IDirect3DDeviceImpl_3_ComputeSphereVisibility(LPDIRECT3DDEVICE3 iface,
1107                                                     LPD3DVECTOR lpCenters,
1108                                                     LPD3DVALUE lpRadii,
1109                                                     DWORD dwNumSpheres,
1110                                                     DWORD dwFlags,
1111                                                     LPDWORD lpdwReturnValues);
1112
1113 HRESULT WINAPI
1114 Thunk_IDirect3DDeviceImpl_3_GetTextureStageState(LPDIRECT3DDEVICE3 iface,
1115                                                  DWORD dwStage,
1116                                                  D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
1117                                                  LPDWORD lpdwState);
1118
1119 HRESULT WINAPI
1120 Thunk_IDirect3DDeviceImpl_3_SetTextureStageState(LPDIRECT3DDEVICE3 iface,
1121                                                  DWORD dwStage,
1122                                                  D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
1123                                                  DWORD dwState);
1124
1125 HRESULT WINAPI
1126 Thunk_IDirect3DDeviceImpl_3_ValidateDevice(LPDIRECT3DDEVICE3 iface,
1127                                            LPDWORD lpdwPasses);
1128
1129 HRESULT WINAPI
1130 Thunk_IDirect3DDeviceImpl_2_GetCaps(LPDIRECT3DDEVICE2 iface,
1131                                     LPD3DDEVICEDESC lpD3DHWDevDesc,
1132                                     LPD3DDEVICEDESC lpD3DHELDevDesc);
1133
1134 HRESULT WINAPI
1135 Thunk_IDirect3DDeviceImpl_1_GetCaps(LPDIRECT3DDEVICE iface,
1136                                     LPD3DDEVICEDESC lpD3DHWDevDesc,
1137                                     LPD3DDEVICEDESC lpD3DHELDevDesc);
1138
1139 HRESULT WINAPI
1140 Thunk_IDirect3DDeviceImpl_1_SwapTextureHandles(LPDIRECT3DDEVICE iface,
1141                                                LPDIRECT3DTEXTURE lpD3Dtex1,
1142                                                LPDIRECT3DTEXTURE lpD3DTex2);
1143
1144 HRESULT WINAPI
1145 Thunk_IDirect3DDeviceImpl_2_GetStats(LPDIRECT3DDEVICE2 iface,
1146                                      LPD3DSTATS lpD3DStats);
1147
1148 HRESULT WINAPI
1149 Thunk_IDirect3DDeviceImpl_1_GetStats(LPDIRECT3DDEVICE iface,
1150                                      LPD3DSTATS lpD3DStats);
1151
1152 HRESULT WINAPI
1153 Thunk_IDirect3DDeviceImpl_3_SetRenderTarget(LPDIRECT3DDEVICE3 iface,
1154                                             LPDIRECTDRAWSURFACE4 lpNewRenderTarget,
1155                                             DWORD dwFlags);
1156
1157 HRESULT WINAPI
1158 Thunk_IDirect3DDeviceImpl_3_GetRenderTarget(LPDIRECT3DDEVICE3 iface,
1159                                             LPDIRECTDRAWSURFACE4* lplpRenderTarget);
1160
1161 HRESULT WINAPI
1162 Thunk_IDirect3DDeviceImpl_2_SetRenderTarget(LPDIRECT3DDEVICE2 iface,
1163                                             LPDIRECTDRAWSURFACE lpNewRenderTarget,
1164                                             DWORD dwFlags);
1165
1166 HRESULT WINAPI
1167 Thunk_IDirect3DDeviceImpl_2_GetRenderTarget(LPDIRECT3DDEVICE2 iface,
1168                                             LPDIRECTDRAWSURFACE* lplpRenderTarget);
1169
1170 HRESULT WINAPI
1171 Thunk_IDirect3DDeviceImpl_2_Vertex(LPDIRECT3DDEVICE2 iface,
1172                                    LPVOID lpVertexType);
1173
1174 HRESULT WINAPI
1175 Thunk_IDirect3DDeviceImpl_2_Index(LPDIRECT3DDEVICE2 iface,
1176                                   WORD wVertexIndex);
1177
1178 HRESULT WINAPI
1179 Thunk_IDirect3DDeviceImpl_2_End(LPDIRECT3DDEVICE2 iface,
1180                                 DWORD dwFlags);
1181
1182 HRESULT WINAPI
1183 Thunk_IDirect3DDeviceImpl_2_GetLightState(LPDIRECT3DDEVICE2 iface,
1184                                           D3DLIGHTSTATETYPE dwLightStateType,
1185                                           LPDWORD lpdwLightState);
1186
1187 HRESULT WINAPI
1188 Thunk_IDirect3DDeviceImpl_2_SetLightState(LPDIRECT3DDEVICE2 iface,
1189                                           D3DLIGHTSTATETYPE dwLightStateType,
1190                                           DWORD dwLightState);
1191
1192 HRESULT WINAPI
1193 Thunk_IDirect3DDeviceImpl_1_EnumTextureFormats(LPDIRECT3DDEVICE iface,
1194                                                LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc,
1195                                                LPVOID lpArg);
1196
1197 HRESULT WINAPI
1198 Thunk_IDirect3DDeviceImpl_3_SetTexture(LPDIRECT3DDEVICE3 iface,
1199                                        DWORD dwStage,
1200                                        LPDIRECT3DTEXTURE2 lpTexture2);
1201
1202 HRESULT WINAPI
1203 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveVB(LPDIRECT3DDEVICE3 iface,
1204                                             D3DPRIMITIVETYPE d3dptPrimitiveType,
1205                                             LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,
1206                                             DWORD dwStartVertex,
1207                                             DWORD dwNumVertices,
1208                                             DWORD dwFlags);
1209
1210 HRESULT WINAPI
1211 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE3 iface,
1212                                                    D3DPRIMITIVETYPE d3dptPrimitiveType,
1213                                                    LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,
1214                                                    LPWORD lpwIndices,
1215                                                    DWORD dwIndexCount,
1216                                                    DWORD dwFlags);
1217
1218 HRESULT WINAPI
1219 Thunk_IDirect3DDeviceImpl_3_GetTexture(LPDIRECT3DDEVICE3 iface,
1220                                        DWORD dwStage,
1221                                        LPDIRECT3DTEXTURE2* lplpTexture2);
1222
1223 #endif /* __GRAPHICS_WINE_D3D_PRIVATE_H */