[cairo] glitz progress

David Reveman c99drn at cs.umu.se
Mon Aug 9 17:14:21 PDT 2004


I’ve been doing quiet a bit of work with glitz lately. Here’s a list
with some of the latest additions and changes for those of you who are
interested.

* Asynchronous pixel data transfers
This improves performance of applications such as movie players, which
stream pixel data to graphics memory drastically. It also makes use of
software rasterized polygons with glitz much more efficient, one reason
to why we want this is sub-pixel rendered polygons.

* Component-alpha compositing
Hardware accelerated compositing of sub-pixel rendered alpha-mask.

* New internal compositing interface
This is probably the thing I’m most happy about. This new interface is
much more correct and it allows for projective transformations with
hardware handling repeat. The output from this new interface should
match the X Render spec exactly. The projective transformations are
currently broken, but all I need to get that working correctly is an
efficient way for converting the projective transformation matrix from
non-normalized object space to normalized object space. Anyone who knows
how this could be done?

* New filter interface (not finished yet)
This new filter interface matches X Render more closely. Solid surfaces
have been removed and 1x1 surfaces with repeat are now just as efficient
as the old solid surfaces. Linear and radial surfaces, which earlier was
used for gradients have been replaced by the new LINEAR_GRADIENT and
RADIAL_GRADIENT filters that can be used with regular surfaces.
Convolution kernels are now specified as parameters to the CONVOLUTION
filter type.

The new convolution and gradient filters are not implemented yet. I'll
probably do the implementation of those sometime this week.

We never really had a good test program for glitz. I've now written one
that I think is OK.
It has a backend system so XRender can be used with it as well. I've got
glitz backends for GLX and AGL working and I've also implemented an XCB
backend but that's currently broken due to some put_pixels problem (I
think). However, this test program is good for testing how well a
graphics card/driver works with glitz. Right now rendertest only tests
the composite operation but I'll add trapezoid tests as well as
convolution filter and gradient filters tests as soon as I got the new
implementation of those working with glitz. You can get this test
program from cairo CVS, module name 'rendertest'. You'll also need the
latest CVS version of glitz for this to compile.

Oh, cairo's OpenGL backend doesn't work with the current CVS version of
glitz. I'd like to get the new filters and the new trapezoids working
before I update the OpenGL backend, sorry for that. And if nobody minds,
I'll probably also change the name of the 'gl' backend to the 'glitz'
backend. In case someone likes to implement another OpenGL backend.

- David




More information about the cairo mailing list