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