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