[4/10] WineD3D: Implement overlay position tracking
stefan at codeweavers.com
Mon Aug 4 14:43:43 CDT 2008
This patch and the following implement basic overlay implementation using
opengl. Basically, we have two ways to handle this:
* Create a Window in winex11 to emulate the overay and do opengl drawing on
* Draw to the window all the other ddraw / d3d drawing goes to.
Each of them has different advantages and disadvantages. The bottom line is
that we can't get 100% overlay compatibility with OpenGL, for this we need
Xv(which isn't available on OSX).
The first method would allow us to overlay any part of the screen, and we
aren't competing with GDI drawing. The drawback is that the overlay
invalidates parts of other windows when it is moved away, which should not
happen. It isn't really compatible with compositing window managers, and
color keying won't work. It will not work on Windows.
The 2nd method limits the overlay capabilities to the swapchain's
destination window. If the application performs GDI drawing, it can
overwrite our overlay. However, within these limitations, WineD3D can move
the overlay around without invalidating windows(not implemented, but by
taking a backup of the old content). Source color keying is streightforward.
Destination color keying isn't implemented in these patches, but also
possible by reading the destination's content into a texture and feeding the
texture into the shader. This approach just works with compositing window
managers, and it can work on Windows too.
Note that these patches alone don't do much yet. Another problem preventing
video players from working is that Windowed rendering in DirectDraw is
pretty broken and needs fixing, but this is not directly related to overlays
and will be done in another patch wave.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 0 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20080804/5c9c13e8/attachment.bin
More information about the wine-patches