compiz on aiglx

Kristian Høgsberg krh at
Mon Mar 6 11:01:33 PST 2006


With a bit of hacking, I managed to get compiz (and glxcompmgr) running 
on aiglx.  I'm running it on my i830 laptop, and the performance is 
actually quite impressive.

Most of the aiglx fixes were just bug fixes or missing minor features 
and have been committed to the accel_indirect_branch.  A couple of fixes 
are less committable and I've put them here:

The aiglx-gl-include-inferiors.patch make the DRI driver draw over child 
windows, and the patch is really simple.   The question is what kind of 
protocol do we need to enable this... an FBConfig attribute might work, 
or maybe the question is, why does redirected window affect output at 
all again?  Furthermore, for compiz to work, the root visual must be 
double buffered, which really just depends on how the DDX driver 
initializes the visual configs.  The i830 sets it up correctly, but the 
radeon driver needs something like this:

to make sure the root window gets a double buffer visual.

The aiglx-tfp-damage.patch adds damage tracking to the naive GLX_EXT_tfp 
implementation in aiglx.  It sometimes misses damage events it seems and 
it really should track damage per texture object so it's not committed yet.

The compiz-aiglx-changes.patch makes a couple of changes to compiz to 
make it work on aiglx: first, as I remember from xdevconf, the consensus 
around GLX_EXT_tfp semantics was that it binds a copy (conceptually) of 
the pixmap as the texture.  This is what aiglx implements, but it looks 
like Xgl sematics is that the texture and pixmap share the same memory 
and only binds and releases the pixmap on pixmap creation and 
destruction time.  The patch changes compiz to bind and release whenever 
the texture is used, which is why the damage tracking tfp patch above is 
essential for decent performance.  I'm not sure the copy semantics makes 
sense, though, but I'll write another email about that.  Another change 
in the patch is support for the GLX_Y_INVERTED_EXT atrribute on a GLX 
drawable.  Xgl binds the pixmap y-inverted, aiglx doesn't so compiz 
needs to know how to handle this.  Of course, this should be an FBConfig 
attribute not a drawable attribute.

Have fun,

More information about the xorg mailing list