protonscr

[Important Feature Request] Option for multiply the core/thread count dynamically.

dxvkclosed wontfix
doitsujin/dxvk#3416 · opened 2023-05-13 by ghost · updated 2023-06-15 · 2 comments · github
?ghost 2023-05-13 github

Hello devs, I wish to have an option like "dxvk.multiplyCompilerThreads" for better flexibility in term of configuration for "dxvk.conf".
I tested the "dxvk.numCompilerThreads" with default value for an Core 2 Duo (E8200), Core 2 Quad (Q8400) and i5-2400 with GT 730 and then with GT 1030, but when I set the "dxvk.numCompilerThreads" like 4 for E8200 and 8 for Q8400 and i5-2400, I see an increase of performance like 5% to 10% for all games (League of Legends, Star Conflict, TerraTech, Warframe) and synthetic benchmarks (Superposition, Valley, Heaven and legacy ones) I tested and for Star Conflict is important every bit of performance boost because the game engine is quite bad in term of optimizations, also I did too a fresh restart to see if is the same results.
This feature/option is good if you have an custom "dxvk.conf" and don't want to edit each time for every CPU model if the configuration file is universal or is not set for specific hardware, would be nice to have this option for dynamic adjustment, the option can be by default "dxvk.multiplyCompilerThreads = 1" and will act like 4x1=4 (example for 4 cores, 4 threads) but with this set on "2" will be 4x2=8 (some kind of virtual threads).

PS: I did OC to E8200 and Q8400 much as possible to have performance boost and stability, the results is even better when I multiply by 2 the core/thread count and the increase is like 7%-12% for all tests I did before.

I forgot to mention the tests I made was clean (no app.dxvk-cache, deleted every time before to run the games/benchmarks) and with app.dxvk-cache the FPS boost seems to be 10% for OC and 8% for stock.

Thanks anticipated for great and hard work with this project, and I hope my time/resources spent in the tests are appreciated as a support for this project in trying and testing to discover new opportunities and features could be made and simple to implement.

BBlisto91 2023-05-13 github

The config only relates to compiling of shaders. It does not give an performance improvement outside of reducing stutter / higher compile speed when that is happening. So once they are compiled it should be the same.

Tho on old low core CPU's background shader compilation might compete a bit with threads the game uses for itself while background compilation is happening. I'll let the devs comment on that part as i am unsure.

Ddoitsujin maintainer 2023-05-13 github

I see an increase of performance like 5% to 10% for all games

This has to be 100% placebo.

When no pipelines are being compiled, all those threads are doing literally nothing, so if that actually affects performance for you in any way whatsoever then your operating system is completely broken.

I guess it may speed up shader compilation in some cases since not all threads are used for background compiles and instead are reserved for high-priority work, but increasing the background thread count beyond what your CPU can actually work on simultaneously will introduce performance issues when new pipelines are actually being compiled during gameplay.

Anyway, I don't really see a point in adding this. Most users don't swap out their CPUs every five minutes and balancing rendering work with slow background processing on 15-year old dual-core CPUs isn't exactly a priority for us either.

Nothing extracted yet.