http://bugs.winehq.org/show_bug.cgi?id=11674
Stefan Dösinger stefan@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stefan@codeweavers.com
--- Comment #260 from Stefan Dösinger stefan@codeweavers.com 2012-12-04 04:10:54 CST --- You mostly noticed this already, but you really have to use WINEDEBUG=-all for benchmarking and playing.
Wine calls glGetError() after every opengl call to report any possible error through ERRs. If you use WINEDEBUG=-all wined3d knows that you won't see those messages and doesn't bother calling glGetError or glCheckFramebufferStatus.
Redirecting stderr to /dev/null has the same effect. Ideally this happens when you launch a game via start menu entries, but in some situations output is redirected to ~/.xsession-errors in that case.
I did some testing myself with Nvidia's threaded optimizations. It seems to be an improvement for apps that just use state changes and draws. My impression is that it doesn't handle buffer uploads properly, and most modern games use dynamic vertex buffers heavily. You may get some performance improvements by commenting out the GL_ARB_map_buffer_range extension in dlls/wined3d/directx.c and maybe GL_ARB_vertex_buffer_object and GL_ARB_pixel_buffer_object as well. This might help in older apps(which run fast enough anyways), in newer apps it seems that there's just too much geometry data to get decent performance without buffer objects.