Papers and Talks by Keith Packard

RandR 1.2: Hotpluggy Sweetness

The slides from a presentation given at Akademy 2006 in Dublin describing RandR version 1.2 and it's new hotplugging abilities

X Directions

A very brief list of directions for the X window system. This is just a slide deck.

Presented at the OSDL Desktop Architect meeting.

Twin: An Even Smaller Window System For Even Smaller Devices

Describes the 'twin' window system, which is a small window system designed for machines with limited memory.

Presented at the 2005 Ottawa Linux Symposium, July 2005.

cairo status

A presentation on the status of cairo.

Presented at the 2005 European X Developers Conference, Karlsruhe, June 2005.

X Status Report

What's up with X

Presented at 2005 in Canberra, April 2005.

Getting X Off The Hardware

Describes my ideal world where X has little direct connection to the graphics and input hardware.

Presented at the 2004 Ottawa Linux Symposium, July 2004.

The (Re)Architecture of the X Window System

An overview of various work going on with the X Window System. Mostly written by Jim Gettys.

Presented at the 2004 Ottawa Linux Symposium, July 2004.

Life in X Land

This is a collection of ramblings about what's going on with X development.

Presented at FOSDEM 2004.

A Realistic 2D Drawing System

This is a paper about Cairo that Carl Worth and I submitted for SigGRAPH in 2003. It wasn't accepted, so it never got published there.

Two dimensional graphics systems are often characterized as just 3D graphics with a fixed Z value. This paper describes a graphics system built to support high quality 2D rendering by applications while taking advantage of hardware acceleration designed for 3D graphics.

The system is divided into three stages: tessellation, rendering and compositing. The tessellation stage contains a novel algorithm for handling splines stroked with an elliptical pen. The rendering stage provides precise pixelization semantics and access to hardware acceleration. Image compositing is enhanced with new operators that extend the capabilities of traditional Porter/Duff compositing to provide a formal model that supports common incremental drawing methods.

Xr: Cross-device Rendering for Vector Graphics

Xr provides a vector-based rendering API with output support for the X Window System and local image buffers. PostScript and PDF file output is planned. Xr is designed to produce identical output on all output media while taking advantage of display hardware acceleration through the X Render Extension.

Presented at the 2003 Ottawa Linux Symposium, July 2003.

X Window System Network Performance

This paper measures X network performance on a wide range of synthetic networks.

Presented at the 2003 Usenix Annual Conference in San Antonio Texas, June 2003.

Font Configuration and Customization for Open Source Systems

This paper presents the new Fontconfig library and argues for more consistency in inter-application font configuration.

Presented at the 2002 Gnome Users and Developers European Conference in Seville, April 2002.

The Xft Font Library: Architecture and Users Guide

The paper documents the current Xft library, the talk spends more time on what's next.

Presented at the 2001 XFree86 Technical Conference in Oakland, 2001-11-9

Challenges of the X Rendering Extension

A detailed analysis of three issues in the design and implementation of the X Rendering Extension. 2001-10-17.

Slides for the talk

Design and Implementation of the X Rendering Extension

A technical discussion about the X Rendering Extension and how it came to work the way it does.

Presented at Usenix 2001 in Boston, 2001-6-30

The X Resize and Rotate Extension - RandR

Jim Gettys and Keith Packard

The Resize and Rotate extension (RandR) is a very small set of client and server extensions designed to allow clients to modify the size, accelerated visuals and rotation of an X screen. RandR also has provisions for informing clients when screens have been resized or rotated and it allows clients to discover which visuals have hardware acceleration available.

Presented at Usenix 2001 in Boston, 2001-6-30

Advancements in XFree86

A status report for XFree86, history, current status and future plans.

Presented at Linux World Expo in New York, 2001-1-31


An LBX Postmortem

Some analysis of LBX using modern application startup traces along with recommendations about what should be done to improve application performance for all networking environments.

Presented at Portland State University, 2001-1-24

Introductory Paper

Slides With Data

Translucent Windows in X

The X Window System allows multiple windows to occupy the same coordinates on the screen. The core protocol defines which portions of each window are visible and which are occluded by overlapping windows, but the overlapping windows are always completely opaque.

Various techniques can be used to simulate non-opaque windows in controlled environments. The Shape Extension can be used to make areas of the window transparent. A background of ``None'' can be used to inherit the contents of the screen in the region occupied by the window when it is first mapped. Where available, hardware overlays can be used which expose a transparent pixel value.

None of these techniques can be used for translucency in a general way; hardware overlays and the Shape Extension can only provide transparency and cannot blend the pixel colors together. A background of ``None'' cannot be used when the occluding windows are to be reconfigured or when the occluded region contents are expected to change.

The X Translucent Window Extension is described which solves the general translucency problem by assigning alpha values for pixels in occluding windows. These values are used to blend the occluding window contents with the occluded region for display. The details of managing translucent window hierarchies, re-parenting translucent windows and X visual differences between blended pixels are discussed.

Atlanta Linux Showcase 2000

Online Presentation (not ready yet)
Sample image

Efficiently Scheduling X Clients

The X server is charged with providing window system services to many applications simultaneously, and needs a scheduling mechanism to distribute it's limited resources among these applications. The original scheduling mechanism was simplistic and caused graphics-intensive applications to starve interactive applications.

