X Rendering Extension


The X Rendering Extension is an extension to the X11 core protocol to implement image compositing in the X server, to allow an efficient display of transparent images.

History

It was written by Keith Packard in 2000 and was first released with XFree86 version 4.0.1. Its design was influenced by rio, the windowing system for Plan 9.

Motivation

The core X Window System drawing protocol does not have a way to efficiently draw transparent objects: A computer display is composed of individual pixels, which can only show a single color at a time. Thus transparency can only be achieved by mixing the colors of the transparent object to be drawn with the background color. However, the standard X protocol only allows drawing with solid color, so the only way to achieve transparency is to fetch the background color from the screen, mix it with the object color, then write it back, which is fairly inefficient.
Since many operations require transparency, this limitation caused problems, and Xrender was implemented to address it.

Features

It provides several rendering operations and also does alpha blending. it serves primarily to implement antialiased fonts, but for example KWin, KDE’s window manager uses it to draw drop shadows and translucency in case OpenGL is not available.
Geometric figures are rendered by client-side tessellation into either triangles or trapezoids. Text is drawn by loading the glyphs into the server and rendering as a group.
It is designed to target the 3D graphics capabilities of newer video cards.