http://bugs.winehq.org/show_bug.cgi?id=11674
Norbert Lataille nonal@freesurf.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |nonal@freesurf.fr
--- Comment #20 from Norbert Lataille nonal@freesurf.fr 2009-05-27 05:05:40 --- Hi,
As mentioned by may people here, WoW starts multiple threads but most of them are not doing a lot (offloading network, sound, some struct updates). When using GL engine, you have mainly one thread - CPU limited - and multiple others idle threads doing sideband things.
That's a game design limitation (I have not checked DX engine to see if it does graphics work with more threads - will do). But basically wine is not guilty here.
However, following some oprofiles and RDTSC traces, I tested some things in wine code to help FPS performance.
a/ Local optimizations in wine libs: timezone code cleaning (17 million cycles per tz conversion !), Event/Semaphore speed improvement (done through SHM), etc... => This brings some FPS to the game, but is not the main limiting factor
b/ Threading in opengl.dll.so Using NV drivers, I can see these are not threaded on Linux. Basically some runs show : 65% in the game, 35% in libGL.so
What I have done is to thread opengl.dll.so driver, ie still using one gl context, but the thread calling libGL is no longer the game one (basically this is serializing non-sync GL calls).
Preliminary tests have shown a quite interesting FPS improvement (remember seeing x3 once in raid 25 conditions), but all of this is quite experimental, and is not ready for general use.