From: Carl Worth Date: Wed, 12 Mar 2008 15:43:54 +0000 (+0100) Subject: Add talk from LCA 2008 X-Git-Url: https://git.cworth.org/git?p=cworth.org;a=commitdiff_plain;h=4278c3f0c5293f5b07dd92da1fe0efd0f7f87331 Add talk from LCA 2008 --- diff --git a/src/talks.mdwn b/src/talks.mdwn index 10c7d28..a4779fe 100644 --- a/src/talks.mdwn +++ b/src/talks.mdwn @@ -1,5 +1,15 @@ [[meta title="Talks presented by Carl Worth"]] +# [X Acceleration that Finally Works](lca_2008) + +Meaningful hardware acceleration within the X Window System is +becoming a reality. We present the recent state of the art of 2D +accelerated rendering with the Intel 965 graphics device showing +performance gains up to 900 times faster than software rendering. + +Co-presented with Eric Anholt at [linux.conf.au +2008](http://linux.conf.au) in Melbourne, Australia on 2008-01-30. + # [Co-maintaining cairo: cool community, cool code](guadec_2007) A retrospective on the development of the cairo code and community diff --git a/src/talks/lca_2008.mdwn b/src/talks/lca_2008.mdwn new file mode 100644 index 0000000..1b56a94 --- /dev/null +++ b/src/talks/lca_2008.mdwn @@ -0,0 +1,213 @@ +[[meta title="X Acceleration that Finally Works"]] + +## Abstract + +Meaningful hardware acceleration within the X Window System is +becoming a reality. We present the recent state of the art of 2D +accelerated rendering with the Intel 965 graphics device showing +performance gains up to 900 times faster than software rendering. + +## Presentation + + * [PDF slides](lca-2008.pdf) + * [HTML slides](html) + * [SVG slides](svg) + * [Video (ogg)](http://mirror.linux.org.au/pub/linux.conf.au/2008/Wed/mel8-167.ogg) + * [Audio (spx)](http://mirror.linux.org.au/pub/linux.conf.au/2008/Wed/mel8-167.spx) + +## Summary + +## Background + +In the beginning, X provided support for graphics that by today's +standards are extremely unattractive. But the graphics capabilities +were perhaps not ill-suited for applications and graphics hardware at +the time. For example, X provided bitwise raster operations like XOR +and applications used XOR rubber-banding for window-frame resizing or +selection rectangles. X provided non-antialiased line rendering, and +hardware might have provided a Bresenham line implementation. X also +provided an acceleration architecture (XAA) that exposes these +original "core" rendering primitives to the drivers. + +Then time passed. Some things changed, (what applications wanted to +draw), while some things didn't (what X and XAA provided). So for a +time, any "modern" application resorted to manually constructing the +graphical results it wanted, (in software), and simply sending the +final result to the X server. As far as graphics, X protocol was +reduced to simply image transport and the hardware remained almost +unused by applications, (except for a couple notable operations such +as solid fills and "blitting" or copying pixels for things like +scrolling). + +X graphics support was revitalized with the X Render Extension. This +extension provides a small number of new primitives that are +well-suited for the needs of modern applications. These primitives +include image compositing (blending), support for client-side fonts, +trapezoid rasterization and gradients. The Render extension also +shipped with a remarkably slow software implementation in the X +server. + +Today, through cairo and similar systems, the standard toolkits (GTK+ +and QT) provide applications with easy-to-use drawing APIs that +provide sophisticated effects and pipe everything into the X server +through the Render extension. So, unlike the days of X being used just +to transport the final image, we now have the opportunity to get the +video hardware involved in rendering the things the application +actually wants to draw. + +The EXA acceleration architecture, (an internal implementation detail +of the X server), allows X server drivers to implement hardware +support for each primitive provided by the Render extension. So +architecturally, everything is in place with EXA. Applications' +rendering operations are making it all the way to the hardware driver +where it should be able to make everything go fast. + +## Problems + +So if that's all in place, why isn't EXA blisteringly fast yet? Or why +does adding the 'AccelMethod "EXA"' option to xorg.conf actually slow +things down (and sometimes dramatically)? There are a variety of +possible causes, but I'll discuss two here: + + * Migration overhead + + * Incomplete drivers + +Migration refers to the problem that if a surface needs to be modified +sometimes by a hardware operation and sometimes by software, then the +X server needs to migrate the surface contents back and forth from +video to system memory. Due to architectural issues in commodity +hardware, reading back from video memory is painfully slow---often +orders of magnitude slower than writing to video memory. Various +attempts at doing clever migration strategies within EXA have been +attempted, but it's clear that no amount of cleverness is going to +prevent a significant amount of the overhead, (it turns out to be near +impossible to predict in advance how a surface will be used next). A +punch line here is that often a little-bit of hardware acceleration is +much worse than none at all, (as evidence, see many references to +people dramatically improving system performance by disabling hardware +acceleration in XAA with the XAANoOffscreenPixmaps option). The real +answer for the migration problem is to make sure that drivers support +everything needed and basically never fallback to software rendering. + +So this brings us to the second issue, which is that we don't yet have +drivers that do everything we want yet. Fortunately, we now have +video-hardware manufacturers that are cooperating by providing +complete documentation for several devices, (and more and more devices +all the time it appears). On the Intel side, documentation for the +latest device, (the i965 or "gen4"), was +[released](http://intellinuxgraphics.org/) under a +CC-Attribution-NoDerivs license during LCA. This device is interesting +because more than any previous Intel device it should be quite capable +of supporting anything that Render and EXA can throw at it. Also, the +unified memory architecture it uses, (system memory is reused for video +memory), should help with migration issues. + +However, the currently-available upstream driver for the i965 is +extremely uninteresting performance-wise. It's one of the drivers that +will give a tremendous slowdown if EXA is enabled. The fundamental +problem that the driver has is that it's using a single chunk of +memory to setup all the state for each compositing operation. Then +while the hardware pipeline is started up on that operation, the +driver receives the next operation. But instead of stuffing this into +the pipe and keeping the hardware busy, the driver currently spins in +the CPU until the hardware is completely finished with the previous +request. It does this because it can't modify that shared state object +in memory while the previous operation is still using it. So the CPU +stays extremely busy while doing nothing but waiting, and the GPU +stays extremely idle, doing short bursts of work that occupy only a +tiny fraction of the compute resources on the chip. Not a good state +of affairs at all. + +## Recent Work + +Eric Anholt, Dave Airlie and I have been working to fix up the i965 +driver to actually be sane. This work depends first on TTM, a new +kernel-supported graphics memory manager implemented as part of DRM, +(see Dave Airlie's talk at LCA 2008 for more on TTM). The fundamental +primitives that TTM provides are buffer objects, (kernel allocated +chunks of video memory for the driver to use), and fences which allow +the driver to setup operations and receive interrupts when operations +are complete rather than busy-waiting. + +As it turns out, antialiased text rendering is one of the most +difficult things to accelerate in hardware. Currently, the driver will +see an independent composite operation for every glyph and the glyph +image might be as small as a 10x10 surface or smaller. With surfaces +that small, any per-composite-operation overhead in the driver becomes +quite significant. And, of course, text is one of the most fundamental +operations in 2D interfaces, so it's important to not render it +extremely slowly. Because of this, over the past several months we've +been focusing on characterizing, profiling, and optimizing the i965 +driver with text as the primary benchmark. Other operations, (like +image scaling and blending), will all benefit even more from the work +we've been doing specifically for text. + +When profiling text rendering, we immediately noticed that all +operations were falling back to software rendering. This was because +the X server was using special system-memory storage for all cached +glyph images. We changed the X server to use ordinary pixmaps instead, +which allows the glyph images to live in video memory instead, +allowing for hardware compositing. Next we discovered that the i965 +driver was claiming it didn't support the necessary +render-to-8-bit-alpha-mask operation that text rendering needed, so +that was also forcing fallbacks. Fortunately, no real code was needed +to fix that---we just changed the driver to properly report its +capabilities. + +Those were all good improvements, but with those alone, the +performance of text only got worse with the i965 device, (now orders +of magnitude slower than software.) This is because now every single, +tiny glyph rendering was subject to the bug described earlier where +the driver would spin the CPU while waiting for each separate operate +to complete in the GPU. So now the need for a proper implementation of +compositing in the driver was much more important. + +Dave Airlie made the initial change of the i965 driver to use batch +buffers rather than using a single, shared chunk of memory for the +graphics state for each operation. He also changed it so that the +driver uses TTM to allocate these batch buffers. With this in place, +we did several optimizations so that the driver didn't needlessly +re-initialize any more state objects than strictly necessary. All of +our code is currently available in the intel-batchbuffer branch of the +xf86-video-intel driver. + +Results + +The current results can be summarized as follows. Here we are showing +the performance difference of the upstream "master" branch of the +driver compared to "intel-batchbuffer" branch. In both cases we +are using EXA, but reporting numbers as the speedup compared to XAA, +(so higher numbers are better and numbers less than 1 are performance +regressions). + + Speedup compared to XAA + + Operation EXA (master) EXA (intel-batchbuffer) + -------- ------------ ----------------------- + aa10text .3 0.6 + Blend 9.4 101.6 + .5 scale 7.4 34.3 + 2x scale 23.5 200.3 + General scale 20.2 946.1 + + Measurements made with "x11perf -aa10text" and with renderbench. + +So, with our work, i965 EXA antialiased text for small glyphs is now +2x faster than it was before, but still only 60% the speed of XAA +text. That's 109,000 glyphs/second for EXA/intel-batchbuffer compared +to 186,000 for XAA. So it's still a respectable speed for text, but it +could be improved. Eric believes that the remaining problems +preventing text from being faster are cache flushing issues within TTM +itself. + +Meanwhile, image blending with various scale factors is greatly +improved. The intel-batchbuffer branch makes EXA on the i965 perform +from 5 to 50 times faster than upstream EXA and up to more than 900 +times faster than XAA. Obviously, this is a very good result, and it +shows the incidental improvements we achieved while looking closely +only at text performance. + +We are currently in the process of merging this work into the master +branch of the upstream Intel driver and plan for it to be part of the +upcoming Intel driver release scheduled for June 2008. diff --git a/src/talks/lca_2008/html/index.html b/src/talks/lca_2008/html/index.html new file mode 100644 index 0000000..d3d9544 --- /dev/null +++ b/src/talks/lca_2008/html/index.html @@ -0,0 +1,29 @@ + + + X Acceleration that Finally Works + + +

