Gallium3D Graphics Done Right Zack Rusin zack@tungstengraphics.com - - PowerPoint PPT Presentation

gallium3d
SMART_READER_LITE
LIVE PREVIEW

Gallium3D Graphics Done Right Zack Rusin zack@tungstengraphics.com - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1

Zack Rusin zack@tungstengraphics.com

Gallium3D

Graphics Done Right

slide-2
SLIDE 2

Zack Rusin zack@tungstengraphics.com

Contents

  • Recap

– Gallium3D

  • General summary
  • Why would you want to use it.
  • Gallium3D latest changes
  • T

aking request (no singing)

slide-3
SLIDE 3

Zack Rusin zack@tungstengraphics.com

DRI Driver Model

  • Drivers were tied to OS, API, window system.
  • EG, dealing with DRI cliprects in DrawArrays.
  • Driver interface becoming unmanageable.

App Mesa DRI Driver drm DRI

slide-4
SLIDE 4

Zack Rusin zack@tungstengraphics.com

DRI Driver Model

slide-5
SLIDE 5

Zack Rusin zack@tungstengraphics.com

Graphics Pipeline

  • Essentially the same for all modern API's
slide-6
SLIDE 6

Zack Rusin zack@tungstengraphics.com

Impose new interfaces

  • Isolate interactions with API, OS, HW.
  • Identify new interfaces.
  • Split the driver.

App Mesa DRI Driver drm DRI

slide-7
SLIDE 7

Zack Rusin zack@tungstengraphics.com

Gallium in 2007

  • The original plan for Gallium3D.
  • Still more or less correct.

App Mesa State tracker drm DRI Gallium HW Driver OS, Winsys

slide-8
SLIDE 8

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
slide-9
SLIDE 9

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

slide-10
SLIDE 10

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

slide-11
SLIDE 11

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
slide-12
SLIDE 12

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)

slide-13
SLIDE 13

Zack Rusin zack@tungstengraphics.com

Software Rasterizer

  • Codegen through LLVM and simple rtasm.
  • A fairly clear path to performance.
  • A good project for someone?

App Mesa State tracker X softpipe any winsys

slide-14
SLIDE 14

Zack Rusin zack@tungstengraphics.com

Hardware: i915

  • Updated to the latest DRM changes.
  • Near term goal: Rebase to X, DRM head.
  • Later: DRI2, Polish, Performance...

App Mesa State tracker i915 drm DRI i915 intel winsys

slide-15
SLIDE 15

Zack Rusin zack@tungstengraphics.com

It works on Windows

  • This is actually working.
  • Validates the portability claims for Gallium.

App XP/DX9 Runtime DX9 State tracker DD HW i915 XP winsys

slide-16
SLIDE 16

Zack Rusin zack@tungstengraphics.com

...It'll work anywhere

  • DirectFB, VxWorks, Kdrive, GLES, Cellphones,

Robots, FreeBSD, MiniGLX, EGL, Clusters, etc.

  • Wider audience --> better drivers.

App Your Graphics API HERE Your OS Your WM i915 Your Winsys HERE

slide-17
SLIDE 17

Zack Rusin zack@tungstengraphics.com

You don't even need hardware...

  • A nice way to work on hardware you don't

actually have available.

  • Easy to capture, analyze dumps offline.
  • TODO: Replay

App Mesa State tracker a file i965simple Simulator Winsys

slide-18
SLIDE 18

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
slide-19
SLIDE 19

Zack Rusin zack@tungstengraphics.com

LLVM

  • TGSI compiled into LLVM IR
  • LLVM optimization passes used
  • Drivers implement LLVM code-generator
slide-20
SLIDE 20

Zack Rusin zack@tungstengraphics.com

Winsys issues

  • GLX implemented by DRI + the Winsys layer
  • Swapbuffers, create surface, etc, seem to

bypass this nice stack.

App Mesa State tracker i915 drm DRI i915 intel winsys

slide-21
SLIDE 21

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:
slide-22
SLIDE 22

Zack Rusin zack@tungstengraphics.com

What's in a winsys?

  • Orange components... A lot of interfaces...
  • Small piece of code, but complex.
  • SOON: Split it up for a clearer stack.

App GL State tracker i915 drm DRI HW context Context HW info Screen GLX

slide-23
SLIDE 23

Zack Rusin zack@tungstengraphics.com

New diagram

slide-24
SLIDE 24

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