Finishing Composite to handle transformed windows

Adam Jackson ajax at nwnk.net
Mon Jan 9 09:06:59 PST 2006


On Saturday 07 January 2006 05:35, Andy Ritger wrote:
> I'm not real excited about a GLX extension to give a GLXContext a
> subwindow_mode attribute, but it seems feasible.  I'd be curious
> what other GLX implementors think about that.

I'm not completely clear on what it would entail, my knowledge of DRI clipping 
far exceeds my knowledge of plain X clipping.  But while we're on the subject 
of DRI integration:

I did look into modifying the DRI to not clip DRI drawables if they're being 
occluded by manually redirected windows.  This turned out to be non-trivial, 
the ClipNotify chain only gives you the window being clipped and not the 
window doing the clipping.  The MarkOverlappedWindows chain might give me 
enough information to do this but that seems remarkably heavy.

The complementary problem is skipping clipping when the direct-rendered 
surface is itself redirected.  I think compRedirectWindow needs to grow a 
notifier chain, and the DRI protocol or its moral equivalent extended to pass 
the notification of front-buffer move to the client.

And then finally the DRI needs the ability to post Damage events to the server 
on SwapBuffers and other front buffer updates, but that's pretty trivial and 
not directly related to the above.

> > If we decide that the compositing manager must be allowed to draw to a
> > non-root window, then we must create a solution for that window to hold
> > the correct clip list.
>
> It does sound heavy handed to require that the composite manager's
> output window must be the root window.  However, it makes things
> easier if that's enforced, and it makes sense in that the root
> window is the only window that cannot itself be redirected.

As you mentioned though, that does require that the server's GLX add all the 
right visual properties to the root window, which sounds like a configuration 
headache.

The way I've been thinking about it is that redirected windows logically live 
in a rootless underlay that never gets exposed and never clips.  I don't know 
if that's the right model to do in the code, it's sounding like the topmost 
stack idea is simplest.

- ajax
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg/attachments/20060109/c21869c8/attachment.pgp>


More information about the xorg mailing list