Challenges of the X Render Extension

Keith Packard
XFree86 Core Team

The X Render Extension provides an entirely new graphics architecture for the X Window System. In the process of developing the new rendering primitives, several interesting issues were uncovered. The first was in completing the image compositing algebra used as the underlying pixel manipulation mechanism. Next, an exact specification was required for anti-aliased polygons. Finally, the ubiquity of sub-pixel addressable displays suggested that the extension incorporate operations that could take full advantage of them.

The underlying rasterization system in Render is an extension of that found in the Plan-9 window system. That system provides only for the Porter/Duff "over" operator. Render starts with the complete Porter/Duff operator set and extends it further. The full set of Render compositing primitives is presented along with justification and some examples.

Over the last fifteen years, numerous X applications have demonstrated that X clients must be able to accurately predict and emulate the rasterization operations performed within the server -- largely to supplant server-side rendering with client-side operations when the X protocol proves insufficient. The geometric primitives in Render are exactly specified, however the original specification was shown to require an inordinate amount of computation. Requirements for any solution are justified and a simplified specification which meets these requirements is presented.

Finally, the compositing infrastructure was extended to provide for separate rendering control of the red, green and blue components of each pixel. This is used by the Xft library to rasterize glyphs that improve appearance of text on sub-pixel addressable displays such as digital LCD panels. A description of this operation is presented along with the algorithms used to rasterize glyphs.