Gallium3D Graphics Done Right

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

Using MapuSoft Instead of OS Vendor’s Simulators.
Embedded Streaming Media with GStreamer and BeagleBoard ESC-228 Presented by Santiago Nunez santiago.nunez (at) ridgerun.com.
Chapter 13 Embedded Systems
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
.NET Mobile Application Development Remote Procedure Call.
An Overview of Qt - asankar1. Agenda About Qt –A brief intro of Qt Qt development tools –Tools used for building Qt application Qt Architecture –The underlying.
Kenneth Hurley Sr. Software Engineer
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
Gary MarsdenSlide 1University of Cape Town Human-Computer Interaction - 3 Programmer Support Gary Marsden ( ) July 2002.
Silberschatz, Galvin and Gagne  2002 Modified for CSCI 399, Royden, Operating System Concepts Operating Systems Lecture 7 OS System Structure.
Porting Unity to new APIs Aras Pranckevičius Unity Technologies.
Distributed Information Systems. Motivation ● To understand the problems that Web services try to solve it is helpful to understand how distributed information.
CS 346 – Chapter 2 OS services –OS user interface –System calls –System programs How to make an OS –Implementation –Structure –Virtual machines Commitment.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
GPU Computing for GIS James Mower Department of Geography and Planning University at Albany.
Overview of today’s lecture Major components of an operating system Structure and internal architecture of an operating system Monolithic Vs Micro-kernels.
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.
Cairo-gl Eric Anholt.
Linux Graphics Driver Development Eric Anholt Open Source Technology Center Intel Corporation.
Directions in Linux OpenGL
Advanced Higher Computing Science
Chapter 4: Threads Modified by Dr. Neerja Mhaskar for CS 3SH3.
Introduction to threads
Databases (CS507) CHAPTER 2.
Android Mobile Application Development
Modularity Most useful abstractions an OS wants to offer can’t be directly realized by hardware Modularity is one technique the OS uses to provide better.
Abstract Factory Pattern
Current Generation Hypervisor Type 1 Type 2.
Photorealistic Rendering vs. Interactive 3D Graphics
Chapter 18 Maintaining Information Systems
Operating Systems Design (CS 423)
CSE451 I/O Systems and the Full I/O Path Autumn 2002
Chapter 18 MobileApp Design
Introduction to OpenGL
Cache Memory Presentation I
Abstract Factory Pattern
Protocols and Layering
Intent (Thanks to Jim Fawcett for the slides)
CSCI/CMPE 3334 Systems Programming
Software Engineering Architectural Design Chapter 6 Dr.Doaa Samy
Software Engineering Architectural Design Chapter 6 Dr.Doaa Samy
OOP vs Structured Programming
The Object-Oriented Thought Process Chapter 05
CS240: Advanced Programming Concepts
Lecture Topics: 11/1 General Operating System Concepts Processes
Software Design Lecture : 9.
An Introduction to Software Architecture
Top Half / Bottom Half Processing
Windows Virtual PC / Hyper-V
A GUI Based Aid for Generation of Code-Frameworks of TMOs
Operating Systems : Overview
Chapter 4: Threads & Concurrency
Chapter 4: Threads.
Hardware-less Testing for RAS Software
Operating Systems : Overview
OS Components and Structure
Operating Systems: A Modern Perspective, Chapter 6
Debugging Tools Tim Purcell NVIDIA.
Introduction to Virtual Machines
Software Architecture
Database System Concepts and Architecture
Introduction to Virtual Machines
Introduction to OpenGL
NIEM Tool Strategy Next Steps for Movement
Session Abstract This session will provide an overview of the latest improvements and enhancements made to the Ed-Fi ODS/API in 2016, as well as a preview.
Games Development 2 Entity / Architecture Review
From Use Cases to Implementation
Presentation transcript:

Gallium3D Graphics Done Right Zack Rusin zack@tungstengraphics.com

Contents Recap Gallium3D General summary Why would you want to use it. Gallium3D latest changes Taking request (no singing) Zack Rusin zack@tungstengraphics.com

DRI Driver Model Drivers were tied to OS, API, window system. App Mesa drm DRI Driver DRI Drivers were tied to OS, API, window system. EG, dealing with DRI cliprects in DrawArrays. Driver interface becoming unmanageable. Zack Rusin zack@tungstengraphics.com

DRI Driver Model Zack Rusin zack@tungstengraphics.com

