Finishing Composite to handle transformed windows

Andy Ritger aritger at nvidia.com
Sun Jan 8 15:31:55 PST 2006



On Sat, 7 Jan 2006, Keith Packard wrote:

> >     - supposedly not all GLX implementations support rendering to
> >       the root window; I'd be curious what other GLX implementors
> >       think about it, but I would consider that a bug that should
> >       be fixed
> 
> My understanding is that GLX uses different visuals that look identical
> to X to indicate different 3D rendering capabilities. We can't change
> the root visual. Would this mean that we would have to select the
> 'right' root visual at X server startup for a particular compositing
> manager? This seems bad.

GLX extends X visuals, adding additional properties to each X visual.
You raise a good point: I can imagine a composite manager wanting
to select different visuals (for things like MultiSample).  I guess
that means that the server-side GLX implementation would need to
add the 'right' additional GLX properties to the root visual.  Ick.

> > 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.
> 
> We have to get the clip list of the GLX context set somehow; either we
> make it possible to have the child windows affect clipping, or we add an
> IncludeInferiors mode to GLX. The latter brings GLX into parity with the
> core and Render drawing systems which support this mode, and seems like
> it would be a whole lot easier than other nasty hacks to fix the root
> clip for everyone.

Yeah, I see your point.

> > 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.
> 
> Right, it doesn't require any widgey semantics or strange extensions for
> things to 'just work', and that's certainly appealing. The key question
> is whether GLX and/or X can be fixed to make this possible.
>    
> > It took me a few reads to actually understand the above.  Now I
> > see what you mean, and ewww.
> 
> Yeah, which is one reason I'd really like to just use IncludeInferiors
> if possible. Of course, drawing a single ManualRedirect window into the
> root will still be hard. The best way to handle that case would be to
> create a wrapper window and reparent the ManualRedirect window inside
> it. Painting to the wrapper in IncludeInferiors mode will get the right
> clip list, otherwise you have to compute the clip list by hand, which is
> icky. With this in mind, it's hard for me to see the value of
> ManualRedirect one a one-by-one basis at the top level of the window
> tree, which does kinda encourage the manual-redirect-don't-clip view.
> Hmm. 
> 
> > Fair enough; I don't have any examples where this would be desirable,
> > either.
> 
> Yeah, let's try to define one set of useful semantics rather than a
> bunch of kludgy options.

Agreed.

I'll give this some more thought and solicit ideas from some other
NVIDIA engineers and try to get back to you.

Thanks,
- Andy

> -keith
> 
> 



More information about the xorg mailing list