compiz on aiglx
David Reveman
davidr at novell.com
Thu Mar 9 06:53:25 PST 2006
On Mon, 2006-03-06 at 14:01 -0500, Kristian Høgsberg wrote:
> 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.
Yes, we agreed that GLX_EXT_tfp semantics should be that it binds a copy
and it makes sense for being able to completely avoid tearing. I haven't
updated compiz and Xgl for that yet. Textures and pixmaps will continue
to share the same memory in Xgl so to get copy-on-bind semantics I have
to be able to lock a drawable so that no other client can write to it. I
don't know how hard that will be but updating compiz to bind before
every draw could be done right without breaking anything.
GLX_Y_INVERTED_EXT is y-inverted in respect to GL. So if aiglx is
different than xgl, GLX_Y_INVERTED_EXT should be set to TRUE in aiglx.
-David
More information about the xorg
mailing list