Status – Week 259 Victor Moya. Summary OpenGL Traces. OpenGL Traces. DirectX Traces. DirectX Traces. Proxy CPU. Proxy CPU. Command Processor. Command.

Slides:



Advertisements
Similar presentations
Programming with OpenGL - Getting started - Hanyang University Han Jae-Hyek.
Advertisements

COMPUTER GRAPHICS SOFTWARE.
COMPUTER GRAPHICS CS 482 – FALL 2014 NOVEMBER 10, 2014 GRAPHICS HARDWARE GRAPHICS PROCESSING UNITS PARALLELISM.
Understanding the graphics pipeline Lecture 2 Original Slides by: Suresh Venkatasubramanian Updates by Joseph Kider.
Status – Week 257 Victor Moya. Summary GPU interface. GPU interface. GPU state. GPU state. API/Driver State. API/Driver State. Driver/CPU Proxy. Driver/CPU.
RealityEngine Graphics Kurt Akeley Silicon Graphics Computer Systems.
CS5500 Computer Graphics © Chun-Fa Chang, Spring 2007 CS5500 Computer Graphics April 19, 2007.
1 Shader Performance Analysis on a Modern GPU Architecture Victor Moya, Carlos González, Jordi Roca, Agustín Fernández Jordi Roca, Agustín Fernández Department.
Status – Week 250 Victor Moya. Summary Current State. Current State. Next Tasks. Next Tasks. Future Work. Future Work. Creditos investigación. Creditos.
Status – Week 274 Victor Moya. Simulator model Boxes. Boxes. Perform the actual work. Perform the actual work. A box can only access its own data, external.
Status – Week 247 Victor Moya. Summary Streamer. Streamer. TraceDriver. TraceDriver. bGPU bGPU Signal Traffic Analyzer. Signal Traffic Analyzer.
Status – Week 243 Victor Moya. Summary Current status. Current status. Tests. Tests. XBox documentation. XBox documentation. Post Vertex Shader geometry.
3D Graphics Processor Architecture Victor Moya. PhD Project Research on architecture improvements for future Graphic Processor Units (GPUs). Research.
Status – Week 291 Victor Moya. Tracing 3D applications Three layers or levels for tracing: Three layers or levels for tracing: 3D Appl API Driver GPU.
Status – Week 277 Victor Moya.
GPU Simulator Victor Moya. Summary Rendering pipeline for 3D graphics. Rendering pipeline for 3D graphics. Graphic Processors. Graphic Processors. GPU.
Status – Week 248 Victor Moya. Summary Streamer. Streamer. TraceDriver. TraceDriver. bGPU bGPU Signal Traffic Analyzer. Signal Traffic Analyzer. How to.
Status – Week 265 Victor Moya. Summary ShaderEmulator ShaderEmulator ShaderFetch ShaderFetch ShaderDecodeExecute ShaderDecodeExecute Communication storage.
Status – Week 264 Victor Moya. Summary Doctorado. Doctorado. Credits Recerca. Credits Recerca. GPU design GPU design PS2 PS2 PS3 PS3 Imagine Imagine NV30.
Status – Week 208 Victor Moya. Summary Traces. Traces. Planification. Planification.
Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS Spring 2011.
Status – Week 283 Victor Moya. 3D Graphics Pipeline Akeley & Hanrahan course. Akeley & Hanrahan course. Fixed vs Programmable. Fixed vs Programmable.
The programmable pipeline Lecture 10 Slide Courtesy to Dr. Suresh Venkatasubramanian.
Some Things Jeremy Sugerman 22 February Jeremy Sugerman, FLASHG 22 February 2005 Topics Quick GPU Topics Conditional Execution GPU Ray Tracing.
Status – Week 260 Victor Moya. Summary shSim. shSim. GPU design. GPU design. Future Work. Future Work. Rumors and News. Rumors and News. Imagine. Imagine.
Status – Week 266 Victor Moya. Summary ShaderEmulator ShaderEmulator ShaderFetch ShaderFetch ShaderDecodeExecute ShaderDecodeExecute Communication storage.
GPU Graphics Processing Unit. Graphics Pipeline Scene Transformations Lighting & Shading ViewingTransformations Rasterization GPUs evolved as hardware.
Under the Hood: 3D Pipeline. Motherboard & Chipset PCI Express x16.
Ray Tracing and Photon Mapping on GPUs Tim PurcellStanford / NVIDIA.
REAL-TIME VOLUME GRAPHICS Christof Rezk Salama Computer Graphics and Multimedia Group, University of Siegen, Germany Eurographics 2006 Real-Time Volume.
CHAPTER 4 Window Creation and Control © 2008 Cengage Learning EMEA.
Enhancing GPU for Scientific Computing Some thoughts.
Programmable Pipelines. Objectives Introduce programmable pipelines ­Vertex shaders ­Fragment shaders Introduce shading languages ­Needed to describe.
Geometric Objects and Transformations. Coordinate systems rial.html.
Programmable Pipelines. 2 Objectives Introduce programmable pipelines ­Vertex shaders ­Fragment shaders Introduce shading languages ­Needed to describe.
Interactive Time-Dependent Tone Mapping Using Programmable Graphics Hardware Nolan GoodnightGreg HumphreysCliff WoolleyRui Wang University of Virginia.
1 ATTILA: A Cycle-Level Execution-Driven Simulator for Modern GPU Architectures Victor Moya, Carlos González, Jordi Roca, Agustín Fernández Jordi Roca,
Computer Graphics Tz-Huan Huang National Taiwan University.
The Graphics Rendering Pipeline 3D SCENE Collection of 3D primitives IMAGE Array of pixels Primitives: Basic geometric structures (points, lines, triangles,
1 Introduction to Computer Graphics SEN Introduction to OpenGL Graphics Applications.
Shadow Mapping Chun-Fa Chang National Taiwan Normal University.
Tone Mapping on GPUs Cliff Woolley University of Virginia Slides courtesy Nolan Goodnight.
GPGPU Tools and Source Code Mark HarrisNVIDIA Developer Technology.
CS662 Computer Graphics Game Technologies Jim X. Chen, Ph.D. Computer Science Department George Mason University.
Programmable Pipelines Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts Director, Arts Technology Center University.
Accelerated Stereoscopic Rendering using GPU François de Sorbier - Université Paris-Est France February 2008 WSCG'2008.
Introduction to OpenGL  OpenGL is a graphics API  Software library  Layer between programmer and graphics hardware (and software)  OpenGL can fit in.
A SEMINAR ON 1 CONTENT 2  The Stream Programming Model  The Stream Programming Model-II  Advantage of Stream Processor  Imagine’s.
Computer Graphics 3 Lecture 6: Other Hardware-Based Extensions Benjamin Mora 1 University of Wales Swansea Dr. Benjamin Mora.
Fateme Hajikarami Spring  What is GPGPU ? ◦ General-Purpose computing on a Graphics Processing Unit ◦ Using graphic hardware for non-graphic computations.
© David Kirk/NVIDIA and Wen-mei W. Hwu, ECE408, University of Illinois, Urbana-Champaign 1 Programming Massively Parallel Processors Lecture.
From Turing Machine to Global Illumination Chun-Fa Chang National Taiwan Normal University.
Ray Tracing using Programmable Graphics Hardware
UW EXTENSION CERTIFICATE PROGRAM IN GAME DEVELOPMENT 2 ND QUARTER: ADVANCED GRAPHICS The GPU.
Ray Tracing by GPU Ming Ouhyoung. Outline Introduction Graphics Hardware Streaming Ray Tracing Discussion.
© David Kirk/NVIDIA and Wen-mei W. Hwu, ECE408, University of Illinois, Urbana-Champaign 1 GPU.
GLSL Review Monday, Nov OpenGL pipeline Command Stream Vertex Processing Geometry processing Rasterization Fragment processing Fragment Ops/Blending.
How to use a Pixel Shader CMT3317. Pixel shaders There is NO requirement to use a pixel shader for the coursework though you can if you want to You should.
A Crash Course on Programmable Graphics Hardware
Graphics on GPU © David Kirk/NVIDIA and Wen-mei W. Hwu,
Graphics Processing Unit
Chapter 6 GPU, Shaders, and Shading Languages
From Turing Machine to Global Illumination
Graphics Processing Unit
CS5500 Computer Graphics April 17, 2006 CS5500 Computer Graphics
Debugging Tools Tim Purcell NVIDIA.
RADEON™ 9700 Architecture and 3D Performance
CIS 441/541: Introduction to Computer Graphics Lecture 15: shaders
OpenGL-Rendering Pipeline
CIS 6930: Chip Multiprocessor: GPU Architecture and Programming
Presentation transcript:

Status – Week 259 Victor Moya

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.

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?

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).

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.

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.

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.

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

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

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.

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.

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.

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.

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.

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. R /200, R9600 PRO 400/600. RV350: 2 vertex shader, 4 pixel shaders, 1 TMU per pipe, 0.13 process. R /200, R9600 PRO 400/600. GDC’03 from March 5th. GDC’03 from March 5th.

F-Buffer SIGGRAPH/EuroGraphics Graphics Hardware Workshop SIGGRAPH/EuroGraphics Graphics Hardware Workshop 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.

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.

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).

F-Buffer

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.