[Pull Request] Glamor: A 2D rendering acceleration implementation based on OpenGL

zhigang gong zhigang.gong at gmail.com
Tue Sep 27 20:51:16 PDT 2011

On Wed, Sep 28, 2011 at 1:41 AM, Alon Levy <alevy at redhat.com> wrote:
> On Tue, Sep 27, 2011 at 09:50:06PM +0800, zhigang gong wrote:
>> Hi Keith,
>> Here is the pull request to merge glamor. Basically, it has three parts.
>> The first part is the 2D rendering acceleration implementation in
>> glamor directory. It supports both OpenGL/GLESv2. The second part is
>> in hw/kdrive/xephyr. This part integrate glamor into Xephyr. And by
>> specify a "-glamor" when invoke the Xephyr then you can use glamor
>> to accelerate the rendering operations. The third part is in
>> hw/xfree86/glamor. This part implements a standalone ddx driver based
>> on glamor, egl and kms. With this glamor driver, you can start up
>> a Xserver over Mesa/EGL directly, without any native window system.
> I am not very familiar with either cairo/pixman, just know that it is
> used in spice, and it has a GL backend. There is also clutter, and some
> other open source 2D GL rendering libraries (qt canvas is also interesting,
> although I guess it's C++). How is glamor related to them? (I guess some
> of them don't support EGL, but looking at those who do - clutter certainly,
> runs on my n900, and qt as well I think).

Well, I'm also not very familar with all of the 2D libraries you listed above.
I just try my best to explain the diffence and relationship here. I know
there are many real experts in this mail list. If I'm wrong, please correct

pixman is a pure software 2D rendering library. The rendering target must
be a frame buffer located at normal memory buffer.

Cairo is a 2D graphics library with support for multiple output devices. Cairo
may utilize pixman to do the rendering if possible, for example when you
are using the image surface. When you are using other devices, such as
a xlib, then Cairo will utlize xlib's API to implement its rendering functions.

Glamor is not a general 2D rendering library. It is designed for the X11
 only. So it will not provide any APIs for other usage, it just be used
by Xserver's driver. And if you are using a xserver glamor driver, then
the calling to xlib/xcb library at client side will be routed to glamor
eventually. And one thing is possible that we may utilize cairo's EGL/GL
backend directly in glamor's implementation.

Actually, the glamor's purpose is to build a fully accelerated hardware
independent 2D driver for xserver, although we still have a lot of things to
do to improve its performance.

> Alon

More information about the xorg-devel mailing list