From click to pixel: A tour of the Linux graphics stack
The Linux graphics stack can be a bewildering thing. What do all those names actually mean (cairo? Mesa? Glucose? UXA? GEM?). How can an application designer hope to debug a graphics performance problem? This talk provides a simple overview of the 2D and 3D graphics stacks for Linux with clear diagrams, and several recipes for debugging graphics performance problems at several layers. We conclude with an overview of upcoming changes to the graphics stack, (in particular, several different attempts to unify the 2D and 3D stacks).
Presented at linux.conf.au 2009 in Hobart, Tasmania, Australia on 2009-01-21.
X Acceleration that Finally Works
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 in Melbourne, Australia on 2008-01-30.
Co-maintaining cairo: cool community, cool code
A retrospective on the development of the cairo code and community over its 5 year history. Co-presented with Behdad Esfahbod at GUADEC 2007 in Birmingham, United Kingdom.
Designing a Library that's Easy to Use
This is something of a case study on the design of the cairo graphics library API with some hint on things to keep in mind or to avoid while doing API design. Presented at GUADEC 2006 in Vilanova i la Geltru, Spain.
An Insider's Guide to cairo
I present details of the internals of the cairo graphics library. The algorithms and components presented include:
Stroking a cubic Bézier spline with a circular pen, (Minkowski sums and the convolution of polygonal tracings).
Robust, (and efficient) tessellation in the face of limited-precision arithmetic.
Careful rasterization algorithms suitable for incremental rendering with no seams, (describing our failed coverage-calculating approach as well as our new point-sampling approach).
Compositing (why pre-multiplied alpha is the one true way).
Presented at the Desktop Developers' Conference on 2005-07-19.
Cairo: Making Graphics Easy to Print
Free software operating systems have often been accused of having pessimal printing support. Recent infrastructure improvements have largely solved the plumbing problem. But adding print support to applications is still painful. Generally, rendering code must be duplicated which often leads to inconsistencies between display and print output.
The cairo graphics library is designed to provide high-quality print output with the same API used for rendering to a display. The initial approach toward implementing printing support was to prioritize output fidelity over memory or bandwidth requirements yielding an implementation that achieves consistent print quality through reuse of image-based rendering code. Or we were just lazy and it was easy that way. Either way, it was a pig.
This paper will discuss recent progress in cairo's printing backends as they develop into first-class citizens. Generating efficient, high-quality print output is complicated because PostScript has an imaging model fundamentally more limited than that of cairo. This and other challenges will be presented along with our solutions.
Presented at linux.conf.au 2005 on 2005-04-22.
On-demand Linux for Power-aware Embedded Sensors
We introduce a distributed sensor architecture which enables high-performance 32-bit Linux capabilities to be embedded in a sensor which operates at the average power overhead of a small microcontroller. Adapting Linux to this architecture places increased emphasis on the performance of the Linux power-up/shutdown and suspend/resume cycles.
Our reference hardware implementation is described in detail. An acoustic beamforming application demonstrates a 4X power improvement over a centralized architecture.
Presented at the 2004 Ottawa Linux Symposium in July, 2004.
Cairo: Cross-device Rendering for Vector Graphics
Cairo provides a vector-based rendering API with output support for the X Window System and local image buffers. Cairo provides a stateful user-level API with support for the PDF 1.4 imaging model. Cairo provides operations including stroking and filling Bézier cubic splines, transforming and compositing translucent images, and antialiased text rendering.
Cairo, (formerly known as Xr), is available from http://cairographics.org
Presented at the 2003 Ottawa Linux Symposium in July, 2003.
xstroke: Full-screen Gesture Recognition for X
Some of the challenges in developing a gesture recognition program with a full-screen user-interface. xstroke has been incorporated into the handhelds.org distribution.
Presented at the 2003 Usenix Annual Technical Conference in San Antonio, Texas, June 2003.
Synthesizing RTL Hardware from Java Byte Codes
This paper came out of the work I did on my Master's thesis at BYU's Configurable Computing Laboratory. The implementation adds experimental support for synthesis to JHDL.