https://bugs.winehq.org/show_bug.cgi?id=43246
--- Comment #10 from Matteo Bruni matteo.mystral@gmail.com --- (In reply to Henri Verbeet from comment #2)
Created attachment 58717 [details] hack
The issue seems to be that the application uses buffers without D3DUSAGE_DYNAMIC as if they're dynamic. The attached hack fixes the performance for me, but doesn't strike me as correct.
I tested non-dynamic D3DPOOL_DEFAULT buffers on Windows. It looks like there is no "consensus" wrt NOOVERWRITE maps (the flag is ignored on Nvidia but not on AMD) but DISCARD does in fact work as you'd expect, i.e. the second map returns a different memory address from the first and it doesn't block waiting for the buffer to become idle.
I'll probably have a look at the actual game soon.