Regression in wined3d: Add read_from_framebuffer_texture which combines code from read_from_framebuffer (drawpixels) and LoadLocation.

Markus kde at graph-ix.net
Fri May 23 18:55:48 CDT 2008


Hi,

after investigating reports for the game 'World in Conflict', I identified the 
following patch to cause the game graphics to freeze (ambient sounds are 
still played though):

----
ba90a740beb9ce9a839cc843db8d87f5a37becdd is first bad commit
commit ba90a740beb9ce9a839cc843db8d87f5a37becdd
Author: Roderick Colenbrander <thunderbird2k at gmx.net>
Date:   Sun Feb 10 22:20:15 2008 +0100

    wined3d: Add read_from_framebuffer_texture which combines code from 
read_from_framebuffer (drawpixels) and LoadLocation.

    This makes the code easier to read and the pieces borrowed from
    read_from_framebuffer are more correct than the code in LoadLocation.

:040000 040000 74e4bdc73e367c8f38cd3d0818df0fc86eb788bf 
3e54409be7c9d2964efbf3d3c2f3d3b84a267047 M      dlls
----

The freezes only seem to occur if the native (Windows) dxdiagn.dll is used, as 
it lets the game properly detect the graphics card and thus enables 
additional graphics options (highend shaders, high-res textures, etc.). 
Apparently the freeze is only triggered with these options active.

The game uses events in its drawing code and ("always") hangs after the 
following output:
fixme:d3d9:D3DPERF_BeginEvent (color 0xffffffff, name L"Update verlet 
cloth") : stub
fixme:d3d9:D3DPERF_EndEvent (void) : stub

At one point, it was followed by this error:
err:d3d_surface:surface_prepare_system_memory Surface without memory or pbo 
has SFLAG_INSYSMEM set!

The point of the freeze appears to depend on many factors. If I move the 
camera around, it appears to freeze earlier than just letting the game run 
(e.g. a replay of a match). But once the patch is excluded, the game no 
longer freezes.

If more info is needed, please specify how I can obtain it.

-- 
Markus



More information about the wine-devel mailing list