https://bugs.winehq.org/show_bug.cgi?id=26617
--- Comment #34 from Paul Gofman gofmanp@gmail.com --- (In reply to mo78 from comment #33)
Why it can't go upstream?
See https://bugs.winehq.org/show_bug.cgi?id=34266#c6.
The performance impact of a generic patch like this is disastrous, I can imagine 5-10 times drop in shader performance. It is not an option to consider. There are less invasive approaches, like avoiding infinity in 1/x, 1/sqrt(x) functions, but these are:
- not universal, it will help some games suffering from this problem, but won't help some other; - can cause bugs in the other games; - still affect performance.
Unfortunately we can't expect this problem to be solved through d3d9 to Vulkan translation also, Vulkan math (and Microsoft d3d10+) follow IEEE fp conventions like opengl.
So for now such patch like this can probably only appear as an app specific hack in special builds. I am not sure, maybe we can discuss if some hack like this can be considered for Staging as configurable option, at least to give a way to diagnose this easily. Yet I am not sure I would want to suggest to add such a registry key, people will leave it on just in case in recycled Wine prefixes and then report terrible performance. Don't know, maybe through the environment variable, so it couldn't be set persistent for Wine prefix.