Graphics Pipeline Essentially the same for all modern API's Zack Rusin zack@tungstengraphics.com

Impose new interfaces Isolate interactions with API, OS, HW. App Mesa drm DRI Driver DRI Isolate interactions with API, OS, HW. Identify new interfaces. Split the driver. Zack Rusin zack@tungstengraphics.com

Gallium in 2007 The original plan for Gallium3D. App Mesa State tracker drm Gallium HW Driver OS, Winsys DRI The original plan for Gallium3D. Still more or less correct. Zack Rusin zack@tungstengraphics.com

Since then... Rapid interface evolution Hopefully starting to stabilize, but there are still some minor issues outstanding. On the horizon: simplify TGSI shader representation Changes in the draw module New insights into fallbacks, driver structure. New utility code Zack Rusin zack@tungstengraphics.com

Since then... Got some hardware drivers working I915 (updated to head) softpipe Cell driver i965 External driver projects: Nouveau R300 work Zack Rusin zack@tungstengraphics.com

Building blocks Gallium3D at its core is just an interface The actual functionality is split across different modules Those modules can be mix-and- matched to produce a complete solution Zack Rusin zack@tungstengraphics.com

Building blocks Important modules within the framework include: State trackers Implement API on top of Gallium3D Winsys Integration with a windowing system, low level management (surfaces, buffers and fencing) Gallium3D driver Implements the Gallium3D interface Zack Rusin zack@tungstengraphics.com

Building blocks Important modules within the framework include: Draw Software vertex paths CSO constant state objects management Buffers management code TGSI code LLVM integration A few others (sct, util) Zack Rusin zack@tungstengraphics.com

Software Rasterizer Codegen through LLVM and simple rtasm. App Mesa State tracker softpipe any winsys X Codegen through LLVM and simple rtasm. A fairly clear path to performance. A good project for someone? Zack Rusin zack@tungstengraphics.com

Hardware: i915 Updated to the latest DRM changes. App Mesa State tracker i915 drm i915 intel winsys DRI Updated to the latest DRM changes. Near term goal: Rebase to X, DRM head. Later: DRI2, Polish, Performance... Zack Rusin zack@tungstengraphics.com

It works on Windows This is actually working. App XP/DX9 Runtime DX9 State tracker DD i915 XP winsys HW This is actually working. Validates the portability claims for Gallium. Zack Rusin zack@tungstengraphics.com

...It'll work anywhere App Your Graphics API HERE Your OS i915 Your Winsys HERE Your WM DirectFB, VxWorks, Kdrive, GLES, Cellphones, Robots, FreeBSD, MiniGLX, EGL, Clusters, etc. Wider audience --> better drivers. Zack Rusin zack@tungstengraphics.com

You don't even need hardware... App Mesa State tracker i965simple Simulator Winsys a file A nice way to work on hardware you don't actually have available. Easy to capture, analyze dumps offline. TODO: Replay Zack Rusin zack@tungstengraphics.com

Shaders At the very core of Gallium3D TGSI used throughout Drivers can either: Use TGSI directly Employ LLVM code-generation facilities Zack Rusin zack@tungstengraphics.com

LLVM TGSI compiled into LLVM IR LLVM optimization passes used Drivers implement LLVM code-generator Zack Rusin zack@tungstengraphics.com

Winsys issues GLX implemented by DRI + the Winsys layer App Mesa State tracker i915 drm i915 intel winsys DRI GLX implemented by DRI + the Winsys layer Swapbuffers, create surface, etc, seem to bypass this nice stack. Zack Rusin zack@tungstengraphics.com

Winsys issues Neat diagram above ignores non-drawing aspects of the driver. There is real complexity here: Surface allocation – happens before context creation GL extensions – need to know (approximately) before context creation. Swapbuffers Currently winsys is splitting into two entities: per-screen and per-context. May end up with a parallel stack, ie: Zack Rusin zack@tungstengraphics.com

What's in a winsys? Orange components... A lot of interfaces... App GL State tracker HW context Context i915 drm HW info GLX Screen DRI Orange components... A lot of interfaces... Small piece of code, but complex. SOON: Split it up for a clearer stack. Zack Rusin zack@tungstengraphics.com

New diagram Zack Rusin zack@tungstengraphics.com

Summary We're getting there. Interface churn should start to slow down, but some pain still to come. Focus to shift: Performance Conformance & correctness Stabilization Zack Rusin zack@tungstengraphics.com