1 /* Direct3D private include file
2 * Copyright (c) 1998-2004 Lionel ULMER
3 * Copyright (c) 2002-2004 Christian Costa
5 * This file contains all the structure that are not exported
6 * through d3d.h and all common macros.
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.
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.
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
23 #ifndef __GRAPHICS_WINE_D3D_PRIVATE_H
24 #define __GRAPHICS_WINE_D3D_PRIVATE_H
26 /* THIS FILE MUST NOT CONTAIN X11 or MESA DEFINES */
35 #define MAX_TEXTURES 8
38 #define HIGHEST_RENDER_STATE 152
39 #define HIGHEST_TEXTURE_STAGE_STATE 24
41 /*****************************************************************************
42 * Predeclare the interface implementation structures
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;
50 #include "ddraw_private.h"
52 typedef struct STATEBLOCKFLAGS {
53 BOOL render_state[HIGHEST_RENDER_STATE];
54 BOOL texture_stage_state[MAX_TEXTURES][HIGHEST_TEXTURE_STAGE_STATE];
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];
64 /*****************************************************************************
65 * IDirect3DLight implementation structure
67 struct IDirect3DLightImpl
69 ICOM_VFIELD_MULTI(IDirect3DLight);
71 /* IDirect3DLight fields */
73 /* If this light is active for one viewport, put the viewport here */
74 IDirect3DViewportImpl *active_viewport;
81 /* Chained list used for adding / removing from viewports */
82 IDirect3DLightImpl *next;
84 /* Activation function */
85 void (*activate)(IDirect3DLightImpl*);
86 void (*desactivate)(IDirect3DLightImpl*);
87 void (*update)(IDirect3DLightImpl*);
90 /*****************************************************************************
91 * IDirect3DMaterial implementation structure
93 struct IDirect3DMaterialImpl
95 ICOM_VFIELD_MULTI(IDirect3DMaterial3);
96 ICOM_VFIELD_MULTI(IDirect3DMaterial2);
97 ICOM_VFIELD_MULTI(IDirect3DMaterial);
99 /* IDirect3DMaterial2 fields */
100 IDirectDrawImpl *d3d;
101 IDirect3DDeviceImpl *active_device;
105 void (*activate)(IDirect3DMaterialImpl* this);
108 /*****************************************************************************
109 * IDirect3DViewport implementation structure
111 struct IDirect3DViewportImpl
113 ICOM_VFIELD_MULTI(IDirect3DViewport3);
115 /* IDirect3DViewport fields */
116 IDirectDrawImpl *d3d;
117 /* If this viewport is active for one device, put the device here */
118 IDirect3DDeviceImpl *active_device;
129 /* Activation function */
130 void (*activate)(IDirect3DViewportImpl*);
132 /* Field used to chain viewports together */
133 IDirect3DViewportImpl *next;
136 IDirect3DLightImpl *lights;
138 /* Background material */
139 IDirect3DMaterialImpl *background;
142 /*****************************************************************************
143 * IDirect3DExecuteBuffer implementation structure
145 struct IDirect3DExecuteBufferImpl
147 ICOM_VFIELD_MULTI(IDirect3DExecuteBuffer);
149 /* IDirect3DExecuteBuffer fields */
150 IDirectDrawImpl *d3d;
151 IDirect3DDeviceImpl* d3ddev;
153 D3DEXECUTEBUFFERDESC desc;
156 /* This buffer will store the transformed vertices */
161 /* This flags is set to TRUE if we allocated ourselves the
165 void (*execute)(IDirect3DExecuteBufferImpl* this,
166 IDirect3DDeviceImpl* dev,
167 IDirect3DViewportImpl* vp);
170 /* Internal structure to store the state of the clipping planes */
171 typedef struct d3d7clippingplane
176 /*****************************************************************************
177 * IDirect3DDevice implementation structure
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)
192 struct IDirect3DDeviceImpl
194 ICOM_VFIELD_MULTI(IDirect3DDevice7);
195 ICOM_VFIELD_MULTI(IDirect3DDevice3);
196 ICOM_VFIELD_MULTI(IDirect3DDevice2);
197 ICOM_VFIELD_MULTI(IDirect3DDevice);
200 /* Version of the Direct3D object from which the device has been created */
203 /* IDirect3DDevice fields */
204 IDirectDrawImpl *d3d;
205 IDirectDrawSurfaceImpl *surface;
207 IDirect3DViewportImpl *viewport_list;
208 IDirect3DViewportImpl *current_viewport;
209 D3DVIEWPORT7 active_viewport;
211 IDirectDrawSurfaceImpl *current_texture[MAX_TEXTURES];
212 IDirectDrawSurfaceImpl *current_zbuffer;
214 /* Current transformation matrices */
215 D3DMATRIX *world_mat;
218 D3DMATRIX *tex_mat[MAX_TEXTURES];
219 BOOLEAN tex_mat_is_identity[MAX_TEXTURES];
221 /* Current material used in D3D7 mode */
222 D3DMATERIAL7 current_material;
227 /* Light parameters */
228 DWORD num_set_lights;
229 DWORD max_active_lights;
230 LPD3DLIGHT7 light_parameters;
231 DWORD *active_lights;
233 /* clipping planes */
234 DWORD max_clipping_planes;
235 d3d7clippingplane *clipping_planes;
237 void (*set_context)(IDirect3DDeviceImpl*);
238 HRESULT (*clear)(IDirect3DDeviceImpl *This,
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);
250 STATEBLOCK state_block;
252 /* Used to prevent locks and rendering to overlap */
253 CRITICAL_SECTION crit;
256 /*****************************************************************************
257 * IDirect3DVertexBuffer implementation structure
259 struct IDirect3DVertexBufferImpl
261 ICOM_VFIELD_MULTI(IDirect3DVertexBuffer7);
262 ICOM_VFIELD_MULTI(IDirect3DVertexBuffer);
264 IDirectDrawImpl *d3d;
265 D3DVERTEXBUFFERDESC desc;
267 DWORD vertex_buffer_size;
272 /* Various dump and helper functions */
273 extern const char *_get_renderstate(D3DRENDERSTATETYPE type);
274 extern void dump_D3DMATERIAL7(LPD3DMATERIAL7 lpMat);
275 extern void dump_D3DCOLORVALUE(D3DCOLORVALUE *lpCol);
276 extern void dump_D3DLIGHT7(LPD3DLIGHT7 lpLight);
277 extern void dump_DPFLAGS(DWORD dwFlags);
278 extern void dump_D3DMATRIX(D3DMATRIX *mat);
279 extern void dump_D3DVECTOR(D3DVECTOR *lpVec);
280 extern void dump_flexible_vertex(DWORD d3dvtVertexType);
281 extern DWORD get_flexible_vertex_size(DWORD d3dvtVertexType);
282 extern void convert_FVF_to_strided_data(DWORD d3dvtVertexType, LPVOID lpvVertices, D3DDRAWPRIMITIVESTRIDEDDATA *strided, DWORD dwStartVertex);
283 extern void dump_D3DVOP(DWORD dwVertexOp);
284 extern void dump_D3DPV(DWORD dwFlags);
285 extern void multiply_matrix(LPD3DMATRIX,LPD3DMATRIX,LPD3DMATRIX);
286 extern void InitDefaultStateBlock(STATEBLOCK* lpStateBlock, int version);
288 extern const float id_mat[16];
290 /*****************************************************************************
291 * IDirect3D object methods
294 Main_IDirect3DImpl_7_EnumDevices(LPDIRECT3D7 iface,
295 LPD3DENUMDEVICESCALLBACK7 lpEnumDevicesCallback,
299 Main_IDirect3DImpl_7_CreateDevice(LPDIRECT3D7 iface,
301 LPDIRECTDRAWSURFACE7 lpDDS,
302 LPDIRECT3DDEVICE7* lplpD3DDevice);
305 Main_IDirect3DImpl_7_3T_CreateVertexBuffer(LPDIRECT3D7 iface,
306 LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,
307 LPDIRECT3DVERTEXBUFFER7* lplpD3DVertBuf,
311 Main_IDirect3DImpl_7_3T_EnumZBufferFormats(LPDIRECT3D7 iface,
313 LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,
317 Main_IDirect3DImpl_7_3T_EvictManagedTextures(LPDIRECT3D7 iface);
320 Main_IDirect3DImpl_3_2T_1T_EnumDevices(LPDIRECT3D3 iface,
321 LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
325 Main_IDirect3DImpl_3_2T_1T_CreateLight(LPDIRECT3D3 iface,
326 LPDIRECT3DLIGHT* lplpDirect3DLight,
327 IUnknown* pUnkOuter);
330 Main_IDirect3DImpl_3_2T_1T_CreateMaterial(LPDIRECT3D3 iface,
331 LPDIRECT3DMATERIAL3* lplpDirect3DMaterial3,
332 IUnknown* pUnkOuter);
335 Main_IDirect3DImpl_3_2T_1T_CreateViewport(LPDIRECT3D3 iface,
336 LPDIRECT3DVIEWPORT3* lplpD3DViewport3,
337 IUnknown* pUnkOuter);
340 Main_IDirect3DImpl_3_2T_1T_FindDevice(LPDIRECT3D3 iface,
341 LPD3DFINDDEVICESEARCH lpD3DDFS,
342 LPD3DFINDDEVICERESULT lpD3DFDR);
345 Main_IDirect3DImpl_3_CreateDevice(LPDIRECT3D3 iface,
347 LPDIRECTDRAWSURFACE4 lpDDS,
348 LPDIRECT3DDEVICE3* lplpD3DDevice3,
352 Thunk_IDirect3DImpl_3_CreateVertexBuffer(LPDIRECT3D3 iface,
353 LPD3DVERTEXBUFFERDESC lpD3DVertBufDesc,
354 LPDIRECT3DVERTEXBUFFER* lplpD3DVertBuf,
359 Thunk_IDirect3DImpl_2_CreateMaterial(LPDIRECT3D2 iface,
360 LPDIRECT3DMATERIAL2* lplpDirect3DMaterial2,
361 IUnknown* pUnkOuter);
364 Thunk_IDirect3DImpl_2_CreateViewport(LPDIRECT3D2 iface,
365 LPDIRECT3DVIEWPORT2* lplpD3DViewport2,
366 IUnknown* pUnkOuter);
369 Main_IDirect3DImpl_2_CreateDevice(LPDIRECT3D2 iface,
371 LPDIRECTDRAWSURFACE lpDDS,
372 LPDIRECT3DDEVICE2* lplpD3DDevice2);
375 Main_IDirect3DImpl_1_Initialize(LPDIRECT3D iface,
379 Thunk_IDirect3DImpl_1_CreateMaterial(LPDIRECT3D iface,
380 LPDIRECT3DMATERIAL* lplpDirect3DMaterial,
381 IUnknown* pUnkOuter);
384 Thunk_IDirect3DImpl_1_CreateViewport(LPDIRECT3D iface,
385 LPDIRECT3DVIEWPORT* lplpD3DViewport,
386 IUnknown* pUnkOuter);
389 Main_IDirect3DImpl_1_FindDevice(LPDIRECT3D iface,
390 LPD3DFINDDEVICESEARCH lpD3DDFS,
391 LPD3DFINDDEVICERESULT lplpD3DDevice);
394 Thunk_IDirect3DImpl_7_QueryInterface(LPDIRECT3D7 iface,
399 Thunk_IDirect3DImpl_3_QueryInterface(LPDIRECT3D3 iface,
404 Thunk_IDirect3DImpl_2_QueryInterface(LPDIRECT3D2 iface,
409 Thunk_IDirect3DImpl_1_QueryInterface(LPDIRECT3D iface,
414 Thunk_IDirect3DImpl_7_AddRef(LPDIRECT3D7 iface);
417 Thunk_IDirect3DImpl_3_AddRef(LPDIRECT3D3 iface);
420 Thunk_IDirect3DImpl_2_AddRef(LPDIRECT3D2 iface);
423 Thunk_IDirect3DImpl_1_AddRef(LPDIRECT3D iface);
426 Thunk_IDirect3DImpl_7_Release(LPDIRECT3D7 iface);
429 Thunk_IDirect3DImpl_3_Release(LPDIRECT3D3 iface);
432 Thunk_IDirect3DImpl_2_Release(LPDIRECT3D2 iface);
435 Thunk_IDirect3DImpl_1_Release(LPDIRECT3D iface);
438 Thunk_IDirect3DImpl_3_EnumZBufferFormats(LPDIRECT3D3 iface,
440 LPD3DENUMPIXELFORMATSCALLBACK lpEnumCallback,
444 Thunk_IDirect3DImpl_3_EvictManagedTextures(LPDIRECT3D3 iface);
447 Thunk_IDirect3DImpl_2_EnumDevices(LPDIRECT3D2 iface,
448 LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
452 Thunk_IDirect3DImpl_1_EnumDevices(LPDIRECT3D iface,
453 LPD3DENUMDEVICESCALLBACK lpEnumDevicesCallback,
457 Thunk_IDirect3DImpl_2_CreateLight(LPDIRECT3D2 iface,
458 LPDIRECT3DLIGHT* lplpDirect3DLight,
459 IUnknown* pUnkOuter);
462 Thunk_IDirect3DImpl_1_CreateLight(LPDIRECT3D iface,
463 LPDIRECT3DLIGHT* lplpDirect3DLight,
464 IUnknown* pUnkOuter);
467 Thunk_IDirect3DImpl_1_FindDevice(LPDIRECT3D iface,
468 LPD3DFINDDEVICESEARCH lpD3DDFS,
469 LPD3DFINDDEVICERESULT lplpD3DDevice);
472 Thunk_IDirect3DImpl_2_FindDevice(LPDIRECT3D2 iface,
473 LPD3DFINDDEVICESEARCH lpD3DDFS,
474 LPD3DFINDDEVICERESULT lpD3DFDR);
476 /*****************************************************************************
477 * IDirect3DDevice object methods
480 Main_IDirect3DDeviceImpl_7_3T_2T_1T_QueryInterface(LPDIRECT3DDEVICE7 iface,
485 Main_IDirect3DDeviceImpl_7_3T_2T_1T_AddRef(LPDIRECT3DDEVICE7 iface);
488 Main_IDirect3DDeviceImpl_7_3T_2T_1T_Release(LPDIRECT3DDEVICE7 iface);
491 Main_IDirect3DDeviceImpl_7_GetCaps(LPDIRECT3DDEVICE7 iface,
492 LPD3DDEVICEDESC7 lpD3DHELDevDesc);
495 Main_IDirect3DDeviceImpl_7_3T_EnumTextureFormats(LPDIRECT3DDEVICE7 iface,
496 LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc,
500 Main_IDirect3DDeviceImpl_7_3T_2T_1T_BeginScene(LPDIRECT3DDEVICE7 iface);
503 Main_IDirect3DDeviceImpl_7_3T_2T_1T_EndScene(LPDIRECT3DDEVICE7 iface);
506 Main_IDirect3DDeviceImpl_7_3T_2T_1T_GetDirect3D(LPDIRECT3DDEVICE7 iface,
507 LPDIRECT3D7* lplpDirect3D3);
510 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderTarget(LPDIRECT3DDEVICE7 iface,
511 LPDIRECTDRAWSURFACE7 lpNewRenderTarget,
515 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderTarget(LPDIRECT3DDEVICE7 iface,
516 LPDIRECTDRAWSURFACE7* lplpRenderTarget);
519 Main_IDirect3DDeviceImpl_7_Clear(LPDIRECT3DDEVICE7 iface,
528 Main_IDirect3DDeviceImpl_7_3T_2T_SetTransform(LPDIRECT3DDEVICE7 iface,
529 D3DTRANSFORMSTATETYPE dtstTransformStateType,
530 LPD3DMATRIX lpD3DMatrix);
533 Main_IDirect3DDeviceImpl_7_3T_2T_GetTransform(LPDIRECT3DDEVICE7 iface,
534 D3DTRANSFORMSTATETYPE dtstTransformStateType,
535 LPD3DMATRIX lpD3DMatrix);
538 Main_IDirect3DDeviceImpl_7_SetViewport(LPDIRECT3DDEVICE7 iface,
539 LPD3DVIEWPORT7 lpData);
542 Main_IDirect3DDeviceImpl_7_3T_2T_MultiplyTransform(LPDIRECT3DDEVICE7 iface,
543 D3DTRANSFORMSTATETYPE dtstTransformStateType,
544 LPD3DMATRIX lpD3DMatrix);
547 Main_IDirect3DDeviceImpl_7_GetViewport(LPDIRECT3DDEVICE7 iface,
548 LPD3DVIEWPORT7 lpData);
551 Main_IDirect3DDeviceImpl_7_SetMaterial(LPDIRECT3DDEVICE7 iface,
552 LPD3DMATERIAL7 lpMat);
555 Main_IDirect3DDeviceImpl_7_GetMaterial(LPDIRECT3DDEVICE7 iface,
556 LPD3DMATERIAL7 lpMat);
559 Main_IDirect3DDeviceImpl_7_SetLight(LPDIRECT3DDEVICE7 iface,
561 LPD3DLIGHT7 lpLight);
564 Main_IDirect3DDeviceImpl_7_GetLight(LPDIRECT3DDEVICE7 iface,
566 LPD3DLIGHT7 lpLight);
569 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderState(LPDIRECT3DDEVICE7 iface,
570 D3DRENDERSTATETYPE dwRenderStateType,
571 DWORD dwRenderState);
574 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderState(LPDIRECT3DDEVICE7 iface,
575 D3DRENDERSTATETYPE dwRenderStateType,
576 LPDWORD lpdwRenderState);
579 Main_IDirect3DDeviceImpl_7_BeginStateBlock(LPDIRECT3DDEVICE7 iface);
582 Main_IDirect3DDeviceImpl_7_EndStateBlock(LPDIRECT3DDEVICE7 iface,
583 LPDWORD lpdwBlockHandle);
586 Main_IDirect3DDeviceImpl_7_PreLoad(LPDIRECT3DDEVICE7 iface,
587 LPDIRECTDRAWSURFACE7 lpddsTexture);
590 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitive(LPDIRECT3DDEVICE7 iface,
591 D3DPRIMITIVETYPE d3dptPrimitiveType,
592 DWORD d3dvtVertexType,
598 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitive(LPDIRECT3DDEVICE7 iface,
599 D3DPRIMITIVETYPE d3dptPrimitiveType,
600 DWORD d3dvtVertexType,
608 Main_IDirect3DDeviceImpl_7_3T_2T_SetClipStatus(LPDIRECT3DDEVICE7 iface,
609 LPD3DCLIPSTATUS lpD3DClipStatus);
612 Main_IDirect3DDeviceImpl_7_3T_2T_GetClipStatus(LPDIRECT3DDEVICE7 iface,
613 LPD3DCLIPSTATUS lpD3DClipStatus);
616 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveStrided(LPDIRECT3DDEVICE7 iface,
617 D3DPRIMITIVETYPE d3dptPrimitiveType,
619 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
624 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE7 iface,
625 D3DPRIMITIVETYPE d3dptPrimitiveType,
627 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
634 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveVB(LPDIRECT3DDEVICE7 iface,
635 D3DPRIMITIVETYPE d3dptPrimitiveType,
636 LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,
642 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE7 iface,
643 D3DPRIMITIVETYPE d3dptPrimitiveType,
644 LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,
652 Main_IDirect3DDeviceImpl_7_3T_ComputeSphereVisibility(LPDIRECT3DDEVICE7 iface,
653 LPD3DVECTOR lpCenters,
657 LPDWORD lpdwReturnValues);
660 Main_IDirect3DDeviceImpl_7_3T_GetTexture(LPDIRECT3DDEVICE7 iface,
662 LPDIRECTDRAWSURFACE7* lpTexture);
665 Main_IDirect3DDeviceImpl_7_3T_SetTexture(LPDIRECT3DDEVICE7 iface,
667 LPDIRECTDRAWSURFACE7 lpTexture);
670 Main_IDirect3DDeviceImpl_7_3T_GetTextureStageState(LPDIRECT3DDEVICE7 iface,
672 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
676 Main_IDirect3DDeviceImpl_7_3T_SetTextureStageState(LPDIRECT3DDEVICE7 iface,
678 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
682 Main_IDirect3DDeviceImpl_7_3T_ValidateDevice(LPDIRECT3DDEVICE7 iface,
686 Main_IDirect3DDeviceImpl_7_ApplyStateBlock(LPDIRECT3DDEVICE7 iface,
687 DWORD dwBlockHandle);
690 Main_IDirect3DDeviceImpl_7_CaptureStateBlock(LPDIRECT3DDEVICE7 iface,
691 DWORD dwBlockHandle);
694 Main_IDirect3DDeviceImpl_7_DeleteStateBlock(LPDIRECT3DDEVICE7 iface,
695 DWORD dwBlockHandle);
698 Main_IDirect3DDeviceImpl_7_CreateStateBlock(LPDIRECT3DDEVICE7 iface,
699 D3DSTATEBLOCKTYPE d3dsbType,
700 LPDWORD lpdwBlockHandle);
703 Main_IDirect3DDeviceImpl_7_Load(LPDIRECT3DDEVICE7 iface,
704 LPDIRECTDRAWSURFACE7 lpDestTex,
706 LPDIRECTDRAWSURFACE7 lpSrcTex,
711 Main_IDirect3DDeviceImpl_7_LightEnable(LPDIRECT3DDEVICE7 iface,
716 Main_IDirect3DDeviceImpl_7_GetLightEnable(LPDIRECT3DDEVICE7 iface,
721 Main_IDirect3DDeviceImpl_7_SetClipPlane(LPDIRECT3DDEVICE7 iface,
723 D3DVALUE* pPlaneEquation);
726 Main_IDirect3DDeviceImpl_7_GetClipPlane(LPDIRECT3DDEVICE7 iface,
728 D3DVALUE* pPlaneEquation);
731 Main_IDirect3DDeviceImpl_7_GetInfo(LPDIRECT3DDEVICE7 iface,
733 LPVOID pDevInfoStruct,
737 Main_IDirect3DDeviceImpl_3_2T_1T_GetCaps(LPDIRECT3DDEVICE3 iface,
738 LPD3DDEVICEDESC lpD3DHWDevDesc,
739 LPD3DDEVICEDESC lpD3DHELDevDesc);
742 Main_IDirect3DDeviceImpl_3_2T_1T_GetStats(LPDIRECT3DDEVICE3 iface,
743 LPD3DSTATS lpD3DStats);
746 Main_IDirect3DDeviceImpl_3_2T_1T_AddViewport(LPDIRECT3DDEVICE3 iface,
747 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
750 Main_IDirect3DDeviceImpl_3_2T_1T_DeleteViewport(LPDIRECT3DDEVICE3 iface,
751 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
754 Main_IDirect3DDeviceImpl_3_2T_1T_NextViewport(LPDIRECT3DDEVICE3 iface,
755 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3,
756 LPDIRECT3DVIEWPORT3* lplpDirect3DViewport3,
760 Main_IDirect3DDeviceImpl_3_2T_SetCurrentViewport(LPDIRECT3DDEVICE3 iface,
761 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3);
764 Main_IDirect3DDeviceImpl_3_2T_GetCurrentViewport(LPDIRECT3DDEVICE3 iface,
765 LPDIRECT3DVIEWPORT3* lplpDirect3DViewport3);
768 Main_IDirect3DDeviceImpl_3_Begin(LPDIRECT3DDEVICE3 iface,
769 D3DPRIMITIVETYPE d3dptPrimitiveType,
770 DWORD dwVertexTypeDesc,
774 Main_IDirect3DDeviceImpl_3_BeginIndexed(LPDIRECT3DDEVICE3 iface,
775 D3DPRIMITIVETYPE d3dptPrimitiveType,
776 DWORD d3dvtVertexType,
782 Main_IDirect3DDeviceImpl_3_2T_Vertex(LPDIRECT3DDEVICE3 iface,
783 LPVOID lpVertexType);
786 Main_IDirect3DDeviceImpl_3_2T_Index(LPDIRECT3DDEVICE3 iface,
790 Main_IDirect3DDeviceImpl_3_2T_End(LPDIRECT3DDEVICE3 iface,
794 Main_IDirect3DDeviceImpl_3_2T_GetLightState(LPDIRECT3DDEVICE3 iface,
795 D3DLIGHTSTATETYPE dwLightStateType,
796 LPDWORD lpdwLightState);
799 Main_IDirect3DDeviceImpl_3_2T_SetLightState(LPDIRECT3DDEVICE3 iface,
800 D3DLIGHTSTATETYPE dwLightStateType,
804 Main_IDirect3DDeviceImpl_2_1T_SwapTextureHandles(LPDIRECT3DDEVICE2 iface,
805 LPDIRECT3DTEXTURE2 lpD3DTex1,
806 LPDIRECT3DTEXTURE2 lpD3DTex2);
809 Main_IDirect3DDeviceImpl_2_1T_EnumTextureFormats(LPDIRECT3DDEVICE2 iface,
810 LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc,
814 Main_IDirect3DDeviceImpl_2_Begin(LPDIRECT3DDEVICE2 iface,
815 D3DPRIMITIVETYPE d3dpt,
816 D3DVERTEXTYPE dwVertexTypeDesc,
820 Main_IDirect3DDeviceImpl_2_BeginIndexed(LPDIRECT3DDEVICE2 iface,
821 D3DPRIMITIVETYPE d3dptPrimitiveType,
822 D3DVERTEXTYPE d3dvtVertexType,
828 Main_IDirect3DDeviceImpl_2_DrawPrimitive(LPDIRECT3DDEVICE2 iface,
829 D3DPRIMITIVETYPE d3dptPrimitiveType,
830 D3DVERTEXTYPE d3dvtVertexType,
836 Main_IDirect3DDeviceImpl_2_DrawIndexedPrimitive(LPDIRECT3DDEVICE2 iface,
837 D3DPRIMITIVETYPE d3dptPrimitiveType,
838 D3DVERTEXTYPE d3dvtVertexType,
846 Main_IDirect3DDeviceImpl_1_Initialize(LPDIRECT3DDEVICE iface,
847 LPDIRECT3D lpDirect3D,
849 LPD3DDEVICEDESC lpD3DDVDesc);
852 Main_IDirect3DDeviceImpl_1_CreateExecuteBuffer(LPDIRECT3DDEVICE iface,
853 LPD3DEXECUTEBUFFERDESC lpDesc,
854 LPDIRECT3DEXECUTEBUFFER* lplpDirect3DExecuteBuffer,
855 IUnknown* pUnkOuter);
858 Main_IDirect3DDeviceImpl_1_Execute(LPDIRECT3DDEVICE iface,
859 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
860 LPDIRECT3DVIEWPORT lpDirect3DViewport,
864 Main_IDirect3DDeviceImpl_1_Pick(LPDIRECT3DDEVICE iface,
865 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
866 LPDIRECT3DVIEWPORT lpDirect3DViewport,
871 Main_IDirect3DDeviceImpl_1_GetPickRecords(LPDIRECT3DDEVICE iface,
873 LPD3DPICKRECORD lpD3DPickRec);
876 Main_IDirect3DDeviceImpl_1_CreateMatrix(LPDIRECT3DDEVICE iface,
877 LPD3DMATRIXHANDLE lpD3DMatHandle);
880 Main_IDirect3DDeviceImpl_1_SetMatrix(LPDIRECT3DDEVICE iface,
881 D3DMATRIXHANDLE D3DMatHandle,
882 LPD3DMATRIX lpD3DMatrix);
885 Main_IDirect3DDeviceImpl_1_GetMatrix(LPDIRECT3DDEVICE iface,
886 D3DMATRIXHANDLE D3DMatHandle,
887 LPD3DMATRIX lpD3DMatrix);
890 Main_IDirect3DDeviceImpl_1_DeleteMatrix(LPDIRECT3DDEVICE iface,
891 D3DMATRIXHANDLE D3DMatHandle);
894 Thunk_IDirect3DDeviceImpl_3_QueryInterface(LPDIRECT3DDEVICE3 iface,
899 Thunk_IDirect3DDeviceImpl_2_QueryInterface(LPDIRECT3DDEVICE2 iface,
904 Thunk_IDirect3DDeviceImpl_1_QueryInterface(LPDIRECT3DDEVICE iface,
909 Thunk_IDirect3DDeviceImpl_3_AddRef(LPDIRECT3DDEVICE3 iface);
912 Thunk_IDirect3DDeviceImpl_2_AddRef(LPDIRECT3DDEVICE2 iface);
915 Thunk_IDirect3DDeviceImpl_1_AddRef(LPDIRECT3DDEVICE iface);
918 Thunk_IDirect3DDeviceImpl_3_Release(LPDIRECT3DDEVICE3 iface);
921 Thunk_IDirect3DDeviceImpl_2_Release(LPDIRECT3DDEVICE2 iface);
924 Thunk_IDirect3DDeviceImpl_1_Release(LPDIRECT3DDEVICE iface);
927 Thunk_IDirect3DDeviceImpl_2_AddViewport(LPDIRECT3DDEVICE2 iface,
928 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
931 Thunk_IDirect3DDeviceImpl_1_AddViewport(LPDIRECT3DDEVICE iface,
932 LPDIRECT3DVIEWPORT lpDirect3DViewport);
935 Thunk_IDirect3DDeviceImpl_2_DeleteViewport(LPDIRECT3DDEVICE2 iface,
936 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
939 Thunk_IDirect3DDeviceImpl_1_DeleteViewport(LPDIRECT3DDEVICE iface,
940 LPDIRECT3DVIEWPORT lpDirect3DViewport);
943 Thunk_IDirect3DDeviceImpl_2_NextViewport(LPDIRECT3DDEVICE3 iface,
944 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2,
945 LPDIRECT3DVIEWPORT2* lplpDirect3DViewport2,
949 Thunk_IDirect3DDeviceImpl_1_NextViewport(LPDIRECT3DDEVICE3 iface,
950 LPDIRECT3DVIEWPORT lpDirect3DViewport,
951 LPDIRECT3DVIEWPORT* lplpDirect3DViewport,
955 Thunk_IDirect3DDeviceImpl_3_GetDirect3D(LPDIRECT3DDEVICE3 iface,
956 LPDIRECT3D3* lplpDirect3D3);
959 Thunk_IDirect3DDeviceImpl_2_GetDirect3D(LPDIRECT3DDEVICE2 iface,
960 LPDIRECT3D2* lplpDirect3D2);
963 Thunk_IDirect3DDeviceImpl_1_GetDirect3D(LPDIRECT3DDEVICE iface,
964 LPDIRECT3D* lplpDirect3D);
967 Thunk_IDirect3DDeviceImpl_2_SetCurrentViewport(LPDIRECT3DDEVICE2 iface,
968 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2);
971 Thunk_IDirect3DDeviceImpl_2_GetCurrentViewport(LPDIRECT3DDEVICE2 iface,
972 LPDIRECT3DVIEWPORT2* lpDirect3DViewport2);
975 Thunk_IDirect3DDeviceImpl_3_EnumTextureFormats(LPDIRECT3DDEVICE3 iface,
976 LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc,
980 Thunk_IDirect3DDeviceImpl_3_BeginScene(LPDIRECT3DDEVICE3 iface);
983 Thunk_IDirect3DDeviceImpl_2_BeginScene(LPDIRECT3DDEVICE2 iface);
986 Thunk_IDirect3DDeviceImpl_1_BeginScene(LPDIRECT3DDEVICE iface);
989 Thunk_IDirect3DDeviceImpl_3_EndScene(LPDIRECT3DDEVICE3 iface);
992 Thunk_IDirect3DDeviceImpl_2_EndScene(LPDIRECT3DDEVICE2 iface);
995 Thunk_IDirect3DDeviceImpl_1_EndScene(LPDIRECT3DDEVICE iface);
998 Thunk_IDirect3DDeviceImpl_3_SetTransform(LPDIRECT3DDEVICE3 iface,
999 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1000 LPD3DMATRIX lpD3DMatrix);
1003 Thunk_IDirect3DDeviceImpl_2_SetTransform(LPDIRECT3DDEVICE2 iface,
1004 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1005 LPD3DMATRIX lpD3DMatrix);
1008 Thunk_IDirect3DDeviceImpl_3_GetTransform(LPDIRECT3DDEVICE3 iface,
1009 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1010 LPD3DMATRIX lpD3DMatrix);
1013 Thunk_IDirect3DDeviceImpl_2_GetTransform(LPDIRECT3DDEVICE2 iface,
1014 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1015 LPD3DMATRIX lpD3DMatrix);
1018 Thunk_IDirect3DDeviceImpl_3_MultiplyTransform(LPDIRECT3DDEVICE3 iface,
1019 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1020 LPD3DMATRIX lpD3DMatrix);
1023 Thunk_IDirect3DDeviceImpl_2_MultiplyTransform(LPDIRECT3DDEVICE2 iface,
1024 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1025 LPD3DMATRIX lpD3DMatrix);
1028 Thunk_IDirect3DDeviceImpl_3_SetRenderState(LPDIRECT3DDEVICE3 iface,
1029 D3DRENDERSTATETYPE dwRenderStateType,
1030 DWORD dwRenderState);
1033 Thunk_IDirect3DDeviceImpl_2_SetRenderState(LPDIRECT3DDEVICE2 iface,
1034 D3DRENDERSTATETYPE dwRenderStateType,
1035 DWORD dwRenderState);
1038 Thunk_IDirect3DDeviceImpl_3_GetRenderState(LPDIRECT3DDEVICE3 iface,
1039 D3DRENDERSTATETYPE dwRenderStateType,
1040 LPDWORD lpdwRenderState);
1043 Thunk_IDirect3DDeviceImpl_2_GetRenderState(LPDIRECT3DDEVICE2 iface,
1044 D3DRENDERSTATETYPE dwRenderStateType,
1045 LPDWORD lpdwRenderState);
1048 Thunk_IDirect3DDeviceImpl_3_DrawPrimitive(LPDIRECT3DDEVICE3 iface,
1049 D3DPRIMITIVETYPE d3dptPrimitiveType,
1050 DWORD d3dvtVertexType,
1052 DWORD dwVertexCount,
1056 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitive(LPDIRECT3DDEVICE3 iface,
1057 D3DPRIMITIVETYPE d3dptPrimitiveType,
1058 DWORD d3dvtVertexType,
1060 DWORD dwVertexCount,
1066 Thunk_IDirect3DDeviceImpl_3_SetClipStatus(LPDIRECT3DDEVICE3 iface,
1067 LPD3DCLIPSTATUS lpD3DClipStatus);
1070 Thunk_IDirect3DDeviceImpl_2_SetClipStatus(LPDIRECT3DDEVICE2 iface,
1071 LPD3DCLIPSTATUS lpD3DClipStatus);
1074 Thunk_IDirect3DDeviceImpl_3_GetClipStatus(LPDIRECT3DDEVICE3 iface,
1075 LPD3DCLIPSTATUS lpD3DClipStatus);
1078 Thunk_IDirect3DDeviceImpl_2_GetClipStatus(LPDIRECT3DDEVICE2 iface,
1079 LPD3DCLIPSTATUS lpD3DClipStatus);
1082 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveStrided(LPDIRECT3DDEVICE3 iface,
1083 D3DPRIMITIVETYPE d3dptPrimitiveType,
1085 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
1086 DWORD dwVertexCount,
1090 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE3 iface,
1091 D3DPRIMITIVETYPE d3dptPrimitiveType,
1093 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
1094 DWORD dwVertexCount,
1100 Thunk_IDirect3DDeviceImpl_3_ComputeSphereVisibility(LPDIRECT3DDEVICE3 iface,
1101 LPD3DVECTOR lpCenters,
1105 LPDWORD lpdwReturnValues);
1108 Thunk_IDirect3DDeviceImpl_3_GetTextureStageState(LPDIRECT3DDEVICE3 iface,
1110 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
1114 Thunk_IDirect3DDeviceImpl_3_SetTextureStageState(LPDIRECT3DDEVICE3 iface,
1116 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
1120 Thunk_IDirect3DDeviceImpl_3_ValidateDevice(LPDIRECT3DDEVICE3 iface,
1121 LPDWORD lpdwPasses);
1124 Thunk_IDirect3DDeviceImpl_2_GetCaps(LPDIRECT3DDEVICE2 iface,
1125 LPD3DDEVICEDESC lpD3DHWDevDesc,
1126 LPD3DDEVICEDESC lpD3DHELDevDesc);
1129 Thunk_IDirect3DDeviceImpl_1_GetCaps(LPDIRECT3DDEVICE iface,
1130 LPD3DDEVICEDESC lpD3DHWDevDesc,
1131 LPD3DDEVICEDESC lpD3DHELDevDesc);
1134 Thunk_IDirect3DDeviceImpl_1_SwapTextureHandles(LPDIRECT3DDEVICE iface,
1135 LPDIRECT3DTEXTURE lpD3Dtex1,
1136 LPDIRECT3DTEXTURE lpD3DTex2);
1139 Thunk_IDirect3DDeviceImpl_2_GetStats(LPDIRECT3DDEVICE2 iface,
1140 LPD3DSTATS lpD3DStats);
1143 Thunk_IDirect3DDeviceImpl_1_GetStats(LPDIRECT3DDEVICE iface,
1144 LPD3DSTATS lpD3DStats);
1147 Thunk_IDirect3DDeviceImpl_3_SetRenderTarget(LPDIRECT3DDEVICE3 iface,
1148 LPDIRECTDRAWSURFACE4 lpNewRenderTarget,
1152 Thunk_IDirect3DDeviceImpl_3_GetRenderTarget(LPDIRECT3DDEVICE3 iface,
1153 LPDIRECTDRAWSURFACE4* lplpRenderTarget);
1156 Thunk_IDirect3DDeviceImpl_2_SetRenderTarget(LPDIRECT3DDEVICE2 iface,
1157 LPDIRECTDRAWSURFACE lpNewRenderTarget,
1161 Thunk_IDirect3DDeviceImpl_2_GetRenderTarget(LPDIRECT3DDEVICE2 iface,
1162 LPDIRECTDRAWSURFACE* lplpRenderTarget);
1165 Thunk_IDirect3DDeviceImpl_2_Vertex(LPDIRECT3DDEVICE2 iface,
1166 LPVOID lpVertexType);
1169 Thunk_IDirect3DDeviceImpl_2_Index(LPDIRECT3DDEVICE2 iface,
1173 Thunk_IDirect3DDeviceImpl_2_End(LPDIRECT3DDEVICE2 iface,
1177 Thunk_IDirect3DDeviceImpl_2_GetLightState(LPDIRECT3DDEVICE2 iface,
1178 D3DLIGHTSTATETYPE dwLightStateType,
1179 LPDWORD lpdwLightState);
1182 Thunk_IDirect3DDeviceImpl_2_SetLightState(LPDIRECT3DDEVICE2 iface,
1183 D3DLIGHTSTATETYPE dwLightStateType,
1184 DWORD dwLightState);
1187 Thunk_IDirect3DDeviceImpl_1_EnumTextureFormats(LPDIRECT3DDEVICE iface,
1188 LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc,
1192 Thunk_IDirect3DDeviceImpl_3_SetTexture(LPDIRECT3DDEVICE3 iface,
1194 LPDIRECT3DTEXTURE2 lpTexture2);
1197 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveVB(LPDIRECT3DDEVICE3 iface,
1198 D3DPRIMITIVETYPE d3dptPrimitiveType,
1199 LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,
1200 DWORD dwStartVertex,
1201 DWORD dwNumVertices,
1205 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE3 iface,
1206 D3DPRIMITIVETYPE d3dptPrimitiveType,
1207 LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,
1213 Thunk_IDirect3DDeviceImpl_3_GetTexture(LPDIRECT3DDEVICE3 iface,
1215 LPDIRECT3DTEXTURE2* lplpTexture2);
1217 #endif /* __GRAPHICS_WINE_D3D_PRIVATE_H */