A new scheduling mechanism has been designed which fairly distributes time among the requesting applications while at the same time increasing performance by a small amount. Descriptions of the original and new scheduling mechanism and empirical measurements demonstrating the effects of scheduling within the X server are included along with a discussion on how the design was arrived at.

Usenix Technical Conference 2000

Online Presentation

A New Rendering Model for X

X version 11 was originally designed and implemented in 1987. In the intervening 13 years, there have been advancements in both applications and hardware, but the core of the X Window System has remained largely unchanged. The last major X server architecture changes were included in X11R4. The last wide-spread functional enhancement exported by the X server might well be the Shape extension, designed (in the hot tub) at the 1989 Winter Usenix in San Diego.

The rise of inexpensive Unix desktop systems in the last couple of years has led to the development of new user-interface libraries, which are not well served by the existing X rendering model. A new 2D rendering model is being developed to serve this new community of applications. The problem space and proposed solutions are discussed.

Usenix Technical Conference 2000

Online Presentation
More info and pictures

Adding Multimedia to the Linux Desktop

A brief technical overview of Linux multimedia capabilities with an emphasis on interactions with the X server.

Linux Canada 2000

The Evolution Of The X Server Architecture

A history of how engineering practices have changed over the life of the sample X server. 1999.

On-line presentation.
Html version.

X Server Internals

A tutorial given many times at Xhibition and the X Technical conference, slides, notes and handouts. It's in troff, plus a few pictures in postscript. 1992.

Font Support in WinCenter Pro: Creating an Application Specific Font Server.

One of the challenges in implementing WinCenter Pro (an X based multi-user NT system) was to efficiently render text. Using strike-format bitmaps or scan converting each glyph into a list of rectangles consumes significant network bandwidth and takes significant time for the X server to render. For reasonable performance the system must use the X text rendering primitives. Substituting an existing X font for each NT font fails to preserve application appearance. WinCenter Pro exports the NT fonts to the X server using the X Font Service Protocol providing both high performance and pixel-perfect results. The overall architecture along with some of the technical issues involved are presented.

Tenth Annual X Technical Conference. The X Resource, O'Reilly & Associates, Issue Seventeen, 1996.

Networking NT Applications Using X

By taking advantage of Microsoft's NT architecture, WinCenterPro directly converts NT graphics calls into X protocol. The resulting multi-user NT application server can provide a complete Windows application environment simultaneously to many X desktop devices with performance similar to modern accelerated native NT graphics devices. The overall architecture of the NT window system, WinCenterPro and some of the X related tricks will be presented.


A Pseudo-Root Extension: X Window System Nesting on a Budget.

The notion of encapsulating a screen inside a sub-window has been around a long time. Rob Pike's 'layers' went as far as possible; the only way to create nested windows was to run a new copy of the window system from within a window. Release 6 provided an X server which could do the same (Xnest). However, both of these suffer from performance problems as each client request must be delivered over two network connections and be interpreted by two window system servers. The X Window System provides for nested windows already, and has only a few references in the protocol to which window is the magic "root" of the window heirarchy on the screen. By changing which window appears to be the root in the context of a particular client, a full-speed window system encapsulation has been achieved. Functionality to encapsulate additional global resources is also included.

Ninth Annual X Technical Conference. The X Resource, O'Reilly & Associates, Issue Thirteen, 1995.

Design and Implementation of LBX: An Experiment Based Standard

Unlike other X Standards efforts, the design of Low Bandwidth X (LBX) could not be done in a vacuum. With the goal of LBX to provide a usable X environment via an extremely limited bandwidth channel, the only way to effectively design the system was to experiment with different ideas and measure which actually worked better. Some of these experiments could be done with pencil and paper, other required extensive development. Many design decisions were made using parts of the eventual implementation. The process, along with the experiments, results and design will be presented together.

Eighth Annual X Technical Conference. The X Resource, O'Reilly & Associates, Issue Nine, 1994.

The Layout Widget: A TeX style Constraint Widget Class

The X Toolkit geometry management process is extremely flexible and powerful; however the existing composite widget classes make it difficult for the application developer both to simply design an application layout, and even more important, to make the layout work in a wide variety of environments.

The Layout widget class is described which uses a stretch/shrink model similar to TeX to constrain the layout of an application in a manner which allows the geometry of the children to respect the desires of the application designer, while adapting to its environment, both in terms of the changing geometry allocated to the widget, and to the changing needs of the child widgets. The specification of the child layout is entirely contained in a resource which is interpreted at run time.

Seventh Annual X Technical Conference. The X Resource, O'Reilly & Associates, Issue Five, 1993, pp 67-76.

Using XTrap to Help People with Manual Disabilities

The XTrap extension provides a mechanism to interpose a complicated application between the X input devices (pointer and keyboard) and the X server. Using this mechanism, an interesting system for reducing the amount of manual ability required to operate X clients is investigated and compared with other systems.

Sixth Annual X Technical Conference. The X Resource, O'Reilly & Associates, Issue One, 1992, pp 199-212.

X Selection Mechanism

The X Selection Mechanism is misunderstood by most people, this paper tries to uncover Phil Karlton's intent. The ideas were taken from private conversations with Phil, one of the founding fathers of X. Postscript version of the paper

Fourth Annual X Technical Conference. 1990.