Stefan Dösinger <stefandoesinger <at> gmx.at> writes:
If you want a hand with OpenGL stuff some more Stefan, I'd be glad to help. We could set up a time to chat/irc off-list or if you want I could see if I can get your existing stuff to work (just send me the diffs).
I'll publish a patch in the next days, I just want to fix S3TC decompression and perhaps get my hands on Diablo 2.
I own Diablo 2... this would be a good reason to dust it off :)
The problem I have with GL ATM is UnlockRect. The current code in WineD3DSurface::UnlockRect doesn't work with a lot of cards / drivers(radeon, fglrx and mesa software rendering fail). glReadPixels and glWritePixels is horribly slow on radeons, it takes 1-4 secounds for an 800x600 image.
I am running fglrx as well, so I could work on getting the performance up on these cards. I also have contacts at ATI, so if there are specific problem I could send feedback directly, and hopefully they can fix things for future releases. Although I'd check glDrawPixels on Windows as well... I suspect it is just as slow there. Also for glDrawPixels you should turn off a lot of the GL state (lighting and stuff that you don't need). That could speed things up a bit.
So what I need is an UnlockRect code for render targets that doesn't use glDrawPixels. I have written a code that replaces ReadPixels with copying the render target to a texture and reading back the texture, this works much better. I tried to write an UnlockRect code that loads a temporary texture and Draws a textured quad, but the quad had the solid color of the first pixel.
Sounds like it shouldn't be too difficult OpenGL problem. There are a lot of commands related to texturing, so it is quite easy to muck things up. I looked at the code a bit that you posted before, but nothing jumped out at me, although it would be easier if I had the full code to play with.
Thanks for your help :)
No problem, anything that will help accelerate the merge of ddraw/d3d7 into wined3d :)
Regards, Aric