Hi,
I'll start sending my patches for blitting palettized surfaces with opengl. There are quite a few patches and I won't send them all in one, so this mail shows where I am headed.
Palettized surfaces are in a bad shape right now, both in terms of code quality and functionality. My patches will not fix all issues because this would require a shadow frontbuffer in wined3d, and Henri and I agreed that this should wait until after Wine 1.4. However, my patches fix a number of issues and eliminate a lot of dead code and hacks.
Other work that needs to be done, but is separate from those patches: *) Emulate color keying in the ARBfp fragment pipeline. That way the upload- time color keying conversion can be limited to situations where shaders are not available and the alpha = 0.0 hack in patch 20 removed.
*) Finish the blit infrastructure cleanup. Mainly, get rid of the hardcoded arbfp_blit backend in wined3d_surface_blt, get rid of arbfp_blit_surface and the remains of IWineD3DSurfaceImpl_BltOverride.
*) Investigate if there's any point in P8 blitting with ATIfs and nvrc. The fixed function pipeline replacements would profit from proper 3D color keying, but that only works if we have blitters that can blit without color keying during texture upload.
*) Make overlays work properly again. The overlay tests work, but the d3d7 sdk samples refuse to run for some reason. With the GL ddraw renderer as default we can also look into games like Settlers 3 that use overlays to draw the mouse pointer.
@Henri and Matteo: The difference between this patchset and the one I sent you a few days ago is that my old patchset made onscreen surfaces as a whole a special case, while this one only has special handling for blits to onscreen surfaces. The new way needs less infrastructure changes, works better with palette changes and is a lot closer to how things should work with a shadow frontbuffer in wined3d.
Stefan