-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Am 2015-07-15 um 10:47 schrieb Henri Verbeet:
Actually, it would probably be helpful to have an overview of how this is all going to work in the end. E.g., how is ddraw_surface7_Flip() going to work with the new setup?
Which part of this complicated function are you interested in? :-)
I've attached the current status of my work, but it's far from complete. The immediate goal is to make swapchain_blit work with wined3d_surface_blt (patch 13). Yeah, I realize I don't need most of the previous 12 patches for that technically.
The current code handles flip in the ddraw and d3d9 version by swapping the GL textures, invalidates all other locations (could move around sysmem as well, but didn't bother yet) and unloads the resource to remove the textures from the FBO cache. The same thing is currently done in flip_surface() in surface.c Especially the FBO cache handling is ugly.
Patches 15-17 give some idea how I plan ddraw overlays to work. I used the d3d9 software cursor to experiment with this, but I don't think we want to handle the software cursor in the way patch 15 handles it. It's matching the native behavior, but GL vsync causes major performance problems when updating the SW cursor and patch 17 doesn't really fix this.
As you can see in patch 18-20 I hit a wall while trying to eliminate the ddraw shadow frontbuffer. I think I first have to replace the swapchain destroy and recreate in SetCooperativeLevel with a _Reset call, and I'm sure there are many other issues. As such I haven't even bothered yet with the flip target parameter for surface_flip().