http://bugs.winehq.org/show_bug.cgi?id=22542
--- Comment #4 from Roderick Colenbrander thunderbird2k@gmail.com 2010-05-09 16:42:19 --- (In reply to comment #2)
Created an attachment (id=27839)
--> (http://bugs.winehq.org/attachment.cgi?id=27839) [details]
BAD - console log from wine-1.1.44-19-gd2a0188 +d3d_surface
Confirming, happens wine-1.1.44-19-gd2a0188 and revering the commit cda78c01e62bea533bcfdedee8a68663c67f2050 on top of it makes that problem go a way, i.e. it's correctly bisected.
Adding requested log from wine-1.1.44-19-gd2a0188 aka BAD, followed by the same wine version with reverted commit aka GOOD.
You are as quick as usual ;)
The output of the log is not as informative as I had hoped. Perhaps you can add some printf-like lines to get some more info. Don't worry I will give hints on where to place them.
The surface conversion code is in dlls/wined3d/surface.c around line 4562 (you will see 'if(desc.convert) {'. The end of this block calls 'desc.convert(This->resource.allocatedMemory, mem, pitch, width, height);'. Try to print the values of pitch, outpitch, width and height. Also print the two pointers (allocMemory and mem).
The 'broken' function at some point is 'static void convert_r16g16(const BYTE *src, BYTE *dst, UINT pitch, UINT width, UINT height)' in utils.c (this is the function pointer desc.convert is set to). Play a bit with the function. Perhaps make sure it won't get called (or return at its start).