Hi everybody.
After updating WINE to from 0.9.49 to 0.9.50 I noticed major slowdown in Company of Heroes, to the point that I get like 1 Frame every 2 seconds. Wine spams the console with:
fixme:d3d_shader:IWineD3DVertexShaderImpl_CompileShader Vertexshader 0x4d20b78 recompiled more than 50 times
Trying to find out the cause for the slowdown I did my first attempt at using git bisect and I could trace the slowdown to this patch:
959212304dfaf0e7459374593b20b74fe22a0b57 is first bad commit commit 959212304dfaf0e7459374593b20b74fe22a0b57 Author: Stefan Dösinger stefan@codeweavers.com Date: Tue Nov 20 21:14:10 2007 +0100
wined3d: Track vertex declaration changes on vertex shaders.
If an attribute has type D3DDECLTYPE_D3DCOLOR, the red and blue channels are swizzled in the shader. Since the attribute is stored in the vertex declaration and not the vertex shader, it can change by setting a new vertex declaration. If this happens, we have to recompile the shader with the swizzling of that specific attribute turned on or off.
:040000 040000 327661a4d0f8a02bdc18380084589c891b64af9c e35a2bcbf9514e4f261d8b7a93dcb24c0b3c89a7 M dlls
Now without that patch there is slight texture corruption in the game, with the patch it's much much less but it renders the game unplayable. The reason I didn't file a bug report is that I am not sure if it is really a bug or not since obviously the patch fixes in-game texture corruption.
Regards, Gilles