compiz on aiglx
Kristian Høgsberg
krh at bitplanet.net
Mon Mar 6 11:01:33 PST 2006
Hey,
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:
http://freedesktop.org/~krh/compiz-on-aiglx
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:
http://people.freedesktop.org/~ajax/radeon-prefer-db-visuals-1.patch
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,
Kristian
More information about the xorg
mailing list