Download presentation
Presentation is loading. Please wait.
1
Status – Week 259 Victor Moya
2
Summary OpenGL Traces. OpenGL Traces. DirectX Traces. DirectX Traces. Proxy CPU. Proxy CPU. Command Processor. Command Processor. News. News. F-Buffer. F-Buffer. Imagine. Imagine.
3
OpenGL Traces GLTrace. GLTrace. We use the code (GNU)? We use the code (GNU)? Or do we base our own tracer on it? Or do we base our own tracer on it? Works for Win32, Linux and BEOS. Works for Win32, Linux and BEOS. DLL/Shared Library wrapper DLL/Shared Library wrapper Traces OpenGL function calls up to specification v. 1.1 and a few extensions. Traces OpenGL function calls up to specification v. 1.1 and a few extensions. Traces are in text format. Implement a binary format version? Traces are in text format. Implement a binary format version?
4
OpenGL Traces Additional work needed: Additional work needed: Upgrade to OpenGL specification v. 1.4 and all the extensions we could find in benchmarks and games (NVidia, ATI, ARB, …). Upgrade to OpenGL specification v. 1.4 and all the extensions we could find in benchmarks and games (NVidia, ATI, ARB, …). Check correction of traces. Check correction of traces. Add on the fly compresion (zlib). Add on the fly compresion (zlib). A list of functions can be obtained from 3D- Analyzer dat2.001 export list. A list of functions can be obtained from 3D- Analyzer dat2.001 export list. Create a trace player: GLplay. Create a trace player: GLplay. Help to check the traces. Help to check the traces. Visualize what we are simulating using other implementations (MESA, NVidia, ATI). Visualize what we are simulating using other implementations (MESA, NVidia, ATI).
5
DirectX Traces There is a different interface/library for each DX version: There is a different interface/library for each DX version: DX7: ignore? DX7: ignore? DX8: d3d8.dll. DX8: d3d8.dll. DX9: d3d9.dll. DX9: d3d9.dll. DX is based in classes, not in functions like OpenGL: less entry point functions. DX is based in classes, not in functions like OpenGL: less entry point functions.
6
DirectX Traces d3d8.dll exports: d3d8.dll exports: DebugSetMute(); DebugSetMute(); Direct3DCreate8(); ------------- Direct3DCreate8(); ------------- ValidatePixelShader(); ValidatePixelShader(); ValidateVertexShader(); ValidateVertexShader(); Direct3DCreate8() returns a IDirect3D8 object which is used to create a IDirect3DDevice8 object which is used to draw the scene. Direct3DCreate8() returns a IDirect3D8 object which is used to create a IDirect3DDevice8 object which is used to draw the scene.
7
DirectX Traces d3d9.dll exports: d3d9.dll exports: DebugSetLevel() DebugSetLevel() DebugSetMute() DebugSetMute() Direct3DCreate9() --------- Direct3DCreate9() --------- Direct3DShaderValidatorCreate9() Direct3DShaderValidatorCreate9() PSGPError() PSGPError() PSGPSampleTexture() PSGPSampleTexture() Same as DX8. Direct3DCreate9() creates a IDirect3D8 object which can be used to create a IDirect3DDevice9 where the scene can be drawn. Same as DX8. Direct3DCreate9() creates a IDirect3D8 object which can be used to create a IDirect3DDevice9 where the scene can be drawn.
8
DirectX Traces D3D8 Interfaces (classes): D3D8 Interfaces (classes): IDirect3D8 IDirect3D8 IDirect3DBaseTexture8 IDirect3DBaseTexture8 IDirect3DCubeTexture8 IDirect3DCubeTexture8 IDirect3DDevice8 IDirect3DDevice8 IDirect3DIndexBuffer8 IDirect3DIndexBuffer8 IDirect3DResource8 IDirect3DResource8 IDirect3DSurface8 IDirect3DSurface8 IDirect3DSwapChain8 IDirect3DSwapChain8 IDirect3DTexture8 IDirect3DTexture8 IDirect3DVertexBuffer8 IDirect3DVertexBuffer8 IDirect3DVolume8 IDirect3DVolume8 IDirect3DVolumeTexture8 IDirect3DVolumeTexture8
9
DirectX Traces D3D9 Interfaces: D3D9 Interfaces: IDirect3D9 IDirect3D9 IDirect3DBaseTexture9 IDirect3DBaseTexture9 IDirect3DCubeTexture9 IDirect3DCubeTexture9 IDirect3DDevice9 IDirect3DDevice9 IDirect3DIndexBuffer9 IDirect3DIndexBuffer9 IDirect3DPixelShader9 IDirect3DPixelShader9 IDirect3DQuery9 IDirect3DQuery9 IDirect3DResource9 IDirect3DResource9 IDirect3DStateBlock9 IDirect3DStateBlock9 IDirect3DSurface9 IDirect3DSurface9 IDirect3DSwapChain9 IDirect3DSwapChain9 IDirect3DTexture9 IDirect3DTexture9 IDirect3DVertexBuffer9 IDirect3DVertexBuffer9 IDirect3DVertexDeclaration9 IDirect3DVertexDeclaration9 IDirect3DVertexShader9 IDirect3DVertexShader9 IDirect3DVolume9 IDirect3DVolume9 IDirect3DVolumeTexture9 IDirect3DVolumeTexture9
10
DirectX Traces D3D8 functions: D3D8 functions: A list can be obtained from 3D-Analyzer dat1.001 export list. A list can be obtained from 3D-Analyzer dat1.001 export list. D3D9 functions: D3D9 functions: A list can be obtained from 3D-Analyzer dat3.001 export list. A list can be obtained from 3D-Analyzer dat3.001 export list.
11
DirectX Traces Implementation: Implementation: DLL wrapper. DLL wrapper. Support for multiple DX versions: multiple DLLs and interfaces (d3d8.dll, d3d9.dll). Support for multiple DX versions: multiple DLLs and interfaces (d3d8.dll, d3d9.dll). Trace format: Trace format: Text. Text. Binary. Binary. Compressed. Compressed. D3DPlayer: D3DPlayer: Reproduce the trace: verification, visualization. Reproduce the trace: verification, visualization.
12
DirectX Traces Alternatives: Alternatives: 3D-Analyzer: theorically can generate traces from both OpenGL, DX8 and DX9, but I couldn’t make it work. 3D-Analyzer: theorically can generate traces from both OpenGL, DX8 and DX9, but I couldn’t make it work. DXSpy: tool from DX9 SDK. Uses d3d9spy.dll (must be renamed) to trace all DX9 function calls. Can be used to check on fly DX state, function calls, use the debugger, add break points, etc. It doesn’t seems to have the option to log to a file that information though. DXSpy: tool from DX9 SDK. Uses d3d9spy.dll (must be renamed) to trace all DX9 function calls. Can be used to check on fly DX state, function calls, use the debugger, add break points, etc. It doesn’t seems to have the option to log to a file that information though.
13
Proxy CPU (alternative names are accepted). (alternative names are accepted). This box would read the OpenGL or DX traces and act as the GPU driver and CPU side of the graphic pipeline. This box would read the OpenGL or DX traces and act as the GPU driver and CPU side of the graphic pipeline. Would control the AGP port input/output. Would control the AGP port input/output. Would control external (system) memory. Would control external (system) memory. Would translate from DX/OpenGL to the commands used by our GPU. Would translate from DX/OpenGL to the commands used by our GPU. Would control the timing of the commands issued to the GPU. Would control the timing of the commands issued to the GPU.
14
Command Processor Receives commands and data through the AGP port (?). Receives commands and data through the AGP port (?). Signals: AGPRead, AGPWrite? Signals: AGPRead, AGPWrite? Receives commands (the same for DX or OpenGL traces) from the Proxy CPU box. Receives commands (the same for DX or OpenGL traces) from the Proxy CPU box. Controls the GPU. Controls the GPU. Sends data and commands to the different GPU units: Vertex, Primitive, Rasterization, Fragment, etc. Sends data and commands to the different GPU units: Vertex, Primitive, Rasterization, Fragment, etc.
15
News and Rumors Nvidia (rumors): Nvidia (rumors): NV31: 4x1, 325/275 NV31: 4x1, 325/275 NV34: 4x1 (?), no VS (?), 250/200 and 250/166. NV34: 4x1 (?), no VS (?), 250/200 and 250/166. ATI: ATI: R350: 380 MHz 340 MHz DDR, 115 MTransistors, 0.15 process, 8x1, 4 vs, F-Buffer. R350: 380 MHz 340 MHz DDR, 115 MTransistors, 0.15 process, 8x1, 4 vs, F-Buffer. RV350: 2 vertex shader, 4 pixel shaders, 1 TMU per pipe, 0.13 process. R9600 325/200, R9600 PRO 400/600. RV350: 2 vertex shader, 4 pixel shaders, 1 TMU per pipe, 0.13 process. R9600 325/200, R9600 PRO 400/600. GDC’03 from March 5th. GDC’03 from March 5th.
16
F-Buffer SIGGRAPH/EuroGraphics Graphics Hardware Workshop 2001. SIGGRAPH/EuroGraphics Graphics Hardware Workshop 2001. The F-Buffer: A Rasterization-Order FIFO Buffer for Multi-Pass Rendering. The F-Buffer: A Rasterization-Order FIFO Buffer for Multi-Pass Rendering. William R. Mark and Kekoa ProudFoot. William R. Mark and Kekoa ProudFoot. Stanford University. Stanford University.
17
F-Buffer Hardware alternative to multipass. Hardware alternative to multipass. Fragment stream buffer. Fragment stream buffer. The F-Buffer is a memory pool the size of the framebuffer (pixels). The F-Buffer is a memory pool the size of the framebuffer (pixels). A fragment can write to the F-Buffer its output rather than to the framebuffer. A fragment can write to the F-Buffer its output rather than to the framebuffer. Fragments are stored and retrieved in FIFO order. Fragments are stored and retrieved in FIFO order. Fragments in the F-Buffer are feed to the fragment pipeline. Fragments in the F-Buffer are feed to the fragment pipeline.
18
F-Buffer Replaces software multipass rendering for hardware virtualization (geometry must be transformed with each pass). Replaces software multipass rendering for hardware virtualization (geometry must be transformed with each pass). Enables unlimited length pixel shaders. Enables unlimited length pixel shaders. Multiple intermediate values supported. Multiple intermediate values supported. Helps with semitransparent pixels (alpha textures). Helps with semitransparent pixels (alpha textures).
19
F-Buffer
20
Imagine ‘Computer Graphics on a Stream Architecture’, John Douglas Owens, PhD dissertation. ‘Computer Graphics on a Stream Architecture’, John Douglas Owens, PhD dissertation. Not read yet either. Not read yet either.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.