Direct3DDevice9Ex.cpp revision ee16f0de07d4b02a81c1c9ac716d631e67f487fc
1// SwiftShader Software Renderer
2//
3// Copyright(c) 2005-2011 TransGaming Inc.
4//
5// All rights reserved. No part of this software may be copied, distributed, transmitted,
6// transcribed, stored in a retrieval system, translated into any human or computer
7// language by any means, or disclosed to third parties without the explicit written
8// agreement of TransGaming Inc. Without such an agreement, no rights or licenses, express
9// or implied, including but not limited to any patent rights, are granted to you.
10//
11
12#include "Direct3DDevice9Ex.hpp"
13
14#include "Direct3D9Ex.hpp"
15#include "Direct3DSurface9.hpp"
16#include "Direct3DIndexBuffer9.hpp"
17#include "Direct3DVertexBuffer9.hpp"
18#include "Direct3DTexture9.hpp"
19#include "Direct3DVolumeTexture9.hpp"
20#include "Direct3DCubeTexture9.hpp"
21#include "Direct3DVertexDeclaration9.hpp"
22#include "Direct3DSwapChain9.hpp"
23#include "Direct3DPixelShader9.hpp"
24#include "Direct3DVertexShader9.hpp"
25#include "Direct3DStateBlock9.hpp"
26#include "Direct3DQuery9.hpp"
27#include "Direct3DVolume9.hpp"
28
29#include "Debug.hpp"
30#include "Renderer.hpp"
31#include "FrameBuffer.hpp"
32#include "Clipper.hpp"
33#include "Configurator.hpp"
34#include "Timer.hpp"
35
36#include <assert.h>
37
38namespace D3D9
39{
40	inline unsigned long FtoDW(float f)
41	{
42		return (unsigned long&)f;
43	}
44
45	inline float DWtoF(unsigned long dw)
46	{
47		return (float&)dw;
48	}
49
50	Direct3DDevice9Ex::Direct3DDevice9Ex(const HINSTANCE instance, Direct3D9Ex *d3d9ex, unsigned int adapter, D3DDEVTYPE deviceType, HWND focusWindow, unsigned long behaviourFlags, D3DPRESENT_PARAMETERS *presentParameters) : Direct3DDevice9(instance, d3d9ex, adapter, deviceType, focusWindow, behaviourFlags, presentParameters), d3d9ex(d3d9ex)
51	{
52	}
53
54	Direct3DDevice9Ex::~Direct3DDevice9Ex()
55	{
56	}
57
58	long Direct3DDevice9Ex::QueryInterface(const IID &iid, void **object)
59	{
60		CriticalSection cs(this);
61
62		TRACE("const IID &iid = 0x%0.8p, void **object = 0x%0.8p", iid, object);
63
64		if(iid == IID_IDirect3DDevice9Ex ||
65		   iid == IID_IDirect3DDevice9 ||
66		   iid == IID_IUnknown)
67		{
68			AddRef();
69			*object = this;
70
71			return S_OK;
72		}
73
74		*object = 0;
75
76		return NOINTERFACE(iid);
77	}
78
79	unsigned long Direct3DDevice9Ex::AddRef()
80	{
81		TRACE("void");
82
83		return Direct3DDevice9::AddRef();
84	}
85
86	unsigned long Direct3DDevice9Ex::Release()
87	{
88		TRACE("void");
89
90		return Direct3DDevice9::Release();
91	}
92
93	long Direct3DDevice9Ex::BeginScene()
94	{
95		TRACE("void");
96
97		return Direct3DDevice9::BeginScene();
98	}
99
100	long Direct3DDevice9Ex::BeginStateBlock()
101	{
102		TRACE("void");
103
104		return Direct3DDevice9::BeginStateBlock();
105	}
106
107	long Direct3DDevice9Ex::Clear(unsigned long count, const D3DRECT *rects, unsigned long flags, unsigned long color, float z, unsigned long stencil)
108	{
109		TRACE("unsigned long count = %d, const D3DRECT *rects = 0x%0.8p, unsigned long flags = 0x%0.8X, unsigned long color = 0x%0.8X, float z = %f, unsigned long stencil = %d", count, rects, flags, color, z, stencil);
110
111		return Direct3DDevice9::Clear(count, rects, flags, color, z, stencil);
112	}
113
114	long Direct3DDevice9Ex::ColorFill(IDirect3DSurface9 *surface, const RECT *rect, D3DCOLOR color)
115	{
116		TRACE("IDirect3DSurface9 *surface = 0x%0.8p, const RECT *rect = 0x%0.8p, D3DCOLOR color = 0x%0.8X", surface, rect, color);
117
118		return Direct3DDevice9::ColorFill(surface, rect, color);
119	}
120
121	long Direct3DDevice9Ex::CreateAdditionalSwapChain(D3DPRESENT_PARAMETERS *presentParameters, IDirect3DSwapChain9 **swapChain)
122	{
123		TRACE("D3DPRESENT_PARAMETERS *presentParameters = 0x%0.8p, IDirect3DSwapChain9 **swapChain = 0x%0.8p", presentParameters, swapChain);
124
125		return Direct3DDevice9::CreateAdditionalSwapChain(presentParameters, swapChain);
126	}
127
128	long Direct3DDevice9Ex::CreateCubeTexture(unsigned int edgeLength, unsigned int levels, unsigned long usage, D3DFORMAT format, D3DPOOL pool, IDirect3DCubeTexture9 **cubeTexture, void **sharedHandle)
129	{
130		TRACE("unsigned int edgeLength = %d, unsigned int levels = %d, unsigned long usage = %d, D3DFORMAT format = %d, D3DPOOL pool = %d, IDirect3DCubeTexture9 **cubeTexture = 0x%0.8p, void **sharedHandle = 0x%0.8p", edgeLength, levels, usage, format, pool, cubeTexture, sharedHandle);
131
132		return Direct3DDevice9::CreateCubeTexture(edgeLength, levels, usage, format, pool, cubeTexture, sharedHandle);
133	}
134
135	long Direct3DDevice9Ex::CreateDepthStencilSurface(unsigned int width, unsigned int height, D3DFORMAT format, D3DMULTISAMPLE_TYPE multiSample, unsigned long multiSampleQuality, int discard, IDirect3DSurface9 **surface, void **sharedHandle)
136	{
137		TRACE("unsigned int width = %d, unsigned int height = %d, D3DFORMAT format = %d, D3DMULTISAMPLE_TYPE multiSample = %d, unsigned long multiSampleQuality = %d, int discard = %d, IDirect3DSurface9 **surface = 0x%0.8p, void **sharedHandle = 0x%0.8p", width, height, format, multiSample, multiSampleQuality, discard, surface, sharedHandle);
138
139		return Direct3DDevice9::CreateDepthStencilSurface(width, height, format, multiSample, multiSampleQuality, discard, surface, sharedHandle);
140	}
141
142	long Direct3DDevice9Ex::CreateIndexBuffer(unsigned int length, unsigned long usage, D3DFORMAT format, D3DPOOL pool, IDirect3DIndexBuffer9 **indexBuffer, void **sharedHandle)
143	{
144		TRACE("unsigned int length = %d, unsigned long usage = %d, D3DFORMAT format = %d, D3DPOOL pool = %d, IDirect3DIndexBuffer9 **indexBuffer = 0x%0.8p, void **sharedHandle = 0x%0.8p", length, usage, format, pool, indexBuffer, sharedHandle);
145
146		return Direct3DDevice9::CreateIndexBuffer(length, usage, format, pool, indexBuffer, sharedHandle);
147	}
148
149	long Direct3DDevice9Ex::CreateOffscreenPlainSurface(unsigned int width, unsigned int height, D3DFORMAT format, D3DPOOL pool, IDirect3DSurface9 **surface, void **sharedHandle)
150	{
151		TRACE("unsigned int width = %d, unsigned int height = %d, D3DFORMAT format = %d, D3DPOOL pool = %d, IDirect3DSurface9 **surface = 0x%0.8p, void **sharedHandle = 0x%0.8p", width, height, format, pool, surface, sharedHandle);
152
153		return Direct3DDevice9::CreateOffscreenPlainSurface(width, height, format, pool, surface, sharedHandle);
154	}
155
156	long Direct3DDevice9Ex::CreatePixelShader(const unsigned long *function, IDirect3DPixelShader9 **shader)
157	{
158		TRACE("const unsigned long *function = 0x%0.8p, IDirect3DPixelShader9 **shader = 0x%0.8p", function, shader);
159
160		return Direct3DDevice9::CreatePixelShader(function, shader);
161	}
162
163	long Direct3DDevice9Ex::CreateQuery(D3DQUERYTYPE type, IDirect3DQuery9 **query)
164	{
165		TRACE("D3DQUERYTYPE type = %d, IDirect3DQuery9 **query = 0x%0.8p", type, query);
166
167		return Direct3DDevice9::CreateQuery(type, query);
168	}
169
170	long Direct3DDevice9Ex::CreateRenderTarget(unsigned int width, unsigned int height, D3DFORMAT format, D3DMULTISAMPLE_TYPE multiSample, unsigned long multiSampleQuality, int lockable, IDirect3DSurface9 **surface, void **sharedHandle)
171	{
172		TRACE("unsigned int width = %d, unsigned int height = %d, D3DFORMAT format = %d, D3DMULTISAMPLE_TYPE multiSample = %d, unsigned long multiSampleQuality = %d, int lockable = %d, IDirect3DSurface9 **surface = 0x%0.8p, void **sharedHandle = 0x%0.8p", width, height, format, multiSample, multiSampleQuality, lockable, surface, sharedHandle);
173
174		return Direct3DDevice9::CreateRenderTarget(width, height, format, multiSample, multiSampleQuality, lockable, surface, sharedHandle);
175	}
176
177	long Direct3DDevice9Ex::CreateStateBlock(D3DSTATEBLOCKTYPE type, IDirect3DStateBlock9 **stateBlock)
178	{
179		TRACE("D3DSTATEBLOCKTYPE type = %d, IDirect3DStateBlock9 **stateBlock = 0x%0.8p", type, stateBlock);
180
181		return Direct3DDevice9::CreateStateBlock(type, stateBlock);
182	}
183
184	long Direct3DDevice9Ex::CreateTexture(unsigned int width, unsigned int height, unsigned int levels, unsigned long usage, D3DFORMAT format, D3DPOOL pool, IDirect3DTexture9 **texture, void **sharedHandle)
185	{
186		TRACE("unsigned int width = %d, unsigned int height = %d, unsigned int levels = %d, unsigned long usage = %d, D3DFORMAT format = %d, D3DPOOL pool = %d, IDirect3DTexture9 **texture = 0x%0.8p, void **sharedHandle = 0x%0.8p", width, height, levels, usage, format, pool, texture, sharedHandle);
187
188		return Direct3DDevice9::CreateTexture(width, height, levels, usage, format, pool, texture, sharedHandle);
189	}
190
191	long Direct3DDevice9Ex::CreateVertexBuffer(unsigned int length, unsigned long usage, unsigned long FVF, D3DPOOL pool, IDirect3DVertexBuffer9 **vertexBuffer, void **sharedHandle)
192	{
193		TRACE("unsigned int length = %d, unsigned long usage = %d, unsigned long FVF = 0x%0.8X, D3DPOOL pool = %d, IDirect3DVertexBuffer9 **vertexBuffer = 0x%0.8p, void **sharedHandle = 0x%0.8p", length, usage, FVF, pool, vertexBuffer, sharedHandle);
194
195		return Direct3DDevice9::CreateVertexBuffer(length, usage, FVF, pool, vertexBuffer, sharedHandle);
196	}
197
198	long Direct3DDevice9Ex::CreateVertexDeclaration(const D3DVERTEXELEMENT9 *vertexElements, IDirect3DVertexDeclaration9 **declaration)
199	{
200		TRACE("const D3DVERTEXELEMENT9 *vertexElements = 0x%0.8p, IDirect3DVertexDeclaration9 **declaration = 0x%0.8p", vertexElements, declaration);
201
202		return Direct3DDevice9::CreateVertexDeclaration(vertexElements, declaration);
203	}
204
205	long Direct3DDevice9Ex::CreateVertexShader(const unsigned long *function, IDirect3DVertexShader9 **shader)
206	{
207		TRACE("const unsigned long *function = 0x%0.8p, IDirect3DVertexShader9 **shader = 0x%0.8p", function, shader);
208
209		return Direct3DDevice9::CreateVertexShader(function, shader);
210	}
211
212	long Direct3DDevice9Ex::CreateVolumeTexture(unsigned int width, unsigned int height, unsigned int depth, unsigned int levels, unsigned long usage, D3DFORMAT format, D3DPOOL pool, IDirect3DVolumeTexture9 **volumeTexture, void **sharedHandle)
213	{
214		TRACE("unsigned int width = %d, unsigned int height = %d, unsigned int depth = %d, unsigned int levels = %d, unsigned long usage = %d, D3DFORMAT format = %d, D3DPOOL pool = %d, IDirect3DVolumeTexture9 **volumeTexture = 0x%0.8p, void **sharedHandle = 0x%0.8p", width, height, depth, levels, usage, format, pool, volumeTexture, sharedHandle);
215
216		return Direct3DDevice9::CreateVolumeTexture(width, height, depth, levels, usage, format, pool, volumeTexture, sharedHandle);
217	}
218
219	long Direct3DDevice9Ex::DeletePatch(unsigned int handle)
220	{
221		TRACE("unsigned int handle = %d", handle);
222
223		return Direct3DDevice9::DeletePatch(handle);
224	}
225
226	long Direct3DDevice9Ex::DrawIndexedPrimitive(D3DPRIMITIVETYPE type, int baseVertexIndex, unsigned int minIndex, unsigned int numVertices, unsigned int startIndex, unsigned int primitiveCount)
227	{
228		TRACE("D3DPRIMITIVETYPE type = %d, int baseVertexIndex = %d, unsigned int minIndex = %d, unsigned int numVertices = %d, unsigned int startIndex = %d, unsigned int primitiveCount = %d", type, baseVertexIndex, minIndex, numVertices, startIndex, primitiveCount);
229
230		return Direct3DDevice9::DrawIndexedPrimitive(type, baseVertexIndex, minIndex, numVertices, startIndex, primitiveCount);
231	}
232
233	long Direct3DDevice9Ex::DrawIndexedPrimitiveUP(D3DPRIMITIVETYPE type, unsigned int minIndex, unsigned int numVertices, unsigned int primitiveCount, const void *indexData, D3DFORMAT indexDataFormat, const void *vertexStreamZeroData, unsigned int vertexStreamZeroStride)
234	{
235		TRACE("D3DPRIMITIVETYPE type = %d, unsigned int minIndex = %d, unsigned int numVertices = %d, unsigned int primitiveCount = %d, const void *indexData = 0x%0.8p, D3DFORMAT indexDataFormat = %d, const void *vertexStreamZeroData = 0x%0.8p, unsigned int vertexStreamZeroStride = %d", type, minIndex, numVertices, primitiveCount, indexData, indexDataFormat, vertexStreamZeroData, vertexStreamZeroStride);
236
237		return Direct3DDevice9::DrawIndexedPrimitiveUP(type, minIndex, numVertices, primitiveCount, indexData, indexDataFormat, vertexStreamZeroData, vertexStreamZeroStride);
238	}
239
240	long Direct3DDevice9Ex::DrawPrimitive(D3DPRIMITIVETYPE primitiveType, unsigned int startVertex, unsigned int primitiveCount)
241	{
242		TRACE("D3DPRIMITIVETYPE primitiveType = %d, unsigned int startVertex = %d, unsigned int primitiveCount = %d", primitiveType, startVertex, primitiveCount);
243
244		return Direct3DDevice9::DrawPrimitive(primitiveType, startVertex, primitiveCount);
245	}
246
247	long Direct3DDevice9Ex::DrawPrimitiveUP(D3DPRIMITIVETYPE primitiveType, unsigned int primitiveCount, const void *vertexStreamZeroData, unsigned int vertexStreamZeroStride)
248	{
249		TRACE("D3DPRIMITIVETYPE primitiveType = %d, unsigned int primitiveCount = %d, const void *vertexStreamZeroData = 0x%0.8p, unsigned int vertexStreamZeroStride = %d", primitiveType, primitiveCount, vertexStreamZeroData, vertexStreamZeroStride);
250
251		return Direct3DDevice9::DrawPrimitiveUP(primitiveType, primitiveCount, vertexStreamZeroData, vertexStreamZeroStride);
252	}
253
254	long Direct3DDevice9Ex::DrawRectPatch(unsigned int handle, const float *numSegs, const D3DRECTPATCH_INFO *rectPatchInfo)
255	{
256		TRACE("unsigned int handle = %d, const float *numSegs = 0x%0.8p, const D3DRECTPATCH_INFO *rectPatchInfo = 0x%0.8p", handle, numSegs, rectPatchInfo);
257
258		return Direct3DDevice9::DrawRectPatch(handle, numSegs, rectPatchInfo);
259	}
260
261	long Direct3DDevice9Ex::DrawTriPatch(unsigned int handle, const float *numSegs, const D3DTRIPATCH_INFO *triPatchInfo)
262	{
263		TRACE("unsigned int handle = %d, const float *numSegs = 0x%0.8p, const D3DTRIPATCH_INFO *triPatchInfo = 0x%0.8p", handle, numSegs, triPatchInfo);
264
265		return Direct3DDevice9::DrawTriPatch(handle, numSegs, triPatchInfo);
266	}
267
268	long Direct3DDevice9Ex::EndScene()
269	{
270		TRACE("void");
271
272		return Direct3DDevice9::EndScene();
273	}
274
275	long Direct3DDevice9Ex::EndStateBlock(IDirect3DStateBlock9 **stateBlock)
276	{
277		TRACE("IDirect3DStateBlock9 **stateBlock = 0x%0.8p", stateBlock);
278
279		return Direct3DDevice9::EndStateBlock(stateBlock);
280	}
281
282	long Direct3DDevice9Ex::EvictManagedResources()
283	{
284		TRACE("void");
285
286		return Direct3DDevice9::EvictManagedResources();
287	}
288
289	unsigned int Direct3DDevice9Ex::GetAvailableTextureMem()
290	{
291		TRACE("void");
292
293		return Direct3DDevice9::GetAvailableTextureMem();
294	}
295
296	long Direct3DDevice9Ex::GetBackBuffer(unsigned int swapChainIndex, unsigned int backBufferIndex, D3DBACKBUFFER_TYPE type, IDirect3DSurface9 **backBuffer)
297	{
298		TRACE("unsigned int swapChainIndex = %d, unsigned int backBufferIndex = %d, D3DBACKBUFFER_TYPE type = %d, IDirect3DSurface9 **backBuffer = 0x%0.8p", swapChainIndex, backBufferIndex, type, backBuffer);
299
300		return Direct3DDevice9::GetBackBuffer(swapChainIndex, backBufferIndex, type, backBuffer);
301	}
302
303	long Direct3DDevice9Ex::GetClipPlane(unsigned long index, float *plane)
304	{
305		TRACE("unsigned long index = %d, float *plane = 0x%0.8p", index, plane);
306
307		return Direct3DDevice9::GetClipPlane(index, plane);
308	}
309
310	long Direct3DDevice9Ex::GetClipStatus(D3DCLIPSTATUS9 *clipStatus)
311	{
312		TRACE("D3DCLIPSTATUS9 *clipStatus = 0x%0.8p", clipStatus);
313
314		return Direct3DDevice9::GetClipStatus(clipStatus);
315	}
316
317	long Direct3DDevice9Ex::GetCreationParameters(D3DDEVICE_CREATION_PARAMETERS *parameters)
318	{
319		TRACE("D3DDEVICE_CREATION_PARAMETERS *parameters = 0x%0.8p", parameters);
320
321		return Direct3DDevice9::GetCreationParameters(parameters);
322	}
323
324	long Direct3DDevice9Ex::GetCurrentTexturePalette(unsigned int *paletteNumber)
325	{
326		TRACE("unsigned int *paletteNumber = 0x%0.8p", paletteNumber);
327
328		return Direct3DDevice9::GetCurrentTexturePalette(paletteNumber);
329	}
330
331	long Direct3DDevice9Ex::GetDepthStencilSurface(IDirect3DSurface9 **depthStencilSurface)
332	{
333		TRACE("IDirect3DSurface9 **depthStencilSurface = 0x%0.8p", depthStencilSurface);
334
335		return Direct3DDevice9::GetDepthStencilSurface(depthStencilSurface);
336	}
337
338	long Direct3DDevice9Ex::GetDeviceCaps(D3DCAPS9 *caps)
339	{
340		TRACE("D3DCAPS9 *caps = 0x%0.8p", caps);
341
342		return d3d9ex->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, caps);
343	}
344
345	long Direct3DDevice9Ex::GetDirect3D(IDirect3D9 **d3d9)
346	{
347		TRACE("IDirect3D9 **d3d9 = 0x%0.8p", d3d9);
348
349		return Direct3DDevice9::GetDirect3D(d3d9);
350	}
351
352	long Direct3DDevice9Ex::GetDisplayMode(unsigned int index, D3DDISPLAYMODE *mode)
353	{
354		TRACE("unsigned int index = %d, D3DDISPLAYMODE *mode = 0x%0.8p", index, mode);
355
356		return Direct3DDevice9::GetDisplayMode(index, mode);
357	}
358
359	long Direct3DDevice9Ex::GetFrontBufferData(unsigned int index, IDirect3DSurface9 *destSurface)
360	{
361		TRACE("unsigned int index = %d, IDirect3DSurface9 *destSurface = %p", index, destSurface);
362
363		return Direct3DDevice9::GetFrontBufferData(index, destSurface);
364	}
365
366	long Direct3DDevice9Ex::GetFVF(unsigned long *FVF)
367	{
368		TRACE("unsigned long *FVF = 0x%0.8p", FVF);
369
370		return Direct3DDevice9::GetFVF(FVF);
371	}
372
373	void Direct3DDevice9Ex::GetGammaRamp(unsigned int index, D3DGAMMARAMP *ramp)
374	{
375		TRACE("unsigned int index = %d, D3DGAMMARAMP *ramp = 0x%0.8p", index, ramp);
376
377		return Direct3DDevice9::GetGammaRamp(index, ramp);
378	}
379
380	long Direct3DDevice9Ex::GetIndices(IDirect3DIndexBuffer9 **indexData)
381	{
382		TRACE("IDirect3DIndexBuffer9 **indexData = 0x%0.8p", indexData);
383
384		return Direct3DDevice9::GetIndices(indexData);
385	}
386
387	long Direct3DDevice9Ex::GetLight(unsigned long index, D3DLIGHT9 *light)
388	{
389		TRACE("unsigned long index = %d, D3DLIGHT9 *light = 0x%0.8p", index, light);
390
391		return Direct3DDevice9::GetLight(index, light);
392	}
393
394	long Direct3DDevice9Ex::GetLightEnable(unsigned long index, int *enable)
395	{
396		TRACE("unsigned long index = %d, int *enable = 0x%0.8p", index, enable);
397
398		return Direct3DDevice9::GetLightEnable(index, enable);
399	}
400
401	long Direct3DDevice9Ex::GetMaterial(D3DMATERIAL9 *material)
402	{
403		TRACE("D3DMATERIAL9 *material = 0x%0.8p", material);
404
405		return Direct3DDevice9::GetMaterial(material);
406	}
407
408	float Direct3DDevice9Ex::GetNPatchMode()
409	{
410		TRACE("void");
411
412		return Direct3DDevice9::GetNPatchMode();
413	}
414
415	unsigned int Direct3DDevice9Ex::GetNumberOfSwapChains()
416	{
417		TRACE("void");
418
419		return Direct3DDevice9::GetNumberOfSwapChains();
420	}
421
422	long Direct3DDevice9Ex::GetPaletteEntries(unsigned int paletteNumber, PALETTEENTRY *entries)
423	{
424		TRACE("unsigned int paletteNumber = %d, PALETTEENTRY *entries = 0x%0.8p", paletteNumber, entries);
425
426		return Direct3DDevice9::GetPaletteEntries(paletteNumber, entries);
427	}
428
429	long Direct3DDevice9Ex::GetPixelShader(IDirect3DPixelShader9 **shader)
430	{
431		TRACE("IDirect3DPixelShader9 **shader = 0x%0.8p", shader);
432
433		return Direct3DDevice9::GetPixelShader(shader);
434	}
435
436	long Direct3DDevice9Ex::GetPixelShaderConstantB(unsigned int startRegister, int *constantData, unsigned int count)
437	{
438		TRACE("unsigned int startRegister = %d, int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
439
440		return Direct3DDevice9::GetPixelShaderConstantB(startRegister, constantData, count);
441	}
442
443	long Direct3DDevice9Ex::GetPixelShaderConstantF(unsigned int startRegister, float *constantData, unsigned int count)
444	{
445		TRACE("unsigned int startRegister = %d, int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
446
447		return Direct3DDevice9::GetPixelShaderConstantF(startRegister, constantData, count);
448	}
449
450	long Direct3DDevice9Ex::GetPixelShaderConstantI(unsigned int startRegister, int *constantData, unsigned int count)
451	{
452		TRACE("unsigned int startRegister = %d, int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
453
454		return Direct3DDevice9::GetPixelShaderConstantI(startRegister, constantData, count);
455	}
456
457	long Direct3DDevice9Ex::GetRasterStatus(unsigned int swapChain, D3DRASTER_STATUS *rasterStatus)
458	{
459		TRACE("unsigned int swapChain = %d, D3DRASTER_STATUS *rasterStatus = 0x%0.8p", swapChain, rasterStatus);
460
461		return Direct3DDevice9::GetRasterStatus(swapChain, rasterStatus);
462	}
463
464	long Direct3DDevice9Ex::GetRenderState(D3DRENDERSTATETYPE state, unsigned long *value)
465	{
466		TRACE("D3DRENDERSTATETYPE state = %d, unsigned long *value = 0x%0.8p", state, value);
467
468		return Direct3DDevice9::GetRenderState(state, value);
469	}
470
471	long Direct3DDevice9Ex::GetRenderTarget(unsigned long index, IDirect3DSurface9 **renderTarget)
472	{
473		TRACE("unsigned long index = %d, IDirect3DSurface9 **renderTarget = 0x%0.8p", index, renderTarget);
474
475		return Direct3DDevice9::GetRenderTarget(index, renderTarget);
476	}
477
478	long Direct3DDevice9Ex::GetRenderTargetData(IDirect3DSurface9 *renderTarget, IDirect3DSurface9 *destSurface)
479	{
480		TRACE("IDirect3DSurface9 *renderTarget = 0x%0.8p, IDirect3DSurface9 *destSurface = 0x%0.8p", renderTarget, destSurface);
481
482		return Direct3DDevice9::GetRenderTargetData(renderTarget, destSurface);
483	}
484
485	long Direct3DDevice9Ex::GetSamplerState(unsigned long sampler, D3DSAMPLERSTATETYPE state, unsigned long *value)
486	{
487		TRACE("unsigned long sampler = %d, D3DSAMPLERSTATETYPE type = %d, unsigned long *value = 0x%0.8p", sampler, state, value);
488
489		return Direct3DDevice9::GetSamplerState(sampler, state, value);
490	}
491
492	long Direct3DDevice9Ex::GetScissorRect(RECT *rect)
493	{
494		TRACE("RECT *rect = 0x%0.8p", rect);
495
496		return Direct3DDevice9::GetScissorRect(rect);
497	}
498
499	int Direct3DDevice9Ex::GetSoftwareVertexProcessing()
500	{
501		TRACE("void");
502
503		return Direct3DDevice9::GetSoftwareVertexProcessing();
504	}
505
506	long Direct3DDevice9Ex::GetStreamSource(unsigned int streamNumber, IDirect3DVertexBuffer9 **streamData, unsigned int *offset, unsigned int *stride)
507	{
508		TRACE("unsigned int streamNumber = %d, IDirect3DVertexBuffer9 **streamData = 0x%0.8p, unsigned int *offset = 0x%0.8p, unsigned int *stride = 0x%0.8p", streamNumber, streamData, offset, stride);
509
510		return Direct3DDevice9::GetStreamSource(streamNumber, streamData, offset, stride);
511	}
512
513	long Direct3DDevice9Ex::GetStreamSourceFreq(unsigned int streamNumber, unsigned int *divider)
514	{
515		TRACE("unsigned int streamNumber = %d, unsigned int *divider = 0x%0.8p", streamNumber, divider);
516
517		return Direct3DDevice9::GetStreamSourceFreq(streamNumber, divider);
518	}
519
520	long Direct3DDevice9Ex::GetSwapChain(unsigned int index, IDirect3DSwapChain9 **swapChain)
521	{
522		TRACE("unsigned int index = %d, IDirect3DSwapChain9 **swapChain = 0x%0.8p", index, swapChain);
523
524		return Direct3DDevice9::GetSwapChain(index, swapChain);
525	}
526
527	long Direct3DDevice9Ex::GetTexture(unsigned long sampler, IDirect3DBaseTexture9 **texture)
528	{
529		TRACE("unsigned long sampler = %d, IDirect3DBaseTexture9 **texture = 0x%0.8p", sampler, texture);
530
531		return Direct3DDevice9::GetTexture(sampler, texture);
532	}
533
534	long Direct3DDevice9Ex::GetTextureStageState(unsigned long stage, D3DTEXTURESTAGESTATETYPE type, unsigned long *value)
535	{
536		TRACE("unsigned long stage = %d, D3DTEXTURESTAGESTATETYPE type = %d, unsigned long *value = 0x%0.8p", stage, type, value);
537
538		return Direct3DDevice9::GetTextureStageState(stage, type, value);
539	}
540
541	long Direct3DDevice9Ex::GetTransform(D3DTRANSFORMSTATETYPE state, D3DMATRIX *matrix)
542	{
543		TRACE("D3DTRANSFORMSTATETYPE state = %d, D3DMATRIX *matrix = 0x%0.8p", state, matrix);
544
545		return Direct3DDevice9::GetTransform(state, matrix);
546	}
547
548	long Direct3DDevice9Ex::GetVertexDeclaration(IDirect3DVertexDeclaration9 **declaration)
549	{
550		TRACE("IDirect3DVertexDeclaration9 **declaration = 0x%0.8p", declaration);
551
552		return Direct3DDevice9::GetVertexDeclaration(declaration);
553	}
554
555	long Direct3DDevice9Ex::GetVertexShader(IDirect3DVertexShader9 **shader)
556	{
557		TRACE("IDirect3DVertexShader9 **shader = 0x%0.8p", shader);
558
559		return Direct3DDevice9::GetVertexShader(shader);
560	}
561
562	long Direct3DDevice9Ex::GetVertexShaderConstantB(unsigned int startRegister, int *constantData, unsigned int count)
563	{
564		TRACE("unsigned int startRegister = %d, int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
565
566		return Direct3DDevice9::GetVertexShaderConstantB(startRegister, constantData, count);
567	}
568
569	long Direct3DDevice9Ex::GetVertexShaderConstantF(unsigned int startRegister, float *constantData, unsigned int count)
570	{
571		TRACE("unsigned int startRegister = %d, int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
572
573		return Direct3DDevice9::GetVertexShaderConstantF(startRegister, constantData, count);
574	}
575
576	long Direct3DDevice9Ex::GetVertexShaderConstantI(unsigned int startRegister, int *constantData, unsigned int count)
577	{
578		TRACE("unsigned int startRegister = %d, int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
579
580		return Direct3DDevice9::GetVertexShaderConstantI(startRegister, constantData, count);
581	}
582
583	long Direct3DDevice9Ex::GetViewport(D3DVIEWPORT9 *viewport)
584	{
585		TRACE("D3DVIEWPORT9 *viewport = 0x%0.8p", viewport);
586
587		return Direct3DDevice9::GetViewport(viewport);
588	}
589
590	long Direct3DDevice9Ex::LightEnable(unsigned long index, int enable)
591	{
592		TRACE("unsigned long index = %d, int enable = %d", index, enable);
593
594		return Direct3DDevice9::LightEnable(index, enable);
595	}
596
597	long Direct3DDevice9Ex::MultiplyTransform(D3DTRANSFORMSTATETYPE state, const D3DMATRIX *matrix)
598	{
599		TRACE("D3DTRANSFORMSTATETYPE state = %d, const D3DMATRIX *matrix = 0x%0.8p", state, matrix);
600
601		return Direct3DDevice9::MultiplyTransform(state, matrix);
602	}
603
604	long Direct3DDevice9Ex::Present(const RECT *sourceRect, const RECT *destRect, HWND destWindowOverride, const RGNDATA *dirtyRegion)
605	{
606		TRACE("const RECT *sourceRect = 0x%0.8p, const RECT *destRect = 0x%0.8p, HWND destWindowOverride = %d, const RGNDATA *dirtyRegion = 0x%0.8p", sourceRect, destRect, destWindowOverride, dirtyRegion);
607
608		return Direct3DDevice9::Present(sourceRect, destRect, destWindowOverride, dirtyRegion);
609	}
610
611	long Direct3DDevice9Ex::ProcessVertices(unsigned int srcStartIndex, unsigned int destIndex, unsigned int vertexCount, IDirect3DVertexBuffer9 *destBuffer, IDirect3DVertexDeclaration9 *vertexDeclaration, unsigned long flags)
612	{
613		TRACE("unsigned int srcStartIndex = %d, unsigned int destIndex = %d, unsigned int vertexCount = %d, IDirect3DVertexBuffer9 *destBuffer = 0x%0.8p, IDirect3DVertexDeclaration9 *vertexDeclaration = 0x%0.8p, unsigned long flags = %d", srcStartIndex, destIndex, vertexCount, destBuffer, vertexDeclaration, flags);
614
615		return Direct3DDevice9::ProcessVertices(srcStartIndex, destIndex, vertexCount, destBuffer, vertexDeclaration, flags);
616	}
617
618	long Direct3DDevice9Ex::Reset(D3DPRESENT_PARAMETERS *presentParameters)
619	{
620		TRACE("D3DPRESENT_PARAMETERS *presentParameters = 0x%0.8p", presentParameters);
621
622		return Direct3DDevice9::Reset(presentParameters);
623	}
624
625	long Direct3DDevice9Ex::SetClipPlane(unsigned long index, const float *plane)
626	{
627		TRACE("unsigned long index = %d, const float *plane = 0x%0.8p", index, plane);
628
629		return Direct3DDevice9::SetClipPlane(index, plane);
630	}
631
632	long Direct3DDevice9Ex::SetClipStatus(const D3DCLIPSTATUS9 *clipStatus)
633	{
634		TRACE("const D3DCLIPSTATUS9 *clipStatus = 0x%0.8p", clipStatus);
635
636		return Direct3DDevice9::SetClipStatus(clipStatus);
637	}
638
639	long Direct3DDevice9Ex::SetCurrentTexturePalette(unsigned int paletteNumber)
640	{
641		TRACE("unsigned int paletteNumber = %d", paletteNumber);
642
643		return Direct3DDevice9::SetCurrentTexturePalette(paletteNumber);
644	}
645
646	void Direct3DDevice9Ex::SetCursorPosition(int x, int y, unsigned long flags)
647	{
648		TRACE("int x = %d, int y = %d, unsigned long flags = 0x%0.8X", x, y, flags);
649
650		return Direct3DDevice9::SetCursorPosition(x, y, flags);
651	}
652
653	long Direct3DDevice9Ex::SetCursorProperties(unsigned int x, unsigned int y, IDirect3DSurface9 *cursorBitmap)
654	{
655		TRACE("unsigned int x = %d, unsigned int y = %d, IDirect3DSurface9 *cursorBitmap = 0x%0.8p", x, y, cursorBitmap);
656
657		return Direct3DDevice9::SetCursorProperties(x, y, cursorBitmap);
658	}
659
660	long Direct3DDevice9Ex::SetDepthStencilSurface(IDirect3DSurface9 *iDepthStencil)
661	{
662		TRACE("IDirect3DSurface9 *newDepthStencil = 0x%0.8p", iDepthStencil);
663
664		return Direct3DDevice9::SetDepthStencilSurface(iDepthStencil);
665	}
666
667	long Direct3DDevice9Ex::SetDialogBoxMode(int enableDialogs)
668	{
669		TRACE("int enableDialogs = %d", enableDialogs);
670
671		return Direct3DDevice9::SetDialogBoxMode(enableDialogs);
672	}
673
674	long Direct3DDevice9Ex::SetFVF(unsigned long FVF)
675	{
676		TRACE("unsigned long FVF = 0x%0.8X", FVF);
677
678		return Direct3DDevice9::SetFVF(FVF);
679	}
680
681	void Direct3DDevice9Ex::SetGammaRamp(unsigned int index, unsigned long flags, const D3DGAMMARAMP *ramp)
682	{
683		TRACE("unsigned int index = %d, unsigned long flags = 0x%0.8X, const D3DGAMMARAMP *ramp = 0x%0.8p", index, flags, ramp);
684
685		return Direct3DDevice9::SetGammaRamp(index, flags, ramp);
686	}
687
688	long Direct3DDevice9Ex::SetIndices(IDirect3DIndexBuffer9* iIndexBuffer)
689	{
690		TRACE("IDirect3DIndexBuffer9* indexData = 0x%0.8p", iIndexBuffer);
691
692		return Direct3DDevice9::SetIndices(iIndexBuffer);
693	}
694
695	long Direct3DDevice9Ex::SetLight(unsigned long index, const D3DLIGHT9 *light)
696	{
697		TRACE("unsigned long index = %d, const D3DLIGHT9 *light = 0x%0.8p", index, light);
698
699		return Direct3DDevice9::SetLight(index, light);
700	}
701
702	long Direct3DDevice9Ex::SetMaterial(const D3DMATERIAL9 *material)
703	{
704		TRACE("const D3DMATERIAL9 *material = 0x%0.8p", material);
705
706		return Direct3DDevice9::SetMaterial(material);
707	}
708
709	long Direct3DDevice9Ex::SetNPatchMode(float segments)
710	{
711		TRACE("float segments = %f", segments);
712
713		return Direct3DDevice9::SetNPatchMode(segments);
714	}
715
716	long Direct3DDevice9Ex::SetPaletteEntries(unsigned int paletteNumber, const PALETTEENTRY *entries)
717	{
718		TRACE("unsigned int paletteNumber = %d, const PALETTEENTRY *entries = 0x%0.8p", paletteNumber, entries);
719
720		return Direct3DDevice9::SetPaletteEntries(paletteNumber, entries);
721	}
722
723	long Direct3DDevice9Ex::SetPixelShader(IDirect3DPixelShader9 *iPixelShader)
724	{
725		TRACE("IDirect3DPixelShader9 *shader = 0x%0.8p", iPixelShader);
726
727		return Direct3DDevice9::SetPixelShader(iPixelShader);
728	}
729
730	long Direct3DDevice9Ex::SetPixelShaderConstantB(unsigned int startRegister, const int *constantData, unsigned int count)
731	{
732		TRACE("unsigned int startRegister = %d, const int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
733
734		return Direct3DDevice9::SetPixelShaderConstantB(startRegister, constantData, count);
735	}
736
737	long Direct3DDevice9Ex::SetPixelShaderConstantF(unsigned int startRegister, const float *constantData, unsigned int count)
738	{
739		TRACE("unsigned int startRegister = %d, const int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
740
741		return Direct3DDevice9::SetPixelShaderConstantF(startRegister, constantData, count);
742	}
743
744	long Direct3DDevice9Ex::SetPixelShaderConstantI(unsigned int startRegister, const int *constantData, unsigned int count)
745	{
746		TRACE("unsigned int startRegister = %d, const int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
747
748		return Direct3DDevice9::SetPixelShaderConstantI(startRegister, constantData, count);
749	}
750
751	long Direct3DDevice9Ex::SetRenderState(D3DRENDERSTATETYPE state, unsigned long value)
752	{
753		TRACE("D3DRENDERSTATETYPE state = %d, unsigned long value = %d", state, value);
754
755		return Direct3DDevice9::SetRenderState(state, value);
756	}
757
758	long Direct3DDevice9Ex::SetRenderTarget(unsigned long index, IDirect3DSurface9 *iRenderTarget)
759	{
760		TRACE("unsigned long index = %d, IDirect3DSurface9 *newRenderTarget = 0x%0.8p", index, iRenderTarget);
761
762		return Direct3DDevice9::SetRenderTarget(index, iRenderTarget);
763	}
764
765	long Direct3DDevice9Ex::SetSamplerState(unsigned long sampler, D3DSAMPLERSTATETYPE state, unsigned long value)
766	{
767		TRACE("unsigned long sampler = %d, D3DSAMPLERSTATETYPE state = %d, unsigned long value = %d", sampler, state, value);
768
769		return Direct3DDevice9::SetSamplerState(sampler, state, value);
770	}
771
772	long Direct3DDevice9Ex::SetScissorRect(const RECT *rect)
773	{
774		TRACE("const RECT *rect = 0x%0.8p", rect);
775
776		return Direct3DDevice9::SetScissorRect(rect);
777	}
778
779	long Direct3DDevice9Ex::SetSoftwareVertexProcessing(int software)
780	{
781		TRACE("int software = %d", software);
782
783		return Direct3DDevice9::SetSoftwareVertexProcessing(software);
784	}
785
786	long Direct3DDevice9Ex::SetStreamSource(unsigned int stream, IDirect3DVertexBuffer9 *iVertexBuffer, unsigned int offset, unsigned int stride)
787	{
788		TRACE("unsigned int stream = %d, IDirect3DVertexBuffer9 *data = 0x%0.8p, unsigned int offset = %d, unsigned int stride = %d", stream, iVertexBuffer, offset, stride);
789
790		return Direct3DDevice9::SetStreamSource(stream, iVertexBuffer, offset, stride);
791	}
792
793	long Direct3DDevice9Ex::SetStreamSourceFreq(unsigned int streamNumber, unsigned int divider)
794	{
795		TRACE("unsigned int streamNumber = %d, unsigned int divider = %d", streamNumber, divider);
796
797		return Direct3DDevice9::SetStreamSourceFreq(streamNumber, divider);
798	}
799
800	long Direct3DDevice9Ex::SetTexture(unsigned long sampler, IDirect3DBaseTexture9 *iBaseTexture)
801	{
802		TRACE("unsigned long sampler = %d, IDirect3DBaseTexture9 *texture = 0x%0.8p", sampler, iBaseTexture);
803
804		return Direct3DDevice9::SetTexture(sampler, iBaseTexture);
805	}
806
807	long Direct3DDevice9Ex::SetTextureStageState(unsigned long stage, D3DTEXTURESTAGESTATETYPE type, unsigned long value)
808	{
809		TRACE("unsigned long stage = %d, D3DTEXTURESTAGESTATETYPE type = %d, unsigned long value = %d", stage, type, value);
810
811		return Direct3DDevice9::SetTextureStageState(stage, type, value);
812	}
813
814	long Direct3DDevice9Ex::SetTransform(D3DTRANSFORMSTATETYPE state, const D3DMATRIX *matrix)
815	{
816		TRACE("D3DTRANSFORMSTATETYPE state = %d, const D3DMATRIX *matrix = 0x%0.8p", state, matrix);
817
818		return Direct3DDevice9::SetTransform(state, matrix);
819	}
820
821	long Direct3DDevice9Ex::SetVertexDeclaration(IDirect3DVertexDeclaration9 *iVertexDeclaration)
822	{
823		TRACE("IDirect3DVertexDeclaration9 *declaration = 0x%0.8p", iVertexDeclaration);
824
825		return Direct3DDevice9::SetVertexDeclaration(iVertexDeclaration);
826	}
827
828	long Direct3DDevice9Ex::SetVertexShader(IDirect3DVertexShader9 *iVertexShader)
829	{
830		TRACE("IDirect3DVertexShader9 *shader = 0x%0.8p", iVertexShader);
831
832		return Direct3DDevice9::SetVertexShader(iVertexShader);
833	}
834
835	long Direct3DDevice9Ex::SetVertexShaderConstantB(unsigned int startRegister, const int *constantData, unsigned int count)
836	{
837		TRACE("unsigned int startRegister = %d, const int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
838
839		return Direct3DDevice9::SetVertexShaderConstantB(startRegister, constantData, count);
840	}
841
842	long Direct3DDevice9Ex::SetVertexShaderConstantF(unsigned int startRegister, const float *constantData, unsigned int count)
843	{
844		TRACE("unsigned int startRegister = %d, const int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
845
846		return Direct3DDevice9::SetVertexShaderConstantF(startRegister, constantData, count);
847	}
848
849	long Direct3DDevice9Ex::SetVertexShaderConstantI(unsigned int startRegister, const int *constantData, unsigned int count)
850	{
851		TRACE("unsigned int startRegister = %d, const int *constantData = 0x%0.8p, unsigned int count = %d", startRegister, constantData, count);
852
853		return Direct3DDevice9::SetVertexShaderConstantI(startRegister, constantData, count);
854	}
855
856	long Direct3DDevice9Ex::SetViewport(const D3DVIEWPORT9 *viewport)
857	{
858		TRACE("const D3DVIEWPORT9 *viewport = 0x%0.8p", viewport);
859
860		return Direct3DDevice9::SetViewport(viewport);
861	}
862
863	int Direct3DDevice9Ex::ShowCursor(int show)
864	{
865		TRACE("int show = %d", show);
866
867		return Direct3DDevice9::ShowCursor(show);
868	}
869
870	long Direct3DDevice9Ex::StretchRect(IDirect3DSurface9 *sourceSurface, const RECT *sourceRect, IDirect3DSurface9 *destSurface, const RECT *destRect, D3DTEXTUREFILTERTYPE filter)
871	{
872		TRACE("IDirect3DSurface9 *sourceSurface = 0x%0.8p, const RECT *sourceRect = 0x%0.8p, IDirect3DSurface9 *destSurface = 0x%0.8p, const RECT *destRect = 0x%0.8p, D3DTEXTUREFILTERTYPE filter = %d", sourceSurface, sourceRect, destSurface, destRect, filter);
873
874		return Direct3DDevice9::StretchRect(sourceSurface, sourceRect, destSurface, destRect, filter);
875	}
876
877	long Direct3DDevice9Ex::TestCooperativeLevel()
878	{
879		TRACE("void");
880
881		return Direct3DDevice9::TestCooperativeLevel();
882	}
883
884	long Direct3DDevice9Ex::UpdateSurface(IDirect3DSurface9 *sourceSurface, const RECT *sourceRect, IDirect3DSurface9 *destinationSurface, const POINT *destPoint)
885	{
886		TRACE("IDirect3DSurface9 *sourceSurface = 0x%0.8p, const RECT *sourceRect = 0x%0.8p, IDirect3DSurface9 *destinationSurface = 0x%0.8p, const POINT *destPoint = 0x%0.8p", sourceSurface, sourceRect, destinationSurface, destPoint);
887
888		return Direct3DDevice9::UpdateSurface(sourceSurface, sourceRect, destinationSurface, destPoint);
889	}
890
891	long Direct3DDevice9Ex::UpdateTexture(IDirect3DBaseTexture9 *sourceTexture, IDirect3DBaseTexture9 *destinationTexture)
892	{
893		TRACE("IDirect3DBaseTexture9 *sourceTexture = 0x%0.8p, IDirect3DBaseTexture9 *destinationTexture = 0x%0.8p", sourceTexture, destinationTexture);
894
895		return Direct3DDevice9::UpdateTexture(sourceTexture, destinationTexture);
896	}
897
898	long Direct3DDevice9Ex::ValidateDevice(unsigned long *numPasses)
899	{
900		TRACE("unsigned long *numPasses = 0x%0.8p", numPasses);
901
902		return Direct3DDevice9::ValidateDevice(numPasses);
903	}
904
905	HRESULT Direct3DDevice9Ex::SetConvolutionMonoKernel(UINT,UINT,float *,float *)
906	{
907		CriticalSection cs(this);
908
909		UNIMPLEMENTED();
910
911		return D3D_OK;
912	}
913
914	HRESULT Direct3DDevice9Ex::ComposeRects(IDirect3DSurface9 *,IDirect3DSurface9 *,IDirect3DVertexBuffer9 *,UINT,IDirect3DVertexBuffer9 *,D3DCOMPOSERECTSOP,int,int)
915	{
916		CriticalSection cs(this);
917
918		UNIMPLEMENTED();
919
920		return D3D_OK;
921	}
922
923	HRESULT Direct3DDevice9Ex::PresentEx(const RECT *,const RECT *,HWND,const RGNDATA *,DWORD)
924	{
925		CriticalSection cs(this);
926
927		UNIMPLEMENTED();
928
929		return D3D_OK;
930	}
931
932	HRESULT Direct3DDevice9Ex::GetGPUThreadPriority(INT *)
933	{
934		CriticalSection cs(this);
935
936		UNIMPLEMENTED();
937
938		return D3D_OK;
939	}
940
941	HRESULT Direct3DDevice9Ex::SetGPUThreadPriority(INT)
942	{
943		CriticalSection cs(this);
944
945		UNIMPLEMENTED();
946
947		return D3D_OK;
948	}
949
950	HRESULT Direct3DDevice9Ex::WaitForVBlank(UINT)
951	{
952		CriticalSection cs(this);
953
954		UNIMPLEMENTED();
955
956		return D3D_OK;
957	}
958
959	HRESULT Direct3DDevice9Ex::CheckResourceResidency(IDirect3DResource9 **,UINT32)
960	{
961		CriticalSection cs(this);
962
963		UNIMPLEMENTED();
964
965		return D3D_OK;
966	}
967
968	HRESULT Direct3DDevice9Ex::SetMaximumFrameLatency(UINT)
969	{
970		CriticalSection cs(this);
971
972		UNIMPLEMENTED();
973
974		return D3D_OK;
975	}
976
977	HRESULT Direct3DDevice9Ex::GetMaximumFrameLatency(UINT *)
978	{
979		CriticalSection cs(this);
980
981		UNIMPLEMENTED();
982
983		return D3D_OK;
984	}
985
986	HRESULT Direct3DDevice9Ex::CheckDeviceState(HWND destinationWindow)
987	{
988		CriticalSection cs(this);
989
990	//	UNIMPLEMENTED();
991
992		return D3D_OK;
993	}
994
995	HRESULT Direct3DDevice9Ex::CreateRenderTargetEx(UINT,UINT,D3DFORMAT,D3DMULTISAMPLE_TYPE,DWORD,BOOL,IDirect3DSurface9 **,HANDLE *,DWORD)
996	{
997		CriticalSection cs(this);
998
999		UNIMPLEMENTED();
1000
1001		return D3D_OK;
1002	}
1003
1004	HRESULT Direct3DDevice9Ex::CreateOffscreenPlainSurfaceEx(UINT,UINT,D3DFORMAT,D3DPOOL,IDirect3DSurface9 **,HANDLE *,DWORD)
1005	{
1006		CriticalSection cs(this);
1007
1008		UNIMPLEMENTED();
1009
1010		return D3D_OK;
1011	}
1012
1013	HRESULT Direct3DDevice9Ex::CreateDepthStencilSurfaceEx(UINT,UINT,D3DFORMAT,D3DMULTISAMPLE_TYPE,DWORD,BOOL,IDirect3DSurface9 **,HANDLE *,DWORD)
1014	{
1015		CriticalSection cs(this);
1016
1017		UNIMPLEMENTED();
1018
1019		return D3D_OK;
1020	}
1021
1022	HRESULT Direct3DDevice9Ex::ResetEx(D3DPRESENT_PARAMETERS *,D3DDISPLAYMODEEX *)
1023	{
1024		CriticalSection cs(this);
1025
1026		UNIMPLEMENTED();
1027
1028		return D3D_OK;
1029	}
1030
1031	HRESULT Direct3DDevice9Ex::GetDisplayModeEx(UINT,D3DDISPLAYMODEEX *,D3DDISPLAYROTATION *)
1032	{
1033		CriticalSection cs(this);
1034
1035		UNIMPLEMENTED();
1036
1037		return D3D_OK;
1038	}
1039}
1040