[Xr] Xr support for non-X rendering

Carl Worth cworth at east.isi.edu
Mon Apr 21 13:55:05 PDT 2003

After an extended hiatus, Xr/Xc development is finally moving again.

The big change is in Xc which was a dumb stub before, but is now an
honest abstraction layer providing either server-side rendering
through the RENDER extension, or client-side rendering through the new
libic library, (which comes from the same code used for the software
fallback for RENDER).

So Xr can now be used to draw to local image buffers without an X
server being involved at all. (This probably means that Xr/Xc should
get new names -- suggestions welcome).

There's some framework to let Xc draw to old non-RENDER servers using
libic and core X graphics, (XPutImage), but that functionality is not
finished and will likely just crash your app. if you try to use it.

There are several API changes to Xr. The most common fixes to code
should be simple, along the lines of:

XrCreate(dpy)			->	XrCreate();

XrSetDrawable(xrs, drawable);	--\	XrSetTargetDrawable(xrs, dpy, drawable);
XrSetVisual(xrs, visual);	--/

There's also a big change in that XrPushGroup/XrPopGroup have been
dropped from the API. There are new mechanisms for managing separate
surfaces instead. I'll describe that in a separate message.

The latest bits are available in CVS from keithp.com:


There are now four libraries that make up the Xr/Xc collection, so
you'll need the following modules from CVS:


The xrtest module contains a few simple programs that demonstrate
basic usage of Xr.


PS. I've CCed a few of you that posted messages about Xr back when
render at xfree86.org still existed. If you're interested in following
Xr, please subscribe to the new xr at xwin.org mailing list:


More information about the cairo mailing list