]> git.cworth.org Git - apitrace/blob - d3d9/idirect3d_device9.cpp
Dump flags.
[apitrace] / d3d9 / idirect3d_device9.cpp
1 #include "StdAfx.h"
2
3 TraceDirect3DDevice9::TraceDirect3DDevice9(IDirect3DDevice9* pOriginal) {
4     m_pIDirect3DDevice9 = pOriginal; // store the pointer to original object
5 }
6
7 TraceDirect3DDevice9::~TraceDirect3DDevice9(void) {
8 }
9
10 HRESULT TraceDirect3DDevice9::QueryInterface(REFIID riid, void** ppvObj) {
11     // check if original dll can provide interface. then send *our* address
12     *ppvObj = NULL;
13
14     HRESULT hRes = m_pIDirect3DDevice9->QueryInterface(riid, ppvObj);
15
16     if (hRes == NOERROR) {
17         *ppvObj = this;
18     }
19
20     return hRes;
21 }
22
23 ULONG TraceDirect3DDevice9::AddRef(void) {
24     return (m_pIDirect3DDevice9->AddRef());
25 }
26
27 ULONG TraceDirect3DDevice9::Release(void) {
28     // ATTENTION: This is a booby-trap ! Watch out !
29     // If we create our own sprites, surfaces, etc. (thus increasing the ref counter
30     // by external action), we need to delete that objects before calling the original
31     // Release function 
32
33     // global var
34     extern TraceDirect3DDevice9* gl_pmyIDirect3DDevice9;
35
36     // release/delete own objects
37     // .....
38
39     // Calling original function now
40     ULONG count = m_pIDirect3DDevice9->Release();
41
42     if (count == 0) {
43         // now, the Original Object has deleted itself, so do we here
44         gl_pmyIDirect3DDevice9 = NULL;
45         delete (this); // destructor will be called automatically
46     }
47
48     return (count);
49 }
50
51 HRESULT TraceDirect3DDevice9::TestCooperativeLevel(void) {
52     return (m_pIDirect3DDevice9->TestCooperativeLevel());
53 }
54
55 UINT TraceDirect3DDevice9::GetAvailableTextureMem(void) {
56     return (m_pIDirect3DDevice9->GetAvailableTextureMem());
57 }
58
59 HRESULT TraceDirect3DDevice9::EvictManagedResources(void) {
60     return (m_pIDirect3DDevice9->EvictManagedResources());
61 }
62
63 HRESULT TraceDirect3DDevice9::GetDirect3D(IDirect3D9** ppD3D9) {
64     return (m_pIDirect3DDevice9->GetDirect3D(ppD3D9));
65 }
66
67 HRESULT TraceDirect3DDevice9::GetDeviceCaps(D3DCAPS9* pCaps) {
68     return (m_pIDirect3DDevice9->GetDeviceCaps(pCaps));
69 }
70
71 HRESULT TraceDirect3DDevice9::GetDisplayMode(UINT iSwapChain, D3DDISPLAYMODE* pMode) {
72     return (m_pIDirect3DDevice9->GetDisplayMode(iSwapChain, pMode));
73 }
74
75 HRESULT TraceDirect3DDevice9::GetCreationParameters(D3DDEVICE_CREATION_PARAMETERS *pParameters) {
76     return (m_pIDirect3DDevice9->GetCreationParameters(pParameters));
77 }
78
79 HRESULT TraceDirect3DDevice9::SetCursorProperties(UINT XHotSpot, UINT YHotSpot, IDirect3DSurface9* pCursorBitmap) {
80     return (m_pIDirect3DDevice9->SetCursorProperties(XHotSpot, YHotSpot, pCursorBitmap));
81 }
82
83 void TraceDirect3DDevice9::SetCursorPosition(int X, int Y, DWORD Flags) {
84     return (m_pIDirect3DDevice9->SetCursorPosition(X, Y, Flags));
85 }
86
87 BOOL TraceDirect3DDevice9::ShowCursor(BOOL bShow) {
88     return (m_pIDirect3DDevice9->ShowCursor(bShow));
89 }
90
91 HRESULT TraceDirect3DDevice9::CreateAdditionalSwapChain(D3DPRESENT_PARAMETERS* pPresentationParameters, IDirect3DSwapChain9** pSwapChain) {
92     return (m_pIDirect3DDevice9->CreateAdditionalSwapChain(pPresentationParameters, pSwapChain));
93 }
94
95 HRESULT TraceDirect3DDevice9::GetSwapChain(UINT iSwapChain, IDirect3DSwapChain9** pSwapChain) {
96     // global var
97     extern TraceDirect3DSwapChain9* gl_pmyIDirect3DSwapChain9;
98
99     // We only cover swapchain 0
100     if (iSwapChain != 0)
101         return (m_pIDirect3DDevice9->GetSwapChain(iSwapChain, pSwapChain));
102
103     if (gl_pmyIDirect3DSwapChain9) {
104         *pSwapChain = gl_pmyIDirect3DSwapChain9;
105         return (D3D_OK);
106     }
107
108     // we intercept this call and provide our own "fake" SwapChain Object
109     IDirect3DSwapChain9* pOriginal = NULL;
110     HRESULT hres = m_pIDirect3DDevice9->GetSwapChain(iSwapChain, &pOriginal);
111
112     // Create our own SwapChain object and store it in global pointer
113     // note: the object will delete itself once Ref count is zero (similar to COM objects)
114     gl_pmyIDirect3DSwapChain9
115             = new TraceDirect3DSwapChain9(pOriginal, m_pIDirect3DDevice9);
116
117     // store our pointer (the fake one) for returning it to the calling progam
118     *pSwapChain = gl_pmyIDirect3DSwapChain9;
119
120     return (hres);
121 }
122
123 UINT TraceDirect3DDevice9::GetNumberOfSwapChains(void) {
124     return (m_pIDirect3DDevice9->GetNumberOfSwapChains());
125 }
126
127 HRESULT TraceDirect3DDevice9::Reset(D3DPRESENT_PARAMETERS* pPresentationParameters) {
128     return (m_pIDirect3DDevice9->Reset(pPresentationParameters));
129 }
130
131 HRESULT TraceDirect3DDevice9::Present(CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion)
132 {
133     // we may want to draw own things here before flipping surfaces
134     // ... draw own stuff ...
135     this->ShowWeAreHere();
136
137     // call original routine
138     HRESULT hres = m_pIDirect3DDevice9->Present( pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
139
140     return (hres);
141 }
142
143 HRESULT TraceDirect3DDevice9::GetBackBuffer(UINT iSwapChain, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9** ppBackBuffer) {
144     return (m_pIDirect3DDevice9->GetBackBuffer(iSwapChain, iBackBuffer, Type, ppBackBuffer));
145 }
146
147 HRESULT TraceDirect3DDevice9::GetRasterStatus(UINT iSwapChain, D3DRASTER_STATUS* pRasterStatus) {
148     return (m_pIDirect3DDevice9->GetRasterStatus(iSwapChain, pRasterStatus));
149 }
150
151 HRESULT TraceDirect3DDevice9::SetDialogBoxMode(BOOL bEnableDialogs) {
152     return (m_pIDirect3DDevice9->SetDialogBoxMode(bEnableDialogs));
153 }
154
155 void TraceDirect3DDevice9::SetGammaRamp(UINT iSwapChain,DWORD Flags,CONST D3DGAMMARAMP* pRamp)
156 {
157     return(m_pIDirect3DDevice9->SetGammaRamp(iSwapChain,Flags,pRamp));
158 }
159
160 void TraceDirect3DDevice9::GetGammaRamp(UINT iSwapChain, D3DGAMMARAMP* pRamp) {
161     return (m_pIDirect3DDevice9->GetGammaRamp(iSwapChain, pRamp));
162 }
163
164 HRESULT TraceDirect3DDevice9::CreateTexture(UINT Width, UINT Height, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DTexture9** ppTexture, HANDLE* pSharedHandle) {
165     return (m_pIDirect3DDevice9->CreateTexture(Width, Height, Levels, Usage, Format, Pool, ppTexture, pSharedHandle));
166 }
167
168 HRESULT TraceDirect3DDevice9::CreateVolumeTexture(UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DVolumeTexture9** ppVolumeTexture, HANDLE* pSharedHandle) {
169     return (m_pIDirect3DDevice9->CreateVolumeTexture(Width, Height, Depth, Levels, Usage, Format, Pool, ppVolumeTexture, pSharedHandle));
170 }
171
172 HRESULT TraceDirect3DDevice9::CreateCubeTexture(UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DCubeTexture9** ppCubeTexture, HANDLE* pSharedHandle) {
173     return (m_pIDirect3DDevice9->CreateCubeTexture(EdgeLength, Levels, Usage, Format, Pool, ppCubeTexture, pSharedHandle));
174 }
175
176 HRESULT TraceDirect3DDevice9::CreateVertexBuffer(UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle) {
177     return (m_pIDirect3DDevice9->CreateVertexBuffer(Length, Usage, FVF, Pool, ppVertexBuffer, pSharedHandle));
178 }
179
180 HRESULT TraceDirect3DDevice9::CreateIndexBuffer(UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle) {
181     return (m_pIDirect3DDevice9->CreateIndexBuffer(Length, Usage, Format, Pool, ppIndexBuffer, pSharedHandle));
182 }
183
184 HRESULT TraceDirect3DDevice9::CreateRenderTarget(UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Lockable, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) {
185     return (m_pIDirect3DDevice9->CreateRenderTarget(Width, Height, Format, MultiSample, MultisampleQuality, Lockable, ppSurface, pSharedHandle));
186 }
187
188 HRESULT TraceDirect3DDevice9::CreateDepthStencilSurface(UINT Width, UINT Height, D3DFORMAT Format, D3DMULTISAMPLE_TYPE MultiSample, DWORD MultisampleQuality, BOOL Discard, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) {
189     return (m_pIDirect3DDevice9->CreateDepthStencilSurface(Width, Height, Format, MultiSample, MultisampleQuality, Discard, ppSurface, pSharedHandle));
190 }
191
192 HRESULT TraceDirect3DDevice9::UpdateSurface(IDirect3DSurface9* pSourceSurface,CONST RECT* pSourceRect,IDirect3DSurface9* pDestinationSurface,CONST POINT* pDestPoint)
193 {
194     return(m_pIDirect3DDevice9->UpdateSurface(pSourceSurface,pSourceRect,pDestinationSurface,pDestPoint));
195 }
196
197 HRESULT TraceDirect3DDevice9::UpdateTexture(IDirect3DBaseTexture9* pSourceTexture, IDirect3DBaseTexture9* pDestinationTexture) {
198     return (m_pIDirect3DDevice9->UpdateTexture(pSourceTexture, pDestinationTexture));
199 }
200
201 HRESULT TraceDirect3DDevice9::GetRenderTargetData(IDirect3DSurface9* pRenderTarget, IDirect3DSurface9* pDestSurface) {
202     return (m_pIDirect3DDevice9->GetRenderTargetData(pRenderTarget, pDestSurface));
203 }
204
205 HRESULT TraceDirect3DDevice9::GetFrontBufferData(UINT iSwapChain, IDirect3DSurface9* pDestSurface) {
206     return (m_pIDirect3DDevice9->GetFrontBufferData(iSwapChain, pDestSurface));
207 }
208
209 HRESULT TraceDirect3DDevice9::StretchRect(IDirect3DSurface9* pSourceSurface,CONST RECT* pSourceRect,IDirect3DSurface9* pDestSurface,CONST RECT* pDestRect,D3DTEXTUREFILTERTYPE Filter)
210 {
211     return(m_pIDirect3DDevice9->StretchRect(pSourceSurface,pSourceRect,pDestSurface,pDestRect,Filter));
212 }
213
214 HRESULT TraceDirect3DDevice9::ColorFill(IDirect3DSurface9* pSurface,CONST RECT* pRect,D3DCOLOR color)
215 {
216     return(m_pIDirect3DDevice9->ColorFill(pSurface,pRect,color));
217 }
218
219 HRESULT TraceDirect3DDevice9::CreateOffscreenPlainSurface(UINT Width, UINT Height, D3DFORMAT Format, D3DPOOL Pool, IDirect3DSurface9** ppSurface, HANDLE* pSharedHandle) {
220     return (m_pIDirect3DDevice9->CreateOffscreenPlainSurface(Width, Height, Format, Pool, ppSurface, pSharedHandle));
221 }
222
223 HRESULT TraceDirect3DDevice9::SetRenderTarget(DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget) {
224     return (m_pIDirect3DDevice9->SetRenderTarget(RenderTargetIndex, pRenderTarget));
225 }
226
227 HRESULT TraceDirect3DDevice9::GetRenderTarget(DWORD RenderTargetIndex, IDirect3DSurface9** ppRenderTarget) {
228     return (m_pIDirect3DDevice9->GetRenderTarget(RenderTargetIndex, ppRenderTarget));
229 }
230
231 HRESULT TraceDirect3DDevice9::SetDepthStencilSurface(IDirect3DSurface9* pNewZStencil) {
232     return (m_pIDirect3DDevice9->SetDepthStencilSurface(pNewZStencil));
233 }
234
235 HRESULT TraceDirect3DDevice9::GetDepthStencilSurface(IDirect3DSurface9** ppZStencilSurface) {
236     return (m_pIDirect3DDevice9->GetDepthStencilSurface(ppZStencilSurface));
237 }
238
239 HRESULT TraceDirect3DDevice9::BeginScene(void) {
240     return (m_pIDirect3DDevice9->BeginScene());
241 }
242
243 HRESULT TraceDirect3DDevice9::EndScene(void) {
244     return (m_pIDirect3DDevice9->EndScene());
245 }
246
247 HRESULT TraceDirect3DDevice9::Clear(DWORD Count,CONST D3DRECT* pRects,DWORD Flags,D3DCOLOR Color,float Z,DWORD Stencil)
248 {
249     return(m_pIDirect3DDevice9->Clear(Count,pRects,Flags,Color,Z,Stencil));
250 }
251
252 HRESULT TraceDirect3DDevice9::SetTransform(D3DTRANSFORMSTATETYPE State,CONST D3DMATRIX* pMatrix)
253 {
254     return(m_pIDirect3DDevice9->SetTransform(State,pMatrix));
255 }
256
257 HRESULT TraceDirect3DDevice9::GetTransform(D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) {
258     return (m_pIDirect3DDevice9->GetTransform(State, pMatrix));
259 }
260
261 HRESULT TraceDirect3DDevice9::MultiplyTransform(D3DTRANSFORMSTATETYPE State,CONST D3DMATRIX* pMatrix)
262 {
263     return(m_pIDirect3DDevice9->MultiplyTransform(State,pMatrix));
264 }
265
266 HRESULT TraceDirect3DDevice9::SetViewport(CONST D3DVIEWPORT9* pViewport)
267 {
268     return(m_pIDirect3DDevice9->SetViewport(pViewport));
269 }
270
271 HRESULT TraceDirect3DDevice9::GetViewport(D3DVIEWPORT9* pViewport) {
272     return (m_pIDirect3DDevice9->GetViewport(pViewport));
273 }
274
275 HRESULT TraceDirect3DDevice9::SetMaterial(CONST D3DMATERIAL9* pMaterial)
276 {
277     return(m_pIDirect3DDevice9->SetMaterial(pMaterial));
278 }
279
280 HRESULT TraceDirect3DDevice9::GetMaterial(D3DMATERIAL9* pMaterial) {
281     return (m_pIDirect3DDevice9->GetMaterial(pMaterial));
282 }
283
284 HRESULT TraceDirect3DDevice9::SetLight(DWORD Index,CONST D3DLIGHT9* pLight)
285 {
286     return(m_pIDirect3DDevice9->SetLight(Index,pLight));
287 }
288
289 HRESULT TraceDirect3DDevice9::GetLight(DWORD Index, D3DLIGHT9* pLight) {
290     return (m_pIDirect3DDevice9->GetLight(Index, pLight));
291 }
292
293 HRESULT TraceDirect3DDevice9::LightEnable(DWORD Index, BOOL Enable) {
294     return (m_pIDirect3DDevice9->LightEnable(Index, Enable));
295 }
296
297 HRESULT TraceDirect3DDevice9::GetLightEnable(DWORD Index, BOOL* pEnable) {
298     return (m_pIDirect3DDevice9->GetLightEnable(Index, pEnable));
299 }
300
301 HRESULT TraceDirect3DDevice9::SetClipPlane(DWORD Index, CONST float* pPlane) {
302     return (m_pIDirect3DDevice9->SetClipPlane(Index, pPlane));
303 }
304
305 HRESULT TraceDirect3DDevice9::GetClipPlane(DWORD Index, float* pPlane) {
306     return (m_pIDirect3DDevice9->GetClipPlane(Index, pPlane));
307 }
308
309 HRESULT TraceDirect3DDevice9::SetRenderState(D3DRENDERSTATETYPE State, DWORD Value) {
310     return (m_pIDirect3DDevice9->SetRenderState(State, Value));
311 }
312
313 HRESULT TraceDirect3DDevice9::GetRenderState(D3DRENDERSTATETYPE State, DWORD* pValue) {
314     return (m_pIDirect3DDevice9->GetRenderState(State, pValue));
315 }
316
317 HRESULT TraceDirect3DDevice9::CreateStateBlock(D3DSTATEBLOCKTYPE Type, IDirect3DStateBlock9** ppSB) {
318     return (m_pIDirect3DDevice9->CreateStateBlock(Type, ppSB));
319 }
320
321 HRESULT TraceDirect3DDevice9::BeginStateBlock(void) {
322     return (m_pIDirect3DDevice9->BeginStateBlock());
323 }
324
325 HRESULT TraceDirect3DDevice9::EndStateBlock(IDirect3DStateBlock9** ppSB) {
326     return (m_pIDirect3DDevice9->EndStateBlock(ppSB));
327 }
328
329 HRESULT TraceDirect3DDevice9::SetClipStatus(CONST D3DCLIPSTATUS9* pClipStatus)
330 {
331     return(m_pIDirect3DDevice9->SetClipStatus(pClipStatus));
332 }
333
334 HRESULT TraceDirect3DDevice9::GetClipStatus(D3DCLIPSTATUS9* pClipStatus) {
335     return (m_pIDirect3DDevice9->GetClipStatus(pClipStatus));
336 }
337
338 HRESULT TraceDirect3DDevice9::GetTexture(DWORD Stage, IDirect3DBaseTexture9** ppTexture) {
339     return (m_pIDirect3DDevice9->GetTexture(Stage, ppTexture));
340 }
341
342 HRESULT TraceDirect3DDevice9::SetTexture(DWORD Stage, IDirect3DBaseTexture9* pTexture) {
343     return (m_pIDirect3DDevice9->SetTexture(Stage, pTexture));
344 }
345
346 HRESULT TraceDirect3DDevice9::GetTextureStageState(DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD* pValue) {
347     return (m_pIDirect3DDevice9->GetTextureStageState(Stage, Type, pValue));
348 }
349
350 HRESULT TraceDirect3DDevice9::SetTextureStageState(DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) {
351     return (m_pIDirect3DDevice9->SetTextureStageState(Stage, Type, Value));
352 }
353
354 HRESULT TraceDirect3DDevice9::GetSamplerState(DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD* pValue) {
355     return (m_pIDirect3DDevice9->GetSamplerState(Sampler, Type, pValue));
356 }
357
358 HRESULT TraceDirect3DDevice9::SetSamplerState(DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) {
359     return (m_pIDirect3DDevice9->SetSamplerState(Sampler, Type, Value));
360 }
361
362 HRESULT TraceDirect3DDevice9::ValidateDevice(DWORD* pNumPasses) {
363     return (m_pIDirect3DDevice9->ValidateDevice(pNumPasses));
364 }
365
366 HRESULT TraceDirect3DDevice9::SetPaletteEntries(UINT PaletteNumber,CONST PALETTEENTRY* pEntries)
367 {
368     return(m_pIDirect3DDevice9->SetPaletteEntries(PaletteNumber, pEntries));
369 }
370
371 HRESULT TraceDirect3DDevice9::GetPaletteEntries(UINT PaletteNumber, PALETTEENTRY* pEntries) {
372     return (m_pIDirect3DDevice9->GetPaletteEntries(PaletteNumber, pEntries));
373 }
374
375 HRESULT TraceDirect3DDevice9::SetCurrentTexturePalette(UINT PaletteNumber) {
376     return (m_pIDirect3DDevice9->SetCurrentTexturePalette(PaletteNumber));
377 }
378
379 HRESULT TraceDirect3DDevice9::GetCurrentTexturePalette(UINT *PaletteNumber) {
380     return (m_pIDirect3DDevice9->GetCurrentTexturePalette(PaletteNumber));
381 }
382
383 HRESULT TraceDirect3DDevice9::SetScissorRect(CONST RECT* pRect)
384 {
385     return(m_pIDirect3DDevice9->SetScissorRect( pRect));
386 }
387
388 HRESULT TraceDirect3DDevice9::GetScissorRect(RECT* pRect) {
389     return (m_pIDirect3DDevice9->GetScissorRect(pRect));
390 }
391
392 HRESULT TraceDirect3DDevice9::SetSoftwareVertexProcessing(BOOL bSoftware) {
393     return (m_pIDirect3DDevice9->SetSoftwareVertexProcessing(bSoftware));
394 }
395
396 BOOL TraceDirect3DDevice9::GetSoftwareVertexProcessing(void) {
397     return (m_pIDirect3DDevice9->GetSoftwareVertexProcessing());
398 }
399
400 HRESULT TraceDirect3DDevice9::SetNPatchMode(float nSegments) {
401     return (m_pIDirect3DDevice9->SetNPatchMode(nSegments));
402 }
403
404 float TraceDirect3DDevice9::GetNPatchMode(void) {
405     return (m_pIDirect3DDevice9->GetNPatchMode());
406 }
407
408 HRESULT TraceDirect3DDevice9::DrawPrimitive(D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) {
409     return (m_pIDirect3DDevice9->DrawPrimitive(PrimitiveType, StartVertex, PrimitiveCount));
410 }
411
412 HRESULT TraceDirect3DDevice9::DrawIndexedPrimitive(D3DPRIMITIVETYPE PrimitiveType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount) {
413     return (m_pIDirect3DDevice9->DrawIndexedPrimitive(PrimitiveType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount));
414 }
415
416 HRESULT TraceDirect3DDevice9::DrawPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) {
417     return (m_pIDirect3DDevice9->DrawPrimitiveUP(PrimitiveType, PrimitiveCount, pVertexStreamZeroData, VertexStreamZeroStride));
418 }
419
420 HRESULT TraceDirect3DDevice9::DrawIndexedPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) {
421     return (m_pIDirect3DDevice9->DrawIndexedPrimitiveUP(PrimitiveType, MinVertexIndex, NumVertices, PrimitiveCount, pIndexData, IndexDataFormat, pVertexStreamZeroData, VertexStreamZeroStride));
422 }
423
424 HRESULT TraceDirect3DDevice9::ProcessVertices(UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, IDirect3DVertexBuffer9* pDestBuffer, IDirect3DVertexDeclaration9* pVertexDecl, DWORD Flags) {
425     return (m_pIDirect3DDevice9->ProcessVertices(SrcStartIndex, DestIndex, VertexCount, pDestBuffer, pVertexDecl, Flags));
426 }
427
428 HRESULT TraceDirect3DDevice9::CreateVertexDeclaration(CONST D3DVERTEXELEMENT9* pVertexElements,IDirect3DVertexDeclaration9** ppDecl)
429 {
430     return(m_pIDirect3DDevice9->CreateVertexDeclaration( pVertexElements,ppDecl));
431 }
432
433 HRESULT TraceDirect3DDevice9::SetVertexDeclaration(IDirect3DVertexDeclaration9* pDecl) {
434     return (m_pIDirect3DDevice9->SetVertexDeclaration(pDecl));
435 }
436
437 HRESULT TraceDirect3DDevice9::GetVertexDeclaration(IDirect3DVertexDeclaration9** ppDecl) {
438     return (m_pIDirect3DDevice9->GetVertexDeclaration(ppDecl));
439 }
440
441 HRESULT TraceDirect3DDevice9::SetFVF(DWORD FVF) {
442     return (m_pIDirect3DDevice9->SetFVF(FVF));
443 }
444
445 HRESULT TraceDirect3DDevice9::GetFVF(DWORD* pFVF) {
446     return (m_pIDirect3DDevice9->GetFVF(pFVF));
447 }
448
449 HRESULT TraceDirect3DDevice9::CreateVertexShader(CONST DWORD* pFunction,IDirect3DVertexShader9** ppShader)
450 {
451     return(m_pIDirect3DDevice9->CreateVertexShader(pFunction,ppShader));
452 }
453
454 HRESULT TraceDirect3DDevice9::SetVertexShader(IDirect3DVertexShader9* pShader) {
455     return (m_pIDirect3DDevice9->SetVertexShader(pShader));
456 }
457
458 HRESULT TraceDirect3DDevice9::GetVertexShader(IDirect3DVertexShader9** ppShader) {
459     return (m_pIDirect3DDevice9->GetVertexShader(ppShader));
460 }
461
462 HRESULT TraceDirect3DDevice9::SetVertexShaderConstantF(UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) {
463     return (m_pIDirect3DDevice9->SetVertexShaderConstantF(StartRegister, pConstantData, Vector4fCount));
464 }
465
466 HRESULT TraceDirect3DDevice9::GetVertexShaderConstantF(UINT StartRegister, float* pConstantData, UINT Vector4fCount) {
467     return (m_pIDirect3DDevice9->GetVertexShaderConstantF(StartRegister, pConstantData, Vector4fCount));
468 }
469
470 HRESULT TraceDirect3DDevice9::SetVertexShaderConstantI(UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) {
471     return (m_pIDirect3DDevice9->SetVertexShaderConstantI(StartRegister, pConstantData, Vector4iCount));
472 }
473
474 HRESULT TraceDirect3DDevice9::GetVertexShaderConstantI(UINT StartRegister, int* pConstantData, UINT Vector4iCount) {
475     return (m_pIDirect3DDevice9->GetVertexShaderConstantI(StartRegister, pConstantData, Vector4iCount));
476 }
477
478 HRESULT TraceDirect3DDevice9::SetVertexShaderConstantB(UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount)
479 {
480     return(m_pIDirect3DDevice9->SetVertexShaderConstantB(StartRegister,pConstantData,BoolCount));
481 }
482
483 HRESULT TraceDirect3DDevice9::GetVertexShaderConstantB(UINT StartRegister, BOOL* pConstantData, UINT BoolCount) {
484     return (m_pIDirect3DDevice9->GetVertexShaderConstantB(StartRegister, pConstantData, BoolCount));
485 }
486
487 HRESULT TraceDirect3DDevice9::SetStreamSource(UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) {
488     return (m_pIDirect3DDevice9->SetStreamSource(StreamNumber, pStreamData, OffsetInBytes, Stride));
489 }
490
491 HRESULT TraceDirect3DDevice9::GetStreamSource(UINT StreamNumber, IDirect3DVertexBuffer9** ppStreamData, UINT* OffsetInBytes, UINT* pStride) {
492     return (m_pIDirect3DDevice9->GetStreamSource(StreamNumber, ppStreamData, OffsetInBytes, pStride));
493 }
494
495 HRESULT TraceDirect3DDevice9::SetStreamSourceFreq(UINT StreamNumber, UINT Divider) {
496     return (m_pIDirect3DDevice9->SetStreamSourceFreq(StreamNumber, Divider));
497 }
498
499 HRESULT TraceDirect3DDevice9::GetStreamSourceFreq(UINT StreamNumber, UINT* Divider) {
500     return (m_pIDirect3DDevice9->GetStreamSourceFreq(StreamNumber, Divider));
501 }
502
503 HRESULT TraceDirect3DDevice9::SetIndices(IDirect3DIndexBuffer9* pIndexData) {
504     return (m_pIDirect3DDevice9->SetIndices(pIndexData));
505 }
506
507 HRESULT TraceDirect3DDevice9::GetIndices(IDirect3DIndexBuffer9** ppIndexData) {
508     return (m_pIDirect3DDevice9->GetIndices(ppIndexData));
509 }
510
511 HRESULT TraceDirect3DDevice9::CreatePixelShader(CONST DWORD* pFunction,IDirect3DPixelShader9** ppShader)
512 {
513     return(m_pIDirect3DDevice9->CreatePixelShader(pFunction,ppShader));
514 }
515
516 HRESULT TraceDirect3DDevice9::SetPixelShader(IDirect3DPixelShader9* pShader) {
517     return (m_pIDirect3DDevice9->SetPixelShader(pShader));
518 }
519
520 HRESULT TraceDirect3DDevice9::GetPixelShader(IDirect3DPixelShader9** ppShader) {
521     return (m_pIDirect3DDevice9->GetPixelShader(ppShader));
522 }
523
524 HRESULT TraceDirect3DDevice9::SetPixelShaderConstantF(UINT StartRegister, CONST float* pConstantData, UINT Vector4fCount) {
525     return (m_pIDirect3DDevice9->SetPixelShaderConstantF(StartRegister, pConstantData, Vector4fCount));
526 }
527
528 HRESULT TraceDirect3DDevice9::GetPixelShaderConstantF(UINT StartRegister, float* pConstantData, UINT Vector4fCount) {
529     return (m_pIDirect3DDevice9->GetPixelShaderConstantF(StartRegister, pConstantData, Vector4fCount));
530 }
531
532 HRESULT TraceDirect3DDevice9::SetPixelShaderConstantI(UINT StartRegister, CONST int* pConstantData, UINT Vector4iCount) {
533     return (m_pIDirect3DDevice9->SetPixelShaderConstantI(StartRegister, pConstantData, Vector4iCount));
534 }
535
536 HRESULT TraceDirect3DDevice9::GetPixelShaderConstantI(UINT StartRegister, int* pConstantData, UINT Vector4iCount) {
537     return (m_pIDirect3DDevice9->GetPixelShaderConstantI(StartRegister, pConstantData, Vector4iCount));
538 }
539
540 HRESULT TraceDirect3DDevice9::SetPixelShaderConstantB(UINT StartRegister,CONST BOOL* pConstantData,UINT BoolCount)
541 {
542     return(m_pIDirect3DDevice9->SetPixelShaderConstantB(StartRegister,pConstantData,BoolCount));
543 }
544
545 HRESULT TraceDirect3DDevice9::GetPixelShaderConstantB(UINT StartRegister, BOOL* pConstantData, UINT BoolCount) {
546     return (m_pIDirect3DDevice9->GetPixelShaderConstantB(StartRegister, pConstantData, BoolCount));
547 }
548
549 HRESULT TraceDirect3DDevice9::DrawRectPatch(UINT Handle,CONST float* pNumSegs,CONST D3DRECTPATCH_INFO* pRectPatchInfo)
550 {
551     return(m_pIDirect3DDevice9->DrawRectPatch(Handle,pNumSegs, pRectPatchInfo));
552 }
553
554 HRESULT TraceDirect3DDevice9::DrawTriPatch(UINT Handle,CONST float* pNumSegs,CONST D3DTRIPATCH_INFO* pTriPatchInfo)
555 {
556     return(m_pIDirect3DDevice9->DrawTriPatch(Handle, pNumSegs, pTriPatchInfo));
557 }
558
559 HRESULT TraceDirect3DDevice9::DeletePatch(UINT Handle) {
560     return (m_pIDirect3DDevice9->DeletePatch(Handle));
561 }
562
563 HRESULT TraceDirect3DDevice9::CreateQuery(D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) {
564     return (m_pIDirect3DDevice9->CreateQuery(Type, ppQuery));
565 }
566
567 // This is our test function
568 void TraceDirect3DDevice9::ShowWeAreHere(void) {
569     D3DRECT rec = { 1, 1, 50, 50 };
570     m_pIDirect3DDevice9->Clear(1, &rec, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255, 255, 255, 0), 0, 0);
571 }
572