wine/dlls x11drv/x11drv.h x11drv/winpos.c x11d ...
lionel.ulmer at free.fr
Mon Jan 31 14:51:51 CST 2005
> If it's not too much trouble, it would be nice if you list all the
> known loose ends/bugs/optimisations/regressions so that (1) we can
> explicitly track them, and (2) we get a sense of where we are and
> how things are going. And last, but not least, there is the off chance
> that someone might lend a helping hand (yeah, I know, chances are
> slim to none, but still ... :))
Basically, the problem with OpenGL is that there is no way (that I know of)
in OpenGL to do non-simple clipping (what I mean by 'non-simple' is
non-rectangular). Ie if a (non top-level) OpenGL window is obscured by
another (non top-level) window, there is no way (that is not a hack) to
prevent GL to draw over the obscured window.
The best way to fix this would be to have the X server export via a GLX
extension its hardware clip-list implementation (which is something that I
need to discuss with the FreeDesktop guys as this would be something that
could help all the 3D X servers implementations which people are working
on as, basically, it's exactly the same issue).
The other way is to do indirect rendering for GL contexts not associated to
top-level windows: basically, draw in a Pixmap (or a PBuffer) and then use
the plain Wine 'DIB' code to blit this back-buffer to the screen (doing then
the clipping). This should work easily at the price of some performance
(especially on cards / drivers who do not support accelerated off-screen
The additionnal advantage of the latter solution is to solve also the
'multiple windows / different GL attributes' problem.
PS: I think we may have the same issue if we want (one day) to re-introduce
Xv acceleration for video playback.
Lionel Ulmer - http://www.bbrox.org/
More information about the wine-devel