X Acceleration that Finally Works

+

+

X Graphics +

X Graphics Rock +

Problem Space +

Core Xlib drawing primitives +

Render extension primitives +

Past attempts +

XAA +

KAA +

EXA +

Hardware +

Graphics device support +

Recent Work +

TTM +

EXA with TTM +

965 Render acceleration +

Status +

+

+

Demo +

Future work + + diff --git a/src/talks/lca_2008/html/lca-2008-001.html b/src/talks/lca_2008/html/lca-2008-001.html new file mode 100644 index 0000000..d8a810c --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-001.html @@ -0,0 +1,11 @@ + + + + + + + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-001.png b/src/talks/lca_2008/html/lca-2008-001.png new file mode 100644 index 0000000..da94465 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-001.png differ diff --git a/src/talks/lca_2008/html/lca-2008-002.html b/src/talks/lca_2008/html/lca-2008-002.html new file mode 100644 index 0000000..bc1ee21 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-002.html @@ -0,0 +1,12 @@ + + + X Graphics + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-002.png b/src/talks/lca_2008/html/lca-2008-002.png new file mode 100644 index 0000000..e8427f4 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-002.png differ diff --git a/src/talks/lca_2008/html/lca-2008-003.html b/src/talks/lca_2008/html/lca-2008-003.html new file mode 100644 index 0000000..5b2cfd5 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-003.html @@ -0,0 +1,12 @@ + + + X Graphics Rock + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-003.png b/src/talks/lca_2008/html/lca-2008-003.png new file mode 100644 index 0000000..038f3e7 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-003.png differ diff --git a/src/talks/lca_2008/html/lca-2008-004.html b/src/talks/lca_2008/html/lca-2008-004.html new file mode 100644 index 0000000..8d8d5d3 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-004.html @@ -0,0 +1,12 @@ + + + Problem Space + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-004.png b/src/talks/lca_2008/html/lca-2008-004.png new file mode 100644 index 0000000..54b7353 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-004.png differ diff --git a/src/talks/lca_2008/html/lca-2008-005.html b/src/talks/lca_2008/html/lca-2008-005.html new file mode 100644 index 0000000..cfc5210 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-005.html @@ -0,0 +1,12 @@ + + + Core Xlib drawing primitives + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-005.png b/src/talks/lca_2008/html/lca-2008-005.png new file mode 100644 index 0000000..b35ddf7 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-005.png differ diff --git a/src/talks/lca_2008/html/lca-2008-006.html b/src/talks/lca_2008/html/lca-2008-006.html new file mode 100644 index 0000000..18e48c9 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-006.html @@ -0,0 +1,12 @@ + + + Render extension primitives + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-006.png b/src/talks/lca_2008/html/lca-2008-006.png new file mode 100644 index 0000000..6c35123 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-006.png differ diff --git a/src/talks/lca_2008/html/lca-2008-007.html b/src/talks/lca_2008/html/lca-2008-007.html new file mode 100644 index 0000000..8e4eaf2 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-007.html @@ -0,0 +1,12 @@ + + + Past attempts + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-007.png b/src/talks/lca_2008/html/lca-2008-007.png new file mode 100644 index 0000000..b441792 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-007.png differ diff --git a/src/talks/lca_2008/html/lca-2008-008.html b/src/talks/lca_2008/html/lca-2008-008.html new file mode 100644 index 0000000..06dc4fa --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-008.html @@ -0,0 +1,12 @@ + + + XAA + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-008.png b/src/talks/lca_2008/html/lca-2008-008.png new file mode 100644 index 0000000..78564b1 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-008.png differ diff --git a/src/talks/lca_2008/html/lca-2008-009.html b/src/talks/lca_2008/html/lca-2008-009.html new file mode 100644 index 0000000..49c72e8 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-009.html @@ -0,0 +1,12 @@ + + + KAA + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-009.png b/src/talks/lca_2008/html/lca-2008-009.png new file mode 100644 index 0000000..989b34f Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-009.png differ diff --git a/src/talks/lca_2008/html/lca-2008-010.html b/src/talks/lca_2008/html/lca-2008-010.html new file mode 100644 index 0000000..b715b80 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-010.html @@ -0,0 +1,12 @@ + + + EXA + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-010.png b/src/talks/lca_2008/html/lca-2008-010.png new file mode 100644 index 0000000..c68f9f0 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-010.png differ diff --git a/src/talks/lca_2008/html/lca-2008-011.html b/src/talks/lca_2008/html/lca-2008-011.html new file mode 100644 index 0000000..aa68cfd --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-011.html @@ -0,0 +1,12 @@ + + + Hardware + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-011.png b/src/talks/lca_2008/html/lca-2008-011.png new file mode 100644 index 0000000..071e05c Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-011.png differ diff --git a/src/talks/lca_2008/html/lca-2008-012.html b/src/talks/lca_2008/html/lca-2008-012.html new file mode 100644 index 0000000..e4b0696 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-012.html @@ -0,0 +1,12 @@ + + + Graphics device support + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-012.png b/src/talks/lca_2008/html/lca-2008-012.png new file mode 100644 index 0000000..f0d0d84 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-012.png differ diff --git a/src/talks/lca_2008/html/lca-2008-013.html b/src/talks/lca_2008/html/lca-2008-013.html new file mode 100644 index 0000000..9a39764 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-013.html @@ -0,0 +1,12 @@ + + + Recent Work + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-013.png b/src/talks/lca_2008/html/lca-2008-013.png new file mode 100644 index 0000000..1a2fc8e Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-013.png differ diff --git a/src/talks/lca_2008/html/lca-2008-014.html b/src/talks/lca_2008/html/lca-2008-014.html new file mode 100644 index 0000000..4f9e2b5 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-014.html @@ -0,0 +1,12 @@ + + + TTM + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-014.png b/src/talks/lca_2008/html/lca-2008-014.png new file mode 100644 index 0000000..a7f9e0b Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-014.png differ diff --git a/src/talks/lca_2008/html/lca-2008-015.html b/src/talks/lca_2008/html/lca-2008-015.html new file mode 100644 index 0000000..96bbd24 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-015.html @@ -0,0 +1,12 @@ + + + EXA with TTM + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-015.png b/src/talks/lca_2008/html/lca-2008-015.png new file mode 100644 index 0000000..4773a4f Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-015.png differ diff --git a/src/talks/lca_2008/html/lca-2008-016.html b/src/talks/lca_2008/html/lca-2008-016.html new file mode 100644 index 0000000..cf3f00b --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-016.html @@ -0,0 +1,12 @@ + + + 965 Render acceleration + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-016.png b/src/talks/lca_2008/html/lca-2008-016.png new file mode 100644 index 0000000..cf0da6f Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-016.png differ diff --git a/src/talks/lca_2008/html/lca-2008-017.html b/src/talks/lca_2008/html/lca-2008-017.html new file mode 100644 index 0000000..4495962 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-017.html @@ -0,0 +1,12 @@ + + + Status + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-017.png b/src/talks/lca_2008/html/lca-2008-017.png new file mode 100644 index 0000000..34409cf Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-017.png differ diff --git a/src/talks/lca_2008/html/lca-2008-018.html b/src/talks/lca_2008/html/lca-2008-018.html new file mode 100644 index 0000000..7a4abd5 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-018.html @@ -0,0 +1,12 @@ + + + + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-018.png b/src/talks/lca_2008/html/lca-2008-018.png new file mode 100644 index 0000000..aaeabee Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-018.png differ diff --git a/src/talks/lca_2008/html/lca-2008-019.html b/src/talks/lca_2008/html/lca-2008-019.html new file mode 100644 index 0000000..606b8e1 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-019.html @@ -0,0 +1,12 @@ + + + + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-019.png b/src/talks/lca_2008/html/lca-2008-019.png new file mode 100644 index 0000000..6c615b0 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-019.png differ diff --git a/src/talks/lca_2008/html/lca-2008-020.html b/src/talks/lca_2008/html/lca-2008-020.html new file mode 100644 index 0000000..e74d547 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-020.html @@ -0,0 +1,12 @@ + + + Demo + + + + prev + next + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-020.png b/src/talks/lca_2008/html/lca-2008-020.png new file mode 100644 index 0000000..579a5b9 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-020.png differ diff --git a/src/talks/lca_2008/html/lca-2008-021.html b/src/talks/lca_2008/html/lca-2008-021.html new file mode 100644 index 0000000..3fd8a83 --- /dev/null +++ b/src/talks/lca_2008/html/lca-2008-021.html @@ -0,0 +1,11 @@ + + + Future work + + + + prev + index + + + diff --git a/src/talks/lca_2008/html/lca-2008-021.png b/src/talks/lca_2008/html/lca-2008-021.png new file mode 100644 index 0000000..c548326 Binary files /dev/null and b/src/talks/lca_2008/html/lca-2008-021.png differ diff --git a/src/talks/lca_2008/lca-2008.pdf b/src/talks/lca_2008/lca-2008.pdf new file mode 100644 index 0000000..17cf815 Binary files /dev/null and b/src/talks/lca_2008/lca-2008.pdf differ diff --git a/src/talks/lca_2008/svg/lca-2008-001.svg b/src/talks/lca_2008/svg/lca-2008-001.svg new file mode 100644 index 0000000..839c893 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-001.svg @@ -0,0 +1,273 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + X Acceleration that Finally Works + + + + + + Carl Worth <cworth@redhat.com> + Eric Anholt <eric@anholt.net> + + + + + + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-002.svg b/src/talks/lca_2008/svg/lca-2008-002.svg new file mode 100644 index 0000000..7166de7 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-002.svg @@ -0,0 +1,272 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + X Graphics + + + + + + + + + + + 1 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-003.svg b/src/talks/lca_2008/svg/lca-2008-003.svg new file mode 100644 index 0000000..be039b7 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-003.svg @@ -0,0 +1,42 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + X Graphics Rock + X Graphics Rock + + + diff --git a/src/talks/lca_2008/svg/lca-2008-004.svg b/src/talks/lca_2008/svg/lca-2008-004.svg new file mode 100644 index 0000000..5b134de --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-004.svg @@ -0,0 +1,272 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Problem Space + + + + + + + + + + + 3 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-005.svg b/src/talks/lca_2008/svg/lca-2008-005.svg new file mode 100644 index 0000000..a1c511e --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-005.svg @@ -0,0 +1,283 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Core Xlib drawing primitives + + + + + + + Solid fills + + Bitwise raster operations + + Non-antiliased lines/arcs + + Server-side fonts + + + + + + + + + 4 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-006.svg b/src/talks/lca_2008/svg/lca-2008-006.svg new file mode 100644 index 0000000..b27afd1 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-006.svg @@ -0,0 +1,283 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Render extension primitives + + + + + + + Image compositing + + Client-side font support + + Trapezoid rasterization + + Gradients + + + + + + + + + 5 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-007.svg b/src/talks/lca_2008/svg/lca-2008-007.svg new file mode 100644 index 0000000..7480be9 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-007.svg @@ -0,0 +1,272 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Past attempts + + + + + + + + + + + 6 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-008.svg b/src/talks/lca_2008/svg/lca-2008-008.svg new file mode 100644 index 0000000..e84ac65 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-008.svg @@ -0,0 +1,281 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XAA + + + + + + + fills, copies, stipple fills, bresenham lines + + 2D rectangular memory manager + + almost no pixmap caching + + + + + + + + + 7 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-009.svg b/src/talks/lca_2008/svg/lca-2008-009.svg new file mode 100644 index 0000000..8b1836a --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-009.svg @@ -0,0 +1,281 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KAA + + + + + + + fills, copies + + linear memory manager + + caches all pixmaps + + + + + + + + + 8 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-010.svg b/src/talks/lca_2008/svg/lca-2008-010.svg new file mode 100644 index 0000000..5e9177b --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-010.svg @@ -0,0 +1,281 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EXA + + + + + + + fills, copies, textured blending + + linear memory manager + + caches all pixmaps, migration heuristics + + + + + + + + + 9 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-011.svg b/src/talks/lca_2008/svg/lca-2008-011.svg new file mode 100644 index 0000000..b938af0 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-011.svg @@ -0,0 +1,272 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hardware + + + + + + + + + + + 10 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-012.svg b/src/talks/lca_2008/svg/lca-2008-012.svg new file mode 100644 index 0000000..614b966 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-012.svg @@ -0,0 +1,283 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Graphics device support + + + + + + + Provides fills, copies, textured blending + + Has no local memory + + Aperture reads still expensive + + GART binding is cheap + + + + + + + + + 11 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-013.svg b/src/talks/lca_2008/svg/lca-2008-013.svg new file mode 100644 index 0000000..6373331 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-013.svg @@ -0,0 +1,272 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Recent Work + + + + + + + + + + + 12 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-014.svg b/src/talks/lca_2008/svg/lca-2008-014.svg new file mode 100644 index 0000000..70f06e9 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-014.svg @@ -0,0 +1,281 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TTM + + + + + + + kernel graphics memory manager + + buffer objects + + fences + + + + + + + + + 13 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-015.svg b/src/talks/lca_2008/svg/lca-2008-015.svg new file mode 100644 index 0000000..a7cc516 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-015.svg @@ -0,0 +1,281 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EXA with TTM + + + + + + + fills copies, textured blending + + all pixmaps in buffer objects + + migration by GART binding + + + + + + + + + 14 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-016.svg b/src/talks/lca_2008/svg/lca-2008-016.svg new file mode 100644 index 0000000..5156e7e --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-016.svg @@ -0,0 +1,279 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 965 Render acceleration + + + + + + + Accumulates operations in batchbuffer + + Enumerate all programs and state + + + + + + + + + 15 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-017.svg b/src/talks/lca_2008/svg/lca-2008-017.svg new file mode 100644 index 0000000..0a75872 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-017.svg @@ -0,0 +1,272 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Status + + + + + + + + + + + 16 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-018.svg b/src/talks/lca_2008/svg/lca-2008-018.svg new file mode 100644 index 0000000..78aed07 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-018.svg @@ -0,0 +1,42 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-019.svg b/src/talks/lca_2008/svg/lca-2008-019.svg new file mode 100644 index 0000000..f291cc0 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-019.svg @@ -0,0 +1,42 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-020.svg b/src/talks/lca_2008/svg/lca-2008-020.svg new file mode 100644 index 0000000..d5f0b81 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-020.svg @@ -0,0 +1,272 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Demo + + + + + + + + + + + 19 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-021.svg b/src/talks/lca_2008/svg/lca-2008-021.svg new file mode 100644 index 0000000..46fbe25 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-021.svg @@ -0,0 +1,281 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Future work + + + + + + + Cache flushing reduction + + Surface state caching + + Gradients acceleration + + + + + + + + + 20 + + X Acceleration that Finally Works + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-logo.svg b/src/talks/lca_2008/svg/lca-2008-logo.svg new file mode 100644 index 0000000..b4f61f6 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-logo.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + linux.conf.au + MEL OURNE +    8     2008 + diff --git a/src/talks/lca_2008/svg/lca-2008-screen.svg b/src/talks/lca_2008/svg/lca-2008-screen.svg new file mode 100644 index 0000000..18eedcc --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-screen.svg @@ -0,0 +1,170 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + Outline 1 + + + + SlideTitle + SlideTitle + + + diff --git a/src/talks/lca_2008/svg/lca-2008-section.svg b/src/talks/lca_2008/svg/lca-2008-section.svg new file mode 100644 index 0000000..71f4ffd --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-section.svg @@ -0,0 +1,977 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Slide Title + + + + + Outline 1 + + + + + + + 2 + + Presentation + + + + + + diff --git a/src/talks/lca_2008/svg/lca-2008-title.svg b/src/talks/lca_2008/svg/lca-2008-title.svg new file mode 100644 index 0000000..21d31a6 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008-title.svg @@ -0,0 +1,973 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Slide Title + + + + + Outline 1 + + + + + Jan 29, 2008 + + + + diff --git a/src/talks/lca_2008/svg/lca-2008.svg b/src/talks/lca_2008/svg/lca-2008.svg new file mode 100644 index 0000000..caa77a6 --- /dev/null +++ b/src/talks/lca_2008/svg/lca-2008.svg @@ -0,0 +1,977 @@ + + + + + + • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Slide Title + + + + + Outline 1 + + + + + + + 2 + + Presentation + + + + + +