Support viewports the D3D7 way.
[wine/multimedia.git] / dlls / ddraw / d3ddevice / main.c
blobfa69ac7728c9d1d17a4089ddb6b8e752ccecb234
1 /* Direct3D Device
2 * Copyright (c) 1998 Lionel ULMER
4 * This file contains all the common stuff for D3D devices.
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #include "config.h"
23 #include <string.h>
25 #include "windef.h"
26 #include "winerror.h"
27 #include "objbase.h"
28 #include "ddraw.h"
29 #include "d3d.h"
30 #include "wine/debug.h"
32 #include "d3d_private.h"
33 #include "main.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
37 HRESULT WINAPI
38 Main_IDirect3DDeviceImpl_7_3T_2T_1T_QueryInterface(LPDIRECT3DDEVICE7 iface,
39 REFIID riid,
40 LPVOID* obp)
42 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
43 TRACE("(%p/%p)->(%s,%p)\n", This, iface, debugstr_guid(riid), obp);
45 *obp = NULL;
47 if ( IsEqualGUID( &IID_IUnknown, riid ) ) {
48 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This, IDirect3DDevice7));
49 *obp = iface;
50 TRACE(" Creating IUnknown interface at %p.\n", *obp);
51 return S_OK;
53 if ( IsEqualGUID( &IID_IDirect3DDevice, riid ) ) {
54 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This, IDirect3DDevice7));
55 *obp = ICOM_INTERFACE(This, IDirect3DDevice);
56 TRACE(" Creating IDirect3DDevice interface %p\n", *obp);
57 return S_OK;
59 if ( IsEqualGUID( &IID_IDirect3DDevice2, riid ) ) {
60 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This, IDirect3DDevice7));
61 *obp = ICOM_INTERFACE(This, IDirect3DDevice2);
62 TRACE(" Creating IDirect3DDevice2 interface %p\n", *obp);
63 return S_OK;
65 if ( IsEqualGUID( &IID_IDirect3DDevice3, riid ) ) {
66 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This, IDirect3DDevice7));
67 *obp = ICOM_INTERFACE(This, IDirect3DDevice3);
68 TRACE(" Creating IDirect3DDevice3 interface %p\n", *obp);
69 return S_OK;
71 if ( IsEqualGUID( &IID_IDirect3DDevice7, riid ) ) {
72 IDirect3DDevice7_AddRef(ICOM_INTERFACE(This, IDirect3DDevice7));
73 *obp = ICOM_INTERFACE(This, IDirect3DDevice7);
74 TRACE(" Creating IDirect3DDevice7 interface %p\n", *obp);
75 return S_OK;
77 FIXME("(%p): interface for IID %s NOT found!\n", This, debugstr_guid(riid));
78 return OLE_E_ENUM_NOMORE;
81 ULONG WINAPI
82 Main_IDirect3DDeviceImpl_7_3T_2T_1T_AddRef(LPDIRECT3DDEVICE7 iface)
84 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
85 TRACE("(%p/%p)->() incrementing from %lu.\n", This, iface, This->ref);
86 return ++(This->ref);
89 ULONG WINAPI
90 Main_IDirect3DDeviceImpl_7_3T_2T_1T_Release(LPDIRECT3DDEVICE7 iface)
92 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
93 TRACE("(%p/%p)->() decrementing from %lu.\n", This, iface, This->ref);
94 if (!--(This->ref)) {
95 int i;
96 /* Release texture associated with the device */
97 for (i = 0; i < MAX_TEXTURES; i++) {
98 if (This->current_texture[i] != NULL)
99 IDirect3DTexture2_Release(ICOM_INTERFACE(This->current_texture[i], IDirect3DTexture2));
102 HeapFree(GetProcessHeap(), 0, This);
103 return 0;
105 return This->ref;
108 HRESULT WINAPI
109 Main_IDirect3DDeviceImpl_7_GetCaps(LPDIRECT3DDEVICE7 iface,
110 LPD3DDEVICEDESC7 lpD3DHELDevDesc)
112 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
113 FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpD3DHELDevDesc);
114 return DD_OK;
117 HRESULT WINAPI
118 Main_IDirect3DDeviceImpl_7_3T_EnumTextureFormats(LPDIRECT3DDEVICE7 iface,
119 LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc,
120 LPVOID lpArg)
122 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
123 FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lpD3DEnumPixelProc, lpArg);
124 return DD_OK;
127 HRESULT WINAPI
128 Main_IDirect3DDeviceImpl_7_3T_2T_1T_BeginScene(LPDIRECT3DDEVICE7 iface)
130 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
131 TRACE("(%p/%p)->()\n", This, iface);
132 /* Nothing to do */
133 return DD_OK;
136 HRESULT WINAPI
137 Main_IDirect3DDeviceImpl_7_3T_2T_1T_EndScene(LPDIRECT3DDEVICE7 iface)
139 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
140 TRACE("(%p/%p)->()\n", This, iface);
141 /* Nothing to do */
142 return DD_OK;
145 HRESULT WINAPI
146 Main_IDirect3DDeviceImpl_7_3T_2T_1T_GetDirect3D(LPDIRECT3DDEVICE7 iface,
147 LPDIRECT3D7* lplpDirect3D3)
149 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
150 TRACE("(%p/%p)->(%p)\n", This, iface, lplpDirect3D3);
152 *lplpDirect3D3 = ICOM_INTERFACE(This->d3d, IDirect3D7);
153 IDirect3D7_AddRef(ICOM_INTERFACE(This->d3d, IDirect3D7));
155 TRACE(" returning interface %p\n", *lplpDirect3D3);
156 return DD_OK;
159 HRESULT WINAPI
160 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderTarget(LPDIRECT3DDEVICE7 iface,
161 LPDIRECTDRAWSURFACE7 lpNewRenderTarget,
162 DWORD dwFlags)
164 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
165 FIXME("(%p/%p)->(%p,%08lx): stub!\n", This, iface, lpNewRenderTarget, dwFlags);
166 return DD_OK;
169 HRESULT WINAPI
170 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderTarget(LPDIRECT3DDEVICE7 iface,
171 LPDIRECTDRAWSURFACE7* lplpRenderTarget)
173 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
174 TRACE("(%p/%p)->(%p)\n", This, iface, lplpRenderTarget);
176 *lplpRenderTarget = ICOM_INTERFACE(This->surface, IDirectDrawSurface7);
177 IDirectDrawSurface7_AddRef(ICOM_INTERFACE(This->surface, IDirectDrawSurface7));
179 TRACE(" returning surface at %p.\n", *lplpRenderTarget);
181 return DD_OK;
184 HRESULT WINAPI
185 Main_IDirect3DDeviceImpl_7_Clear(LPDIRECT3DDEVICE7 iface,
186 DWORD dwCount,
187 LPD3DRECT lpRects,
188 DWORD dwFlags,
189 D3DCOLOR dwColor,
190 D3DVALUE dvZ,
191 DWORD dwStencil)
193 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
194 FIXME("(%p/%p)->(%08lx,%p,%08lx,%08lx,%f,%08lx): stub!\n", This, iface, dwCount, lpRects, dwFlags, (DWORD) dwColor, dvZ, dwStencil);
195 return DD_OK;
198 HRESULT WINAPI
199 Main_IDirect3DDeviceImpl_7_3T_2T_SetTransform(LPDIRECT3DDEVICE7 iface,
200 D3DTRANSFORMSTATETYPE dtstTransformStateType,
201 LPD3DMATRIX lpD3DMatrix)
203 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
204 FIXME("(%p/%p)->(%08x,%p): stub!\n", This, iface, dtstTransformStateType, lpD3DMatrix);
205 return DD_OK;
208 HRESULT WINAPI
209 Main_IDirect3DDeviceImpl_7_3T_2T_GetTransform(LPDIRECT3DDEVICE7 iface,
210 D3DTRANSFORMSTATETYPE dtstTransformStateType,
211 LPD3DMATRIX lpD3DMatrix)
213 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
214 FIXME("(%p/%p)->(%08x,%p): stub!\n", This, iface, dtstTransformStateType, lpD3DMatrix);
215 return DD_OK;
218 HRESULT WINAPI
219 Main_IDirect3DDeviceImpl_7_SetViewport(LPDIRECT3DDEVICE7 iface,
220 LPD3DVIEWPORT7 lpData)
222 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
223 TRACE("(%p/%p)->(%p)\n", This, iface, lpData);
225 if (TRACE_ON(ddraw)) {
226 TRACE(" viewport is : \n");
227 TRACE(" - dwX = %ld dwY = %ld\n",
228 lpData->dwX, lpData->dwY);
229 TRACE(" - dwWidth = %ld dwHeight = %ld\n",
230 lpData->dwWidth, lpData->dwHeight);
231 TRACE(" - dvMinZ = %f dvMaxZ = %f\n",
232 lpData->dvMinZ, lpData->dvMaxZ);
234 This->active_viewport = *lpData;
236 return DD_OK;
239 HRESULT WINAPI
240 Main_IDirect3DDeviceImpl_7_3T_2T_MultiplyTransform(LPDIRECT3DDEVICE7 iface,
241 D3DTRANSFORMSTATETYPE dtstTransformStateType,
242 LPD3DMATRIX lpD3DMatrix)
244 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
245 FIXME("(%p/%p)->(%08x,%p): stub!\n", This, iface, dtstTransformStateType, lpD3DMatrix);
246 return DD_OK;
249 HRESULT WINAPI
250 Main_IDirect3DDeviceImpl_7_GetViewport(LPDIRECT3DDEVICE7 iface,
251 LPD3DVIEWPORT7 lpData)
253 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
254 TRACE("(%p/%p)->(%p)\n", This, iface, lpData);
256 *lpData = This->active_viewport;
258 if (TRACE_ON(ddraw)) {
259 TRACE(" returning viewport : \n");
260 TRACE(" - dwX = %ld dwY = %ld\n",
261 lpData->dwX, lpData->dwY);
262 TRACE(" - dwWidth = %ld dwHeight = %ld\n",
263 lpData->dwWidth, lpData->dwHeight);
264 TRACE(" - dvMinZ = %f dvMaxZ = %f\n",
265 lpData->dvMinZ, lpData->dvMaxZ);
268 return DD_OK;
271 HRESULT WINAPI
272 Main_IDirect3DDeviceImpl_7_SetMaterial(LPDIRECT3DDEVICE7 iface,
273 LPD3DMATERIAL7 lpMat)
275 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
276 FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpMat);
277 return DD_OK;
280 HRESULT WINAPI
281 Main_IDirect3DDeviceImpl_7_GetMaterial(LPDIRECT3DDEVICE7 iface,
282 LPD3DMATERIAL7 lpMat)
284 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
285 FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpMat);
286 return DD_OK;
289 HRESULT WINAPI
290 Main_IDirect3DDeviceImpl_7_SetLight(LPDIRECT3DDEVICE7 iface,
291 DWORD dwLightIndex,
292 LPD3DLIGHT7 lpLight)
294 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
295 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This, iface, dwLightIndex, lpLight);
296 return DD_OK;
299 HRESULT WINAPI
300 Main_IDirect3DDeviceImpl_7_GetLight(LPDIRECT3DDEVICE7 iface,
301 DWORD dwLightIndex,
302 LPD3DLIGHT7 lpLight)
304 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
305 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This, iface, dwLightIndex, lpLight);
306 return DD_OK;
309 HRESULT WINAPI
310 Main_IDirect3DDeviceImpl_7_3T_2T_SetRenderState(LPDIRECT3DDEVICE7 iface,
311 D3DRENDERSTATETYPE dwRenderStateType,
312 DWORD dwRenderState)
314 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
315 FIXME("(%p/%p)->(%08x,%08lx): stub!\n", This, iface, dwRenderStateType, dwRenderState);
316 return DD_OK;
319 HRESULT WINAPI
320 Main_IDirect3DDeviceImpl_7_3T_2T_GetRenderState(LPDIRECT3DDEVICE7 iface,
321 D3DRENDERSTATETYPE dwRenderStateType,
322 LPDWORD lpdwRenderState)
324 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
325 FIXME("(%p/%p)->(%08x,%p): stub!\n", This, iface, dwRenderStateType, lpdwRenderState);
326 return DD_OK;
329 HRESULT WINAPI
330 Main_IDirect3DDeviceImpl_7_BeginStateBlock(LPDIRECT3DDEVICE7 iface)
332 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
333 FIXME("(%p/%p)->(): stub!\n", This, iface);
334 return DD_OK;
337 HRESULT WINAPI
338 Main_IDirect3DDeviceImpl_7_EndStateBlock(LPDIRECT3DDEVICE7 iface,
339 LPDWORD lpdwBlockHandle)
341 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
342 FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpdwBlockHandle);
343 return DD_OK;
346 HRESULT WINAPI
347 Main_IDirect3DDeviceImpl_7_PreLoad(LPDIRECT3DDEVICE7 iface,
348 LPDIRECTDRAWSURFACE7 lpddsTexture)
350 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
351 FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpddsTexture);
352 return DD_OK;
355 HRESULT WINAPI
356 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitive(LPDIRECT3DDEVICE7 iface,
357 D3DPRIMITIVETYPE d3dptPrimitiveType,
358 DWORD d3dvtVertexType,
359 LPVOID lpvVertices,
360 DWORD dwVertexCount,
361 DWORD dwFlags)
363 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
364 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, d3dvtVertexType, lpvVertices, dwVertexCount, dwFlags);
365 return DD_OK;
368 HRESULT WINAPI
369 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitive(LPDIRECT3DDEVICE7 iface,
370 D3DPRIMITIVETYPE d3dptPrimitiveType,
371 DWORD d3dvtVertexType,
372 LPVOID lpvVertices,
373 DWORD dwVertexCount,
374 LPWORD dwIndices,
375 DWORD dwIndexCount,
376 DWORD dwFlags)
378 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
379 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, d3dvtVertexType, lpvVertices, dwVertexCount, dwIndices, dwIndexCount, dwFlags);
380 return DD_OK;
383 HRESULT WINAPI
384 Main_IDirect3DDeviceImpl_7_3T_2T_SetClipStatus(LPDIRECT3DDEVICE7 iface,
385 LPD3DCLIPSTATUS lpD3DClipStatus)
387 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
388 FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpD3DClipStatus);
389 return DD_OK;
392 HRESULT WINAPI
393 Main_IDirect3DDeviceImpl_7_3T_2T_GetClipStatus(LPDIRECT3DDEVICE7 iface,
394 LPD3DCLIPSTATUS lpD3DClipStatus)
396 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
397 FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpD3DClipStatus);
398 return DD_OK;
401 HRESULT WINAPI
402 Main_IDirect3DDeviceImpl_7_3T_DrawPrimitiveStrided(LPDIRECT3DDEVICE7 iface,
403 D3DPRIMITIVETYPE d3dptPrimitiveType,
404 DWORD dwVertexType,
405 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
406 DWORD dwVertexCount,
407 DWORD dwFlags)
409 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
410 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, dwVertexType, lpD3DDrawPrimStrideData, dwVertexCount, dwFlags);
411 return DD_OK;
414 HRESULT WINAPI
415 Main_IDirect3DDeviceImpl_7_3T_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE7 iface,
416 D3DPRIMITIVETYPE d3dptPrimitiveType,
417 DWORD dwVertexType,
418 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
419 DWORD dwVertexCount,
420 LPWORD lpIndex,
421 DWORD dwIndexCount,
422 DWORD dwFlags)
424 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
425 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, dwVertexType, lpD3DDrawPrimStrideData, dwVertexCount, lpIndex, dwIndexCount, dwFlags);
426 return DD_OK;
429 HRESULT WINAPI
430 Main_IDirect3DDeviceImpl_7_DrawPrimitiveVB(LPDIRECT3DDEVICE7 iface,
431 D3DPRIMITIVETYPE d3dptPrimitiveType,
432 LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,
433 DWORD dwStartVertex,
434 DWORD dwNumVertices,
435 DWORD dwFlags)
437 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
438 FIXME("(%p/%p)->(%08x,%p,%08lx,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, lpD3DVertexBuf, dwStartVertex, dwNumVertices, dwFlags);
439 return DD_OK;
442 HRESULT WINAPI
443 Main_IDirect3DDeviceImpl_7_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE7 iface,
444 D3DPRIMITIVETYPE d3dptPrimitiveType,
445 LPDIRECT3DVERTEXBUFFER7 lpD3DVertexBuf,
446 DWORD dwStartVertex,
447 DWORD dwNumVertices,
448 LPWORD lpwIndices,
449 DWORD dwIndexCount,
450 DWORD dwFlags)
452 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
453 FIXME("(%p/%p)->(%08x,%p,%08lx,%08lx,%p,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, lpD3DVertexBuf, dwStartVertex, dwNumVertices, lpwIndices, dwIndexCount, dwFlags);
454 return DD_OK;
457 HRESULT WINAPI
458 Main_IDirect3DDeviceImpl_7_3T_ComputeSphereVisibility(LPDIRECT3DDEVICE7 iface,
459 LPD3DVECTOR lpCenters,
460 LPD3DVALUE lpRadii,
461 DWORD dwNumSpheres,
462 DWORD dwFlags,
463 LPDWORD lpdwReturnValues)
465 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
466 FIXME("(%p/%p)->(%p,%p,%08lx,%08lx,%p): stub!\n", This, iface, lpCenters, lpRadii, dwNumSpheres, dwFlags, lpdwReturnValues);
467 return DD_OK;
470 HRESULT WINAPI
471 Main_IDirect3DDeviceImpl_7_GetTexture(LPDIRECT3DDEVICE7 iface,
472 DWORD dwStage,
473 LPDIRECTDRAWSURFACE7* lpTexture)
475 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
476 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This, iface, dwStage, lpTexture);
477 return DD_OK;
480 HRESULT WINAPI
481 Main_IDirect3DDeviceImpl_7_3T_SetTexture(LPDIRECT3DDEVICE7 iface,
482 DWORD dwStage,
483 LPDIRECTDRAWSURFACE7 lpTexture)
485 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
486 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This, iface, dwStage, lpTexture);
487 return DD_OK;
490 HRESULT WINAPI
491 Main_IDirect3DDeviceImpl_7_3T_GetTextureStageState(LPDIRECT3DDEVICE7 iface,
492 DWORD dwStage,
493 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
494 LPDWORD lpdwState)
496 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
497 FIXME("(%p/%p)->(%08lx,%08x,%p): stub!\n", This, iface, dwStage, d3dTexStageStateType, lpdwState);
498 return DD_OK;
501 HRESULT WINAPI
502 Main_IDirect3DDeviceImpl_7_3T_SetTextureStageState(LPDIRECT3DDEVICE7 iface,
503 DWORD dwStage,
504 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
505 DWORD dwState)
507 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
508 FIXME("(%p/%p)->(%08lx,%08x,%08lx): stub!\n", This, iface, dwStage, d3dTexStageStateType, dwState);
509 return DD_OK;
512 HRESULT WINAPI
513 Main_IDirect3DDeviceImpl_7_3T_ValidateDevice(LPDIRECT3DDEVICE7 iface,
514 LPDWORD lpdwPasses)
516 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
517 FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpdwPasses);
518 return DD_OK;
521 HRESULT WINAPI
522 Main_IDirect3DDeviceImpl_7_ApplyStateBlock(LPDIRECT3DDEVICE7 iface,
523 DWORD dwBlockHandle)
525 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
526 FIXME("(%p/%p)->(%08lx): stub!\n", This, iface, dwBlockHandle);
527 return DD_OK;
530 HRESULT WINAPI
531 Main_IDirect3DDeviceImpl_7_CaptureStateBlock(LPDIRECT3DDEVICE7 iface,
532 DWORD dwBlockHandle)
534 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
535 FIXME("(%p/%p)->(%08lx): stub!\n", This, iface, dwBlockHandle);
536 return DD_OK;
539 HRESULT WINAPI
540 Main_IDirect3DDeviceImpl_7_DeleteStateBlock(LPDIRECT3DDEVICE7 iface,
541 DWORD dwBlockHandle)
543 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
544 FIXME("(%p/%p)->(%08lx): stub!\n", This, iface, dwBlockHandle);
545 return DD_OK;
548 HRESULT WINAPI
549 Main_IDirect3DDeviceImpl_7_CreateStateBlock(LPDIRECT3DDEVICE7 iface,
550 D3DSTATEBLOCKTYPE d3dsbType,
551 LPDWORD lpdwBlockHandle)
553 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
554 FIXME("(%p/%p)->(%08x,%p): stub!\n", This, iface, d3dsbType, lpdwBlockHandle);
555 return DD_OK;
558 HRESULT WINAPI
559 Main_IDirect3DDeviceImpl_7_Load(LPDIRECT3DDEVICE7 iface,
560 LPDIRECTDRAWSURFACE7 lpDestTex,
561 LPPOINT lpDestPoint,
562 LPDIRECTDRAWSURFACE7 lpSrcTex,
563 LPRECT lprcSrcRect,
564 DWORD dwFlags)
566 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
567 FIXME("(%p/%p)->(%p,%p,%p,%p,%08lx): stub!\n", This, iface, lpDestTex, lpDestPoint, lpSrcTex, lprcSrcRect, dwFlags);
568 return DD_OK;
571 HRESULT WINAPI
572 Main_IDirect3DDeviceImpl_7_LightEnable(LPDIRECT3DDEVICE7 iface,
573 DWORD dwLightIndex,
574 BOOL bEnable)
576 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
577 FIXME("(%p/%p)->(%08lx,%d): stub!\n", This, iface, dwLightIndex, bEnable);
578 return DD_OK;
581 HRESULT WINAPI
582 Main_IDirect3DDeviceImpl_7_GetLightEnable(LPDIRECT3DDEVICE7 iface,
583 DWORD dwLightIndex,
584 BOOL* pbEnable)
586 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
587 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This, iface, dwLightIndex, pbEnable);
588 return DD_OK;
591 HRESULT WINAPI
592 Main_IDirect3DDeviceImpl_7_SetClipPlane(LPDIRECT3DDEVICE7 iface,
593 DWORD dwIndex,
594 D3DVALUE* pPlaneEquation)
596 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
597 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This, iface, dwIndex, pPlaneEquation);
598 return DD_OK;
601 HRESULT WINAPI
602 Main_IDirect3DDeviceImpl_7_GetClipPlane(LPDIRECT3DDEVICE7 iface,
603 DWORD dwIndex,
604 D3DVALUE* pPlaneEquation)
606 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
607 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This, iface, dwIndex, pPlaneEquation);
608 return DD_OK;
611 HRESULT WINAPI
612 Main_IDirect3DDeviceImpl_7_GetInfo(LPDIRECT3DDEVICE7 iface,
613 DWORD dwDevInfoID,
614 LPVOID pDevInfoStruct,
615 DWORD dwSize)
617 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface);
618 FIXME("(%p/%p)->(%08lx,%p,%08lx): stub!\n", This, iface, dwDevInfoID, pDevInfoStruct, dwSize);
619 return DD_OK;
622 HRESULT WINAPI
623 Main_IDirect3DDeviceImpl_3_2T_1T_GetCaps(LPDIRECT3DDEVICE3 iface,
624 LPD3DDEVICEDESC lpD3DHWDevDesc,
625 LPD3DDEVICEDESC lpD3DHELDevDesc)
627 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
628 FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lpD3DHWDevDesc, lpD3DHELDevDesc);
629 return DD_OK;
632 HRESULT WINAPI
633 Main_IDirect3DDeviceImpl_3_2T_1T_GetStats(LPDIRECT3DDEVICE3 iface,
634 LPD3DSTATS lpD3DStats)
636 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
637 FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpD3DStats);
638 return DD_OK;
641 HRESULT WINAPI
642 Main_IDirect3DDeviceImpl_3_2T_1T_AddViewport(LPDIRECT3DDEVICE3 iface,
643 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3)
645 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
646 IDirect3DViewportImpl *lpDirect3DViewportImpl = ICOM_OBJECT(IDirect3DViewportImpl, IDirect3DViewport3, lpDirect3DViewport3);
648 TRACE("(%p/%p)->(%p)\n", This, iface, lpDirect3DViewport3);
650 lpDirect3DViewportImpl->next = This->viewport_list;
651 This->viewport_list = lpDirect3DViewportImpl;
653 return DD_OK;
656 HRESULT WINAPI
657 Main_IDirect3DDeviceImpl_3_2T_1T_DeleteViewport(LPDIRECT3DDEVICE3 iface,
658 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3)
660 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
661 IDirect3DViewportImpl *lpDirect3DViewportImpl = ICOM_OBJECT(IDirect3DViewportImpl, IDirect3DViewport3, lpDirect3DViewport3);
662 IDirect3DViewportImpl *cur_viewport, *prev_viewport = NULL;
664 TRACE("(%p/%p)->(%p)\n", This, iface, lpDirect3DViewport3);
666 cur_viewport = This->viewport_list;
667 while (cur_viewport != NULL) {
668 if (cur_viewport == lpDirect3DViewportImpl) {
669 if (prev_viewport == NULL) This->viewport_list = cur_viewport->next;
670 else prev_viewport->next = cur_viewport->next;
671 /* TODO : add desactivate of the viewport and all associated lights... */
672 return DD_OK;
674 prev_viewport = cur_viewport;
675 cur_viewport = cur_viewport->next;
678 return DDERR_INVALIDPARAMS;
681 HRESULT WINAPI
682 Main_IDirect3DDeviceImpl_3_2T_1T_NextViewport(LPDIRECT3DDEVICE3 iface,
683 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3,
684 LPDIRECT3DVIEWPORT3* lplpDirect3DViewport3,
685 DWORD dwFlags)
687 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
688 IDirect3DViewportImpl *res = NULL;
690 TRACE("(%p/%p)->(%p,%p,%08lx)\n", This, iface, lpDirect3DViewport3, lplpDirect3DViewport3, dwFlags);
692 switch (dwFlags) {
693 case D3DNEXT_NEXT: {
694 IDirect3DViewportImpl *lpDirect3DViewportImpl = ICOM_OBJECT(IDirect3DViewportImpl, IDirect3DViewport3, lpDirect3DViewport3);
695 res = lpDirect3DViewportImpl->next;
696 } break;
697 case D3DNEXT_HEAD: {
698 res = This->viewport_list;
699 } break;
700 case D3DNEXT_TAIL: {
701 IDirect3DViewportImpl *cur_viewport = This->viewport_list;
702 if (cur_viewport != NULL) {
703 while (cur_viewport->next != NULL) cur_viewport = cur_viewport->next;
705 res = cur_viewport;
706 } break;
707 default:
708 *lplpDirect3DViewport3 = NULL;
709 return DDERR_INVALIDPARAMS;
711 *lplpDirect3DViewport3 = ICOM_INTERFACE(res, IDirect3DViewport3);
712 return DD_OK;
715 HRESULT WINAPI
716 Main_IDirect3DDeviceImpl_3_2T_SetCurrentViewport(LPDIRECT3DDEVICE3 iface,
717 LPDIRECT3DVIEWPORT3 lpDirect3DViewport3)
719 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
720 TRACE("(%p/%p)->(%p)\n", This, iface, lpDirect3DViewport3);
722 /* Should check if the viewport was added or not */
724 /* Set this viewport as the current viewport */
725 This->current_viewport = ICOM_OBJECT(IDirect3DViewportImpl, IDirect3DViewport3, lpDirect3DViewport3);
727 /* Activate this viewport */
728 This->current_viewport->active_device = This;
729 This->current_viewport->activate(This->current_viewport);
731 /* And copy the values in the structure used by the device */
732 if (This->current_viewport->use_vp2) {
733 This->active_viewport.dwX = This->current_viewport->viewports.vp2.dwX;
734 This->active_viewport.dwY = This->current_viewport->viewports.vp2.dwY;
735 This->active_viewport.dwHeight = This->current_viewport->viewports.vp2.dwHeight;
736 This->active_viewport.dwWidth = This->current_viewport->viewports.vp2.dwWidth;
737 This->active_viewport.dvMinZ = This->current_viewport->viewports.vp2.dvMinZ;
738 This->active_viewport.dvMaxZ = This->current_viewport->viewports.vp2.dvMaxZ;
739 } else {
740 This->active_viewport.dwX = This->current_viewport->viewports.vp1.dwX;
741 This->active_viewport.dwY = This->current_viewport->viewports.vp1.dwY;
742 This->active_viewport.dwHeight = This->current_viewport->viewports.vp1.dwHeight;
743 This->active_viewport.dwWidth = This->current_viewport->viewports.vp1.dwWidth;
744 This->active_viewport.dvMinZ = This->current_viewport->viewports.vp1.dvMinZ;
745 This->active_viewport.dvMaxZ = This->current_viewport->viewports.vp1.dvMaxZ;
748 return DD_OK;
751 HRESULT WINAPI
752 Main_IDirect3DDeviceImpl_3_2T_GetCurrentViewport(LPDIRECT3DDEVICE3 iface,
753 LPDIRECT3DVIEWPORT3* lplpDirect3DViewport3)
755 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
756 TRACE("(%p/%p)->(%p)\n", This, iface, lplpDirect3DViewport3);
758 *lplpDirect3DViewport3 = ICOM_INTERFACE(This->current_viewport, IDirect3DViewport3);
759 TRACE(" returning interface %p\n", *lplpDirect3DViewport3);
761 return DD_OK;
764 HRESULT WINAPI
765 Main_IDirect3DDeviceImpl_3_Begin(LPDIRECT3DDEVICE3 iface,
766 D3DPRIMITIVETYPE d3dptPrimitiveType,
767 DWORD dwVertexTypeDesc,
768 DWORD dwFlags)
770 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
771 FIXME("(%p/%p)->(%08x,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, dwVertexTypeDesc, dwFlags);
772 return DD_OK;
775 HRESULT WINAPI
776 Main_IDirect3DDeviceImpl_3_BeginIndexed(LPDIRECT3DDEVICE3 iface,
777 D3DPRIMITIVETYPE d3dptPrimitiveType,
778 DWORD d3dvtVertexType,
779 LPVOID lpvVertices,
780 DWORD dwNumVertices,
781 DWORD dwFlags)
783 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
784 FIXME("(%p/%p)->(%08x,%08lx,%p,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, d3dvtVertexType, lpvVertices, dwNumVertices, dwFlags);
785 return DD_OK;
788 HRESULT WINAPI
789 Main_IDirect3DDeviceImpl_3_2T_Vertex(LPDIRECT3DDEVICE3 iface,
790 LPVOID lpVertexType)
792 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
793 FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpVertexType);
794 return DD_OK;
797 HRESULT WINAPI
798 Main_IDirect3DDeviceImpl_3_2T_Index(LPDIRECT3DDEVICE3 iface,
799 WORD wVertexIndex)
801 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
802 FIXME("(%p/%p)->(%04x): stub!\n", This, iface, wVertexIndex);
803 return DD_OK;
806 HRESULT WINAPI
807 Main_IDirect3DDeviceImpl_3_2T_End(LPDIRECT3DDEVICE3 iface,
808 DWORD dwFlags)
810 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
811 FIXME("(%p/%p)->(%08lx): stub!\n", This, iface, dwFlags);
812 return DD_OK;
815 HRESULT WINAPI
816 Main_IDirect3DDeviceImpl_3_2T_GetLightState(LPDIRECT3DDEVICE3 iface,
817 D3DLIGHTSTATETYPE dwLightStateType,
818 LPDWORD lpdwLightState)
820 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
821 FIXME("(%p/%p)->(%08x,%p): stub!\n", This, iface, dwLightStateType, lpdwLightState);
822 return DD_OK;
825 HRESULT WINAPI
826 Main_IDirect3DDeviceImpl_3_2T_SetLightState(LPDIRECT3DDEVICE3 iface,
827 D3DLIGHTSTATETYPE dwLightStateType,
828 DWORD dwLightState)
830 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
831 FIXME("(%p/%p)->(%08x,%08lx): stub!\n", This, iface, dwLightStateType, dwLightState);
832 return DD_OK;
835 HRESULT WINAPI
836 Main_IDirect3DDeviceImpl_3_DrawPrimitiveVB(LPDIRECT3DDEVICE3 iface,
837 D3DPRIMITIVETYPE d3dptPrimitiveType,
838 LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,
839 DWORD dwStartVertex,
840 DWORD dwNumVertices,
841 DWORD dwFlags)
843 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
844 FIXME("(%p/%p)->(%08x,%p,%08lx,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, lpD3DVertexBuf, dwStartVertex, dwNumVertices, dwFlags);
845 return DD_OK;
848 HRESULT WINAPI
849 Main_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveVB(LPDIRECT3DDEVICE3 iface,
850 D3DPRIMITIVETYPE d3dptPrimitiveType,
851 LPDIRECT3DVERTEXBUFFER lpD3DVertexBuf,
852 LPWORD lpwIndices,
853 DWORD dwIndexCount,
854 DWORD dwFlags)
856 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
857 FIXME("(%p/%p)->(%08x,%p,%p,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, lpD3DVertexBuf, lpwIndices, dwIndexCount, dwFlags);
858 return DD_OK;
861 HRESULT WINAPI
862 Main_IDirect3DDeviceImpl_3_GetTexture(LPDIRECT3DDEVICE3 iface,
863 DWORD dwStage,
864 LPDIRECT3DTEXTURE2* lplpTexture2)
866 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice3, iface);
867 FIXME("(%p/%p)->(%08lx,%p): stub!\n", This, iface, dwStage, lplpTexture2);
868 return DD_OK;
871 HRESULT WINAPI
872 Main_IDirect3DDeviceImpl_2_SwapTextureHandles(LPDIRECT3DDEVICE2 iface,
873 LPDIRECT3DTEXTURE2 lpD3DTex1,
874 LPDIRECT3DTEXTURE2 lpD3DTex2)
876 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice2, iface);
877 FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lpD3DTex1, lpD3DTex2);
878 return DD_OK;
881 HRESULT WINAPI
882 Main_IDirect3DDeviceImpl_2_NextViewport(LPDIRECT3DDEVICE2 iface,
883 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2,
884 LPDIRECT3DVIEWPORT2* lplpDirect3DViewport2,
885 DWORD dwFlags)
887 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice2, iface);
888 FIXME("(%p/%p)->(%p,%p,%08lx): stub!\n", This, iface, lpDirect3DViewport2, lplpDirect3DViewport2, dwFlags);
889 return DD_OK;
892 HRESULT WINAPI
893 Main_IDirect3DDeviceImpl_2_1T_EnumTextureFormats(LPDIRECT3DDEVICE2 iface,
894 LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc,
895 LPVOID lpArg)
897 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice2, iface);
898 FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lpD3DEnumTextureProc, lpArg);
899 return DD_OK;
902 HRESULT WINAPI
903 Main_IDirect3DDeviceImpl_2_Begin(LPDIRECT3DDEVICE2 iface,
904 D3DPRIMITIVETYPE d3dpt,
905 D3DVERTEXTYPE dwVertexTypeDesc,
906 DWORD dwFlags)
908 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice2, iface);
909 FIXME("(%p/%p)->(%08x,%08x,%08lx): stub!\n", This, iface, d3dpt, dwVertexTypeDesc, dwFlags);
910 return DD_OK;
913 HRESULT WINAPI
914 Main_IDirect3DDeviceImpl_2_BeginIndexed(LPDIRECT3DDEVICE2 iface,
915 D3DPRIMITIVETYPE d3dptPrimitiveType,
916 D3DVERTEXTYPE d3dvtVertexType,
917 LPVOID lpvVertices,
918 DWORD dwNumVertices,
919 DWORD dwFlags)
921 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice2, iface);
922 FIXME("(%p/%p)->(%08x,%08x,%p,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, d3dvtVertexType, lpvVertices, dwNumVertices, dwFlags);
923 return DD_OK;
926 HRESULT WINAPI
927 Main_IDirect3DDeviceImpl_2_DrawPrimitive(LPDIRECT3DDEVICE2 iface,
928 D3DPRIMITIVETYPE d3dptPrimitiveType,
929 D3DVERTEXTYPE d3dvtVertexType,
930 LPVOID lpvVertices,
931 DWORD dwVertexCount,
932 DWORD dwFlags)
934 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice2, iface);
935 FIXME("(%p/%p)->(%08x,%08x,%p,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, d3dvtVertexType, lpvVertices, dwVertexCount, dwFlags);
936 return DD_OK;
939 HRESULT WINAPI
940 Main_IDirect3DDeviceImpl_2_DrawIndexedPrimitive(LPDIRECT3DDEVICE2 iface,
941 D3DPRIMITIVETYPE d3dptPrimitiveType,
942 D3DVERTEXTYPE d3dvtVertexType,
943 LPVOID lpvVertices,
944 DWORD dwVertexCount,
945 LPWORD dwIndices,
946 DWORD dwIndexCount,
947 DWORD dwFlags)
949 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice2, iface);
950 FIXME("(%p/%p)->(%08x,%08x,%p,%08lx,%p,%08lx,%08lx): stub!\n", This, iface, d3dptPrimitiveType, d3dvtVertexType, lpvVertices, dwVertexCount, dwIndices, dwIndexCount, dwFlags);
951 return DD_OK;
954 HRESULT WINAPI
955 Main_IDirect3DDeviceImpl_1_Initialize(LPDIRECT3DDEVICE iface,
956 LPDIRECT3D lpDirect3D,
957 LPGUID lpGUID,
958 LPD3DDEVICEDESC lpD3DDVDesc)
960 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
961 FIXME("(%p/%p)->(%p,%p,%p): stub!\n", This, iface, lpDirect3D, lpGUID, lpD3DDVDesc);
962 return DD_OK;
965 HRESULT WINAPI
966 Main_IDirect3DDeviceImpl_1_SwapTextureHandles(LPDIRECT3DDEVICE iface,
967 LPDIRECT3DTEXTURE lpD3Dtex1,
968 LPDIRECT3DTEXTURE lpD3DTex2)
970 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
971 FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lpD3Dtex1, lpD3DTex2);
972 return DD_OK;
975 HRESULT WINAPI
976 Main_IDirect3DDeviceImpl_1_CreateExecuteBuffer(LPDIRECT3DDEVICE iface,
977 LPD3DEXECUTEBUFFERDESC lpDesc,
978 LPDIRECT3DEXECUTEBUFFER* lplpDirect3DExecuteBuffer,
979 IUnknown* pUnkOuter)
981 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
982 FIXME("(%p/%p)->(%p,%p,%p): stub!\n", This, iface, lpDesc, lplpDirect3DExecuteBuffer, pUnkOuter);
983 return DD_OK;
986 HRESULT WINAPI
987 Main_IDirect3DDeviceImpl_1_Execute(LPDIRECT3DDEVICE iface,
988 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
989 LPDIRECT3DVIEWPORT lpDirect3DViewport,
990 DWORD dwFlags)
992 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
993 IDirect3DExecuteBufferImpl *lpDirect3DExecuteBufferImpl = ICOM_OBJECT(IDirect3DExecuteBufferImpl, IDirect3DExecuteBuffer, lpDirect3DExecuteBuffer);
994 IDirect3DViewportImpl *lpDirect3DViewportImpl = ICOM_OBJECT(IDirect3DViewportImpl, IDirect3DViewport3, lpDirect3DViewport);
996 TRACE("(%p/%p)->(%p,%p,%08lx)\n", This, iface, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags);
998 /* Put this as the default context */
1000 /* Execute... */
1001 lpDirect3DExecuteBufferImpl->execute(lpDirect3DExecuteBufferImpl, This, lpDirect3DViewportImpl);
1003 return DD_OK;
1006 HRESULT WINAPI
1007 Main_IDirect3DDeviceImpl_1_NextViewport(LPDIRECT3DDEVICE iface,
1008 LPDIRECT3DVIEWPORT lpDirect3DViewport,
1009 LPDIRECT3DVIEWPORT* lplpDirect3DViewport,
1010 DWORD dwFlags)
1012 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
1013 FIXME("(%p/%p)->(%p,%p,%08lx): stub!\n", This, iface, lpDirect3DViewport, lplpDirect3DViewport, dwFlags);
1014 return DD_OK;
1017 HRESULT WINAPI
1018 Main_IDirect3DDeviceImpl_1_Pick(LPDIRECT3DDEVICE iface,
1019 LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
1020 LPDIRECT3DVIEWPORT lpDirect3DViewport,
1021 DWORD dwFlags,
1022 LPD3DRECT lpRect)
1024 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
1025 FIXME("(%p/%p)->(%p,%p,%08lx,%p): stub!\n", This, iface, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags, lpRect);
1026 return DD_OK;
1029 HRESULT WINAPI
1030 Main_IDirect3DDeviceImpl_1_GetPickRecords(LPDIRECT3DDEVICE iface,
1031 LPDWORD lpCount,
1032 LPD3DPICKRECORD lpD3DPickRec)
1034 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
1035 FIXME("(%p/%p)->(%p,%p): stub!\n", This, iface, lpCount, lpD3DPickRec);
1036 return DD_OK;
1039 HRESULT WINAPI
1040 Main_IDirect3DDeviceImpl_1_CreateMatrix(LPDIRECT3DDEVICE iface,
1041 LPD3DMATRIXHANDLE lpD3DMatHandle)
1043 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
1044 TRACE("(%p/%p)->(%p)\n", This, iface, lpD3DMatHandle);
1046 *lpD3DMatHandle = (D3DMATRIXHANDLE) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(D3DMATRIX));
1047 TRACE(" returning matrix handle %p\n", (void *) *lpD3DMatHandle);
1049 return DD_OK;
1052 HRESULT WINAPI
1053 Main_IDirect3DDeviceImpl_1_SetMatrix(LPDIRECT3DDEVICE iface,
1054 D3DMATRIXHANDLE D3DMatHandle,
1055 LPD3DMATRIX lpD3DMatrix)
1057 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
1058 TRACE("(%p/%p)->(%08lx,%p)\n", This, iface, (DWORD) D3DMatHandle, lpD3DMatrix);
1060 dump_mat(lpD3DMatrix);
1061 *((D3DMATRIX *) D3DMatHandle) = *lpD3DMatrix;
1063 return DD_OK;
1066 HRESULT WINAPI
1067 Main_IDirect3DDeviceImpl_1_GetMatrix(LPDIRECT3DDEVICE iface,
1068 D3DMATRIXHANDLE D3DMatHandle,
1069 LPD3DMATRIX lpD3DMatrix)
1071 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
1072 TRACE("(%p/%p)->(%08lx,%p)\n", This, iface, (DWORD) D3DMatHandle, lpD3DMatrix);
1074 *lpD3DMatrix = *((D3DMATRIX *) D3DMatHandle);
1076 return DD_OK;
1079 HRESULT WINAPI
1080 Main_IDirect3DDeviceImpl_1_DeleteMatrix(LPDIRECT3DDEVICE iface,
1081 D3DMATRIXHANDLE D3DMatHandle)
1083 ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice, iface);
1084 TRACE("(%p/%p)->(%08lx)\n", This, iface, (DWORD) D3DMatHandle);
1086 HeapFree(GetProcessHeap(), 0, (void *) D3DMatHandle);
1088 return DD_OK;
1091 HRESULT WINAPI
1092 Thunk_IDirect3DDeviceImpl_3_QueryInterface(LPDIRECT3DDEVICE3 iface,
1093 REFIID riid,
1094 LPVOID* obp)
1096 TRACE("(%p)->(%s,%p) thunking to IDirect3DDevice7 interface.\n", iface, debugstr_guid(riid), obp);
1097 return IDirect3DDevice7_QueryInterface(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1098 riid,
1099 obp);
1102 HRESULT WINAPI
1103 Thunk_IDirect3DDeviceImpl_2_QueryInterface(LPDIRECT3DDEVICE2 iface,
1104 REFIID riid,
1105 LPVOID* obp)
1107 TRACE("(%p)->(%s,%p) thunking to IDirect3DDevice7 interface.\n", iface, debugstr_guid(riid), obp);
1108 return IDirect3DDevice7_QueryInterface(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1109 riid,
1110 obp);
1113 HRESULT WINAPI
1114 Thunk_IDirect3DDeviceImpl_1_QueryInterface(LPDIRECT3DDEVICE iface,
1115 REFIID riid,
1116 LPVOID* obp)
1118 TRACE("(%p)->(%s,%p) thunking to IDirect3DDevice7 interface.\n", iface, debugstr_guid(riid), obp);
1119 return IDirect3DDevice7_QueryInterface(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice7, iface),
1120 riid,
1121 obp);
1124 ULONG WINAPI
1125 Thunk_IDirect3DDeviceImpl_3_AddRef(LPDIRECT3DDEVICE3 iface)
1127 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1128 return IDirect3DDevice7_AddRef(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface));
1131 ULONG WINAPI
1132 Thunk_IDirect3DDeviceImpl_2_AddRef(LPDIRECT3DDEVICE2 iface)
1134 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1135 return IDirect3DDevice7_AddRef(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface));
1138 ULONG WINAPI
1139 Thunk_IDirect3DDeviceImpl_1_AddRef(LPDIRECT3DDEVICE iface)
1141 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1142 return IDirect3DDevice7_AddRef(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice7, iface));
1145 ULONG WINAPI
1146 Thunk_IDirect3DDeviceImpl_3_Release(LPDIRECT3DDEVICE3 iface)
1148 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1149 return IDirect3DDevice7_Release(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface));
1152 ULONG WINAPI
1153 Thunk_IDirect3DDeviceImpl_2_Release(LPDIRECT3DDEVICE2 iface)
1155 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1156 return IDirect3DDevice7_Release(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface));
1159 ULONG WINAPI
1160 Thunk_IDirect3DDeviceImpl_1_Release(LPDIRECT3DDEVICE iface)
1162 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1163 return IDirect3DDevice7_Release(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice7, iface));
1166 HRESULT WINAPI
1167 Thunk_IDirect3DDeviceImpl_2_AddViewport(LPDIRECT3DDEVICE2 iface,
1168 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2)
1170 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface, lpDirect3DViewport2);
1171 return IDirect3DDevice3_AddViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1172 (LPDIRECT3DVIEWPORT3) lpDirect3DViewport2 /* No need to cast here as all interfaces are equivalent */);
1175 HRESULT WINAPI
1176 Thunk_IDirect3DDeviceImpl_1_AddViewport(LPDIRECT3DDEVICE iface,
1177 LPDIRECT3DVIEWPORT lpDirect3DViewport)
1179 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface, lpDirect3DViewport);
1180 return IDirect3DDevice3_AddViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice3, iface),
1181 (LPDIRECT3DVIEWPORT3) lpDirect3DViewport /* No need to cast here as all interfaces are equivalent */);
1184 HRESULT WINAPI
1185 Thunk_IDirect3DDeviceImpl_2_DeleteViewport(LPDIRECT3DDEVICE2 iface,
1186 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2)
1188 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface, lpDirect3DViewport2);
1189 return IDirect3DDevice3_DeleteViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1190 (LPDIRECT3DVIEWPORT3) lpDirect3DViewport2 /* No need to cast here as all interfaces are equivalent */);
1193 HRESULT WINAPI
1194 Thunk_IDirect3DDeviceImpl_1_DeleteViewport(LPDIRECT3DDEVICE iface,
1195 LPDIRECT3DVIEWPORT lpDirect3DViewport)
1197 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface, lpDirect3DViewport);
1198 return IDirect3DDevice3_DeleteViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice3, iface),
1199 (LPDIRECT3DVIEWPORT3) lpDirect3DViewport /* No need to cast here as all interfaces are equivalent */);
1202 HRESULT WINAPI
1203 Thunk_IDirect3DDeviceImpl_2_NextViewport(LPDIRECT3DDEVICE3 iface,
1204 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2,
1205 LPDIRECT3DVIEWPORT2* lplpDirect3DViewport2,
1206 DWORD dwFlags)
1208 TRACE("(%p)->(%p,%p,%08lx) thunking to IDirect3DDevice3 interface.\n", iface, lpDirect3DViewport2, lplpDirect3DViewport2, dwFlags);
1209 return IDirect3DDevice3_NextViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1210 (LPDIRECT3DVIEWPORT3) lpDirect3DViewport2 /* No need to cast here as all interfaces are equivalent */,
1211 (LPDIRECT3DVIEWPORT3*) lplpDirect3DViewport2,
1212 dwFlags);
1215 HRESULT WINAPI
1216 Thunk_IDirect3DDeviceImpl_1_NextViewport(LPDIRECT3DDEVICE3 iface,
1217 LPDIRECT3DVIEWPORT lpDirect3DViewport,
1218 LPDIRECT3DVIEWPORT* lplpDirect3DViewport,
1219 DWORD dwFlags)
1221 TRACE("(%p)->(%p,%p,%08lx) thunking to IDirect3DDevice3 interface.\n", iface, lpDirect3DViewport, lplpDirect3DViewport, dwFlags);
1222 return IDirect3DDevice3_NextViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice3, iface),
1223 (LPDIRECT3DVIEWPORT3) lpDirect3DViewport /* No need to cast here as all interfaces are equivalent */,
1224 (LPDIRECT3DVIEWPORT3*) lplpDirect3DViewport,
1225 dwFlags);
1228 HRESULT WINAPI
1229 Thunk_IDirect3DDeviceImpl_3_GetDirect3D(LPDIRECT3DDEVICE3 iface,
1230 LPDIRECT3D3* lplpDirect3D3)
1232 HRESULT ret;
1233 LPDIRECT3D7 ret_ptr;
1235 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface, lplpDirect3D3);
1236 ret = IDirect3DDevice7_GetDirect3D(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1237 &ret_ptr);
1238 *lplpDirect3D3 = COM_INTERFACE_CAST(IDirect3DImpl, IDirect3D7, IDirect3D3, ret_ptr);
1239 TRACE(" returning interface %p\n", *lplpDirect3D3);
1240 return ret;
1243 HRESULT WINAPI
1244 Thunk_IDirect3DDeviceImpl_2_GetDirect3D(LPDIRECT3DDEVICE2 iface,
1245 LPDIRECT3D2* lplpDirect3D2)
1247 HRESULT ret;
1248 LPDIRECT3D7 ret_ptr;
1250 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface, lplpDirect3D2);
1251 ret = IDirect3DDevice7_GetDirect3D(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1252 &ret_ptr);
1253 *lplpDirect3D2 = COM_INTERFACE_CAST(IDirect3DImpl, IDirect3D7, IDirect3D2, ret_ptr);
1254 TRACE(" returning interface %p\n", *lplpDirect3D2);
1255 return ret;
1258 HRESULT WINAPI
1259 Thunk_IDirect3DDeviceImpl_1_GetDirect3D(LPDIRECT3DDEVICE iface,
1260 LPDIRECT3D* lplpDirect3D)
1262 HRESULT ret;
1263 LPDIRECT3D7 ret_ptr;
1265 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface, lplpDirect3D);
1266 ret = IDirect3DDevice7_GetDirect3D(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice7, iface),
1267 &ret_ptr);
1268 *lplpDirect3D = COM_INTERFACE_CAST(IDirect3DImpl, IDirect3D7, IDirect3D, ret_ptr);
1269 TRACE(" returning interface %p\n", *lplpDirect3D);
1270 return ret;
1273 HRESULT WINAPI
1274 Thunk_IDirect3DDeviceImpl_2_SetCurrentViewport(LPDIRECT3DDEVICE2 iface,
1275 LPDIRECT3DVIEWPORT2 lpDirect3DViewport2)
1277 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface, lpDirect3DViewport2);
1278 return IDirect3DDevice3_SetCurrentViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1279 (LPDIRECT3DVIEWPORT3) lpDirect3DViewport2 /* No need to cast here as all interfaces are equivalent */);
1282 HRESULT WINAPI
1283 Thunk_IDirect3DDeviceImpl_2_GetCurrentViewport(LPDIRECT3DDEVICE2 iface,
1284 LPDIRECT3DVIEWPORT2* lplpDirect3DViewport2)
1286 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface, lplpDirect3DViewport2);
1287 return IDirect3DDevice3_GetCurrentViewport(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1288 (LPDIRECT3DVIEWPORT3*) lplpDirect3DViewport2 /* No need to cast here as all interfaces are equivalent */);
1291 HRESULT WINAPI
1292 Thunk_IDirect3DDeviceImpl_3_EnumTextureFormats(LPDIRECT3DDEVICE3 iface,
1293 LPD3DENUMPIXELFORMATSCALLBACK lpD3DEnumPixelProc,
1294 LPVOID lpArg)
1296 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice7 interface.\n", iface, lpD3DEnumPixelProc, lpArg);
1297 return IDirect3DDevice7_EnumTextureFormats(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1298 lpD3DEnumPixelProc,
1299 lpArg);
1302 HRESULT WINAPI
1303 Thunk_IDirect3DDeviceImpl_3_BeginScene(LPDIRECT3DDEVICE3 iface)
1305 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1306 return IDirect3DDevice7_BeginScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface));
1309 HRESULT WINAPI
1310 Thunk_IDirect3DDeviceImpl_2_BeginScene(LPDIRECT3DDEVICE2 iface)
1312 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1313 return IDirect3DDevice7_BeginScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface));
1316 HRESULT WINAPI
1317 Thunk_IDirect3DDeviceImpl_1_BeginScene(LPDIRECT3DDEVICE iface)
1319 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1320 return IDirect3DDevice7_BeginScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice7, iface));
1323 HRESULT WINAPI
1324 Thunk_IDirect3DDeviceImpl_3_EndScene(LPDIRECT3DDEVICE3 iface)
1326 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1327 return IDirect3DDevice7_EndScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface));
1330 HRESULT WINAPI
1331 Thunk_IDirect3DDeviceImpl_2_EndScene(LPDIRECT3DDEVICE2 iface)
1333 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1334 return IDirect3DDevice7_EndScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface));
1337 HRESULT WINAPI
1338 Thunk_IDirect3DDeviceImpl_1_EndScene(LPDIRECT3DDEVICE iface)
1340 TRACE("(%p)->() thunking to IDirect3DDevice7 interface.\n", iface);
1341 return IDirect3DDevice7_EndScene(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice7, iface));
1344 HRESULT WINAPI
1345 Thunk_IDirect3DDeviceImpl_3_SetTransform(LPDIRECT3DDEVICE3 iface,
1346 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1347 LPD3DMATRIX lpD3DMatrix)
1349 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface, dtstTransformStateType, lpD3DMatrix);
1350 return IDirect3DDevice7_SetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1351 dtstTransformStateType,
1352 lpD3DMatrix);
1355 HRESULT WINAPI
1356 Thunk_IDirect3DDeviceImpl_2_SetTransform(LPDIRECT3DDEVICE2 iface,
1357 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1358 LPD3DMATRIX lpD3DMatrix)
1360 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface, dtstTransformStateType, lpD3DMatrix);
1361 return IDirect3DDevice7_SetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1362 dtstTransformStateType,
1363 lpD3DMatrix);
1366 HRESULT WINAPI
1367 Thunk_IDirect3DDeviceImpl_3_GetTransform(LPDIRECT3DDEVICE3 iface,
1368 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1369 LPD3DMATRIX lpD3DMatrix)
1371 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface, dtstTransformStateType, lpD3DMatrix);
1372 return IDirect3DDevice7_GetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1373 dtstTransformStateType,
1374 lpD3DMatrix);
1377 HRESULT WINAPI
1378 Thunk_IDirect3DDeviceImpl_2_GetTransform(LPDIRECT3DDEVICE2 iface,
1379 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1380 LPD3DMATRIX lpD3DMatrix)
1382 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface, dtstTransformStateType, lpD3DMatrix);
1383 return IDirect3DDevice7_GetTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1384 dtstTransformStateType,
1385 lpD3DMatrix);
1388 HRESULT WINAPI
1389 Thunk_IDirect3DDeviceImpl_3_MultiplyTransform(LPDIRECT3DDEVICE3 iface,
1390 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1391 LPD3DMATRIX lpD3DMatrix)
1393 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface, dtstTransformStateType, lpD3DMatrix);
1394 return IDirect3DDevice7_MultiplyTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1395 dtstTransformStateType,
1396 lpD3DMatrix);
1399 HRESULT WINAPI
1400 Thunk_IDirect3DDeviceImpl_2_MultiplyTransform(LPDIRECT3DDEVICE2 iface,
1401 D3DTRANSFORMSTATETYPE dtstTransformStateType,
1402 LPD3DMATRIX lpD3DMatrix)
1404 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface, dtstTransformStateType, lpD3DMatrix);
1405 return IDirect3DDevice7_MultiplyTransform(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1406 dtstTransformStateType,
1407 lpD3DMatrix);
1410 HRESULT WINAPI
1411 Thunk_IDirect3DDeviceImpl_3_SetRenderState(LPDIRECT3DDEVICE3 iface,
1412 D3DRENDERSTATETYPE dwRenderStateType,
1413 DWORD dwRenderState)
1415 TRACE("(%p)->(%08x,%08lx) thunking to IDirect3DDevice7 interface.\n", iface, dwRenderStateType, dwRenderState);
1416 return IDirect3DDevice7_SetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1417 dwRenderStateType,
1418 dwRenderState);
1421 HRESULT WINAPI
1422 Thunk_IDirect3DDeviceImpl_2_SetRenderState(LPDIRECT3DDEVICE2 iface,
1423 D3DRENDERSTATETYPE dwRenderStateType,
1424 DWORD dwRenderState)
1426 TRACE("(%p)->(%08x,%08lx) thunking to IDirect3DDevice7 interface.\n", iface, dwRenderStateType, dwRenderState);
1427 return IDirect3DDevice7_SetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1428 dwRenderStateType,
1429 dwRenderState);
1432 HRESULT WINAPI
1433 Thunk_IDirect3DDeviceImpl_3_GetRenderState(LPDIRECT3DDEVICE3 iface,
1434 D3DRENDERSTATETYPE dwRenderStateType,
1435 LPDWORD lpdwRenderState)
1437 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface, dwRenderStateType, lpdwRenderState);
1438 return IDirect3DDevice7_GetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1439 dwRenderStateType,
1440 lpdwRenderState);
1443 HRESULT WINAPI
1444 Thunk_IDirect3DDeviceImpl_2_GetRenderState(LPDIRECT3DDEVICE2 iface,
1445 D3DRENDERSTATETYPE dwRenderStateType,
1446 LPDWORD lpdwRenderState)
1448 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface, dwRenderStateType, lpdwRenderState);
1449 return IDirect3DDevice7_GetRenderState(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1450 dwRenderStateType,
1451 lpdwRenderState);
1454 HRESULT WINAPI
1455 Thunk_IDirect3DDeviceImpl_3_DrawPrimitive(LPDIRECT3DDEVICE3 iface,
1456 D3DPRIMITIVETYPE d3dptPrimitiveType,
1457 DWORD d3dvtVertexType,
1458 LPVOID lpvVertices,
1459 DWORD dwVertexCount,
1460 DWORD dwFlags)
1462 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface, d3dptPrimitiveType, d3dvtVertexType, lpvVertices, dwVertexCount, dwFlags);
1463 return IDirect3DDevice7_DrawPrimitive(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1464 d3dptPrimitiveType,
1465 d3dvtVertexType,
1466 lpvVertices,
1467 dwVertexCount,
1468 dwFlags);
1471 HRESULT WINAPI
1472 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitive(LPDIRECT3DDEVICE3 iface,
1473 D3DPRIMITIVETYPE d3dptPrimitiveType,
1474 DWORD d3dvtVertexType,
1475 LPVOID lpvVertices,
1476 DWORD dwVertexCount,
1477 LPWORD dwIndices,
1478 DWORD dwIndexCount,
1479 DWORD dwFlags)
1481 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface, d3dptPrimitiveType, d3dvtVertexType, lpvVertices, dwVertexCount, dwIndices, dwIndexCount, dwFlags);
1482 return IDirect3DDevice7_DrawIndexedPrimitive(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1483 d3dptPrimitiveType,
1484 d3dvtVertexType,
1485 lpvVertices,
1486 dwVertexCount,
1487 dwIndices,
1488 dwIndexCount,
1489 dwFlags);
1492 HRESULT WINAPI
1493 Thunk_IDirect3DDeviceImpl_3_SetClipStatus(LPDIRECT3DDEVICE3 iface,
1494 LPD3DCLIPSTATUS lpD3DClipStatus)
1496 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface, lpD3DClipStatus);
1497 return IDirect3DDevice7_SetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1498 lpD3DClipStatus);
1501 HRESULT WINAPI
1502 Thunk_IDirect3DDeviceImpl_2_SetClipStatus(LPDIRECT3DDEVICE2 iface,
1503 LPD3DCLIPSTATUS lpD3DClipStatus)
1505 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface, lpD3DClipStatus);
1506 return IDirect3DDevice7_SetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1507 lpD3DClipStatus);
1510 HRESULT WINAPI
1511 Thunk_IDirect3DDeviceImpl_3_GetClipStatus(LPDIRECT3DDEVICE3 iface,
1512 LPD3DCLIPSTATUS lpD3DClipStatus)
1514 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface, lpD3DClipStatus);
1515 return IDirect3DDevice7_GetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1516 lpD3DClipStatus);
1519 HRESULT WINAPI
1520 Thunk_IDirect3DDeviceImpl_2_GetClipStatus(LPDIRECT3DDEVICE2 iface,
1521 LPD3DCLIPSTATUS lpD3DClipStatus)
1523 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface, lpD3DClipStatus);
1524 return IDirect3DDevice7_GetClipStatus(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1525 lpD3DClipStatus);
1528 HRESULT WINAPI
1529 Thunk_IDirect3DDeviceImpl_3_DrawPrimitiveStrided(LPDIRECT3DDEVICE3 iface,
1530 D3DPRIMITIVETYPE d3dptPrimitiveType,
1531 DWORD dwVertexType,
1532 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
1533 DWORD dwVertexCount,
1534 DWORD dwFlags)
1536 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface, d3dptPrimitiveType, dwVertexType, lpD3DDrawPrimStrideData, dwVertexCount, dwFlags);
1537 return IDirect3DDevice7_DrawPrimitiveStrided(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1538 d3dptPrimitiveType,
1539 dwVertexType,
1540 lpD3DDrawPrimStrideData,
1541 dwVertexCount,
1542 dwFlags);
1545 HRESULT WINAPI
1546 Thunk_IDirect3DDeviceImpl_3_DrawIndexedPrimitiveStrided(LPDIRECT3DDEVICE3 iface,
1547 D3DPRIMITIVETYPE d3dptPrimitiveType,
1548 DWORD dwVertexType,
1549 LPD3DDRAWPRIMITIVESTRIDEDDATA lpD3DDrawPrimStrideData,
1550 DWORD dwVertexCount,
1551 LPWORD lpIndex,
1552 DWORD dwIndexCount,
1553 DWORD dwFlags)
1555 TRACE("(%p)->(%08x,%08lx,%p,%08lx,%p,%08lx,%08lx) thunking to IDirect3DDevice7 interface.\n", iface, d3dptPrimitiveType, dwVertexType, lpD3DDrawPrimStrideData, dwVertexCount, lpIndex, dwIndexCount, dwFlags);
1556 return IDirect3DDevice7_DrawIndexedPrimitiveStrided(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1557 d3dptPrimitiveType,
1558 dwVertexType,
1559 lpD3DDrawPrimStrideData,
1560 dwVertexCount,
1561 lpIndex,
1562 dwIndexCount,
1563 dwFlags);
1566 HRESULT WINAPI
1567 Thunk_IDirect3DDeviceImpl_3_ComputeSphereVisibility(LPDIRECT3DDEVICE3 iface,
1568 LPD3DVECTOR lpCenters,
1569 LPD3DVALUE lpRadii,
1570 DWORD dwNumSpheres,
1571 DWORD dwFlags,
1572 LPDWORD lpdwReturnValues)
1574 TRACE("(%p)->(%p,%p,%08lx,%08lx,%p) thunking to IDirect3DDevice7 interface.\n", iface, lpCenters, lpRadii, dwNumSpheres, dwFlags, lpdwReturnValues);
1575 return IDirect3DDevice7_ComputeSphereVisibility(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1576 lpCenters,
1577 lpRadii,
1578 dwNumSpheres,
1579 dwFlags,
1580 lpdwReturnValues);
1583 HRESULT WINAPI
1584 Thunk_IDirect3DDeviceImpl_3_GetTextureStageState(LPDIRECT3DDEVICE3 iface,
1585 DWORD dwStage,
1586 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
1587 LPDWORD lpdwState)
1589 TRACE("(%p)->(%08lx,%08x,%p) thunking to IDirect3DDevice7 interface.\n", iface, dwStage, d3dTexStageStateType, lpdwState);
1590 return IDirect3DDevice7_GetTextureStageState(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1591 dwStage,
1592 d3dTexStageStateType,
1593 lpdwState);
1596 HRESULT WINAPI
1597 Thunk_IDirect3DDeviceImpl_3_SetTextureStageState(LPDIRECT3DDEVICE3 iface,
1598 DWORD dwStage,
1599 D3DTEXTURESTAGESTATETYPE d3dTexStageStateType,
1600 DWORD dwState)
1602 TRACE("(%p)->(%08lx,%08x,%08lx) thunking to IDirect3DDevice7 interface.\n", iface, dwStage, d3dTexStageStateType, dwState);
1603 return IDirect3DDevice7_SetTextureStageState(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1604 dwStage,
1605 d3dTexStageStateType,
1606 dwState);
1609 HRESULT WINAPI
1610 Thunk_IDirect3DDeviceImpl_3_ValidateDevice(LPDIRECT3DDEVICE3 iface,
1611 LPDWORD lpdwPasses)
1613 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface, lpdwPasses);
1614 return IDirect3DDevice7_ValidateDevice(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1615 lpdwPasses);
1618 HRESULT WINAPI
1619 Thunk_IDirect3DDeviceImpl_2_GetCaps(LPDIRECT3DDEVICE2 iface,
1620 LPD3DDEVICEDESC lpD3DHWDevDesc,
1621 LPD3DDEVICEDESC lpD3DHELDevDesc)
1623 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice3 interface.\n", iface, lpD3DHWDevDesc, lpD3DHELDevDesc);
1624 return IDirect3DDevice3_GetCaps(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1625 lpD3DHWDevDesc,
1626 lpD3DHELDevDesc);
1629 HRESULT WINAPI
1630 Thunk_IDirect3DDeviceImpl_1_GetCaps(LPDIRECT3DDEVICE iface,
1631 LPD3DDEVICEDESC lpD3DHWDevDesc,
1632 LPD3DDEVICEDESC lpD3DHELDevDesc)
1634 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice3 interface.\n", iface, lpD3DHWDevDesc, lpD3DHELDevDesc);
1635 return IDirect3DDevice3_GetCaps(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice3, iface),
1636 lpD3DHWDevDesc,
1637 lpD3DHELDevDesc);
1640 HRESULT WINAPI
1641 Thunk_IDirect3DDeviceImpl_2_GetStats(LPDIRECT3DDEVICE2 iface,
1642 LPD3DSTATS lpD3DStats)
1644 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface, lpD3DStats);
1645 return IDirect3DDevice3_GetStats(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1646 lpD3DStats);
1649 HRESULT WINAPI
1650 Thunk_IDirect3DDeviceImpl_1_GetStats(LPDIRECT3DDEVICE iface,
1651 LPD3DSTATS lpD3DStats)
1653 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface, lpD3DStats);
1654 return IDirect3DDevice3_GetStats(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice3, iface),
1655 lpD3DStats);
1658 HRESULT WINAPI
1659 Thunk_IDirect3DDeviceImpl_3_SetRenderTarget(LPDIRECT3DDEVICE3 iface,
1660 LPDIRECTDRAWSURFACE4 lpNewRenderTarget,
1661 DWORD dwFlags)
1663 TRACE("(%p)->(%p,%08lx) thunking to IDirect3DDevice7 interface.\n", iface, lpNewRenderTarget, dwFlags);
1664 return IDirect3DDevice7_SetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1665 (LPDIRECTDRAWSURFACE7) lpNewRenderTarget /* No cast needed as DSurf4 == DSurf7 */,
1666 dwFlags);
1669 HRESULT WINAPI
1670 Thunk_IDirect3DDeviceImpl_3_GetRenderTarget(LPDIRECT3DDEVICE3 iface,
1671 LPDIRECTDRAWSURFACE4* lplpRenderTarget)
1673 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface, lplpRenderTarget);
1674 return IDirect3DDevice7_GetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1675 (LPDIRECTDRAWSURFACE7*) lplpRenderTarget /* No cast needed as DSurf4 == DSurf7 */);
1678 HRESULT WINAPI
1679 Thunk_IDirect3DDeviceImpl_2_SetRenderTarget(LPDIRECT3DDEVICE2 iface,
1680 LPDIRECTDRAWSURFACE lpNewRenderTarget,
1681 DWORD dwFlags)
1683 TRACE("(%p)->(%p,%08lx) thunking to IDirect3DDevice7 interface.\n", iface, lpNewRenderTarget, dwFlags);
1684 return IDirect3DDevice7_SetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1685 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl, IDirectDrawSurface3, IDirectDrawSurface7, lpNewRenderTarget),
1686 dwFlags);
1689 HRESULT WINAPI
1690 Thunk_IDirect3DDeviceImpl_2_GetRenderTarget(LPDIRECT3DDEVICE2 iface,
1691 LPDIRECTDRAWSURFACE* lplpRenderTarget)
1693 HRESULT ret;
1694 LPDIRECTDRAWSURFACE7 ret_val;
1696 TRACE("(%p)->(%p) thunking to IDirect3DDevice7 interface.\n", iface, lplpRenderTarget);
1697 ret = IDirect3DDevice7_GetRenderTarget(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice7, iface),
1698 &ret_val);
1699 *lplpRenderTarget = (LPDIRECTDRAWSURFACE) COM_INTERFACE_CAST(IDirectDrawSurfaceImpl, IDirectDrawSurface7, IDirectDrawSurface3, ret_val);
1700 TRACE(" returning interface %p\n", *lplpRenderTarget);
1701 return ret;
1704 HRESULT WINAPI
1705 Thunk_IDirect3DDeviceImpl_2_Vertex(LPDIRECT3DDEVICE2 iface,
1706 LPVOID lpVertexType)
1708 TRACE("(%p)->(%p) thunking to IDirect3DDevice3 interface.\n", iface, lpVertexType);
1709 return IDirect3DDevice3_Vertex(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1710 lpVertexType);
1713 HRESULT WINAPI
1714 Thunk_IDirect3DDeviceImpl_2_Index(LPDIRECT3DDEVICE2 iface,
1715 WORD wVertexIndex)
1717 TRACE("(%p)->(%04x) thunking to IDirect3DDevice3 interface.\n", iface, wVertexIndex);
1718 return IDirect3DDevice3_Index(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1719 wVertexIndex);
1722 HRESULT WINAPI
1723 Thunk_IDirect3DDeviceImpl_2_End(LPDIRECT3DDEVICE2 iface,
1724 DWORD dwFlags)
1726 TRACE("(%p)->(%08lx) thunking to IDirect3DDevice3 interface.\n", iface, dwFlags);
1727 return IDirect3DDevice3_End(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1728 dwFlags);
1731 HRESULT WINAPI
1732 Thunk_IDirect3DDeviceImpl_2_GetLightState(LPDIRECT3DDEVICE2 iface,
1733 D3DLIGHTSTATETYPE dwLightStateType,
1734 LPDWORD lpdwLightState)
1736 TRACE("(%p)->(%08x,%p) thunking to IDirect3DDevice3 interface.\n", iface, dwLightStateType, lpdwLightState);
1737 return IDirect3DDevice3_GetLightState(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1738 dwLightStateType,
1739 lpdwLightState);
1742 HRESULT WINAPI
1743 Thunk_IDirect3DDeviceImpl_2_SetLightState(LPDIRECT3DDEVICE2 iface,
1744 D3DLIGHTSTATETYPE dwLightStateType,
1745 DWORD dwLightState)
1747 TRACE("(%p)->(%08x,%08lx) thunking to IDirect3DDevice3 interface.\n", iface, dwLightStateType, dwLightState);
1748 return IDirect3DDevice3_SetLightState(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice2, IDirect3DDevice3, iface),
1749 dwLightStateType,
1750 dwLightState);
1753 HRESULT WINAPI
1754 Thunk_IDirect3DDeviceImpl_1_EnumTextureFormats(LPDIRECT3DDEVICE iface,
1755 LPD3DENUMTEXTUREFORMATSCALLBACK lpD3DEnumTextureProc,
1756 LPVOID lpArg)
1758 TRACE("(%p)->(%p,%p) thunking to IDirect3DDevice2 interface.\n", iface, lpD3DEnumTextureProc, lpArg);
1759 return IDirect3DDevice2_EnumTextureFormats(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice, IDirect3DDevice2, iface),
1760 lpD3DEnumTextureProc,
1761 lpArg);
1764 HRESULT WINAPI
1765 Thunk_IDirect3DDeviceImpl_3_SetTexture(LPDIRECT3DDEVICE3 iface,
1766 DWORD dwStage,
1767 LPDIRECT3DTEXTURE2 lpTexture2)
1769 TRACE("(%p)->(%ld,%p) thunking to IDirect3DDevice7 interface.\n", iface, dwStage, lpTexture2);
1770 return IDirect3DDevice7_SetTexture(COM_INTERFACE_CAST(IDirect3DDeviceImpl, IDirect3DDevice3, IDirect3DDevice7, iface),
1771 dwStage,
1772 COM_INTERFACE_CAST(IDirectDrawSurfaceImpl, IDirect3DTexture2, IDirectDrawSurface7, lpTexture2));