-
Notifications
You must be signed in to change notification settings - Fork 776
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[regression] WoW WotLK Classic ~30% less performance since 83a2942 #3632
Comments
That sounds very odd. Can you send a screenshot from good and bad commit with |
What is your setup like. Do you have multiple GPU's or monitors? |
I only have one GPU and one monitor. What I can report of interesting is that my 3080 is listed twice in the in-game GPU selection menu (it's always been like this): And if I enable DXVK_NVAPI, it correctly detects there's only one GPU, but for some reason reports it as low power: This behavior is shared by both good and bad commits. Enabling/Disabling DXVK_NVAPI does not affect performance at all. I'll look at the wine logs if I find something interesting there too. |
Edit: Actually before the above as i don't know how annoying that would be with this game. If you could post the Wine log when run with |
Sorry for the delay, here are the requested logs: |
Thank you for the logs. |
As I was using the flatpak version of both Steam and Bottles so it required a bit more steps to share the install directory between them (details below), but I can confirm it also happens on a regular Proton Experimental using a fresh prefix, here are the logs: I had to launch Steam with |
Either way, it's pretty clear that the performance regression is the symptom of another issue elsewhere, since games should not query your monitor setup every single frame. The commit in question slowing this down is expected, but the whole thing shouldn't be happening in the first place. |
It sure shouldn't happen, but it unfortunately does happen. Would a workaround for this kind of situation be conceivable? Looking at the commit, it seems the change were made for systems possessing an iGPU, could the old behavior be restored for systems who don't? |
That doesn't fix the underlying issue. |
It doesn't, but if the underlying issue is on the Blizzard side of things there's not much else that can be done I assume. Either way it would solve the performance impact, which seems like an acceptable trade-off. |
It also helped multi driver systems like amdvlk + radv. RE Engine games could freak out quite alot prior to it on multi GPU and driver systems. I don't have any technical insight here mind you. Wonder if flatpak can affect it somehow. |
@koplo199 Sorry for the chasing back and forth here. Could you also provide logs from the commit prior to the offending one like in your opening post, but with |
@Blisto91 Sure, here are the new logs: Bonus, running gl-sync-demo on the host is able to flip normally... EDIT:
Final edit: The |
Reminder that the decision whether to flip or not on presentation depends on interactions between your compositor and your graphics driver, DXVK has no agency over that whatsoever. |
@koplo199 So i can myself reproduce a big perf drop when i change my vendor id to not match my GPU vendor (AMD). |
@Blisto91 Sure, here are the logs using Note: the |
It would be most interesting to see how that goes with Proton without anything custom (possibly PROTON_ENABLE_NVAPI=1). That is, e. g. , without flatpak which is not a supported Proton configuration. Thing is, as this (afaik) is not the issue for everyone, so probably something should be triggering that in specific configuration. |
@gofman I tried using with a fresh, regular (non-flatpak) steam and I confirm it also happens in this configuration. Here are the logs using This time, I did not symlinked the Program Files folder, I reinstalled everything from scratch. Please tell me if you need complementary logs/informations, I'll keep this setup installed in the meantime. |
I might have an interesting new information: it seems WoW never attempts to load nvapi librairies on Linux. It is hinted in-game by the message Maybe WoW relies on |
Thanks for the interesting find. So it looks like that the game is somewhat broken on Wine specific path, on which path it requeries dxgi output config each frame with Nvidia. This is not too much performant before the blamed commit as well, nor on Windows, although output enumeration became much slower with the blamed commit. I think mostly because in the current Proton (and in Wine before commit c2c9112bf8896d49a6af1ca1f73e563c5a7f909c) QueryDisplayConfig is much slower than EnumDisplayMonitors which was used before. Unfortunately the referenced commit caused massive regressions (not the direct commit fault, it triggered a lot of pre-existing issues). Those issues are believed to be fixed in Wine upstream now but that's a lot of sensitive changes which we cannot pull to Proton at once (also given that properly behaving games which avoid costly display config re-evaluation each frame don't suffer from this). So I hope that it will be greatly improved once we get c2c9112bf8896d49a6af1ca1f73e563c5a7f909c and followups in Proton. Before that, if it is possible to check with upstream Wine + dxvk, it would be interesting if the issue is not there (or there to much less extent). Also maybe a temporary workaround using WINE_HIDE_NVIDIA_GPU=1 (instead of PROTON_ENABLE_NVAPI) will help. |
On that specific note. Interestingly i get the same "Low Power" marker on my main GPU when i spoof another vendor id than the one i have. |
@koplo199 Could you when you have time test this Proton build in Steam with and without nvapi enabled to see if it makes a difference? Just need to check something. https://drive.proton.me/urls/ANJ8ACCZA8#4g9qbdLUTpq1 Edit: For flatpak i gather the path might be |
I can confirm that I'm affected by this regression as well, for me it went from ~300fps in dxvk 2.2 to ~60fps with dxvk 2.3 I retract my statement pending further notice. wine version seems to have a big impact, too OK downgrading to 2.2 made it even worse, in that case I only had 12fps where I before had over 700 Tested with both wine 8 and 7, same results basically (wine 7 was slightly worse than wine 8) Quality settings / render scale make no difference, my GPU is pinned at 30% utilization with or without vsync and in performance state P3 (P0 would be 3D performance state) |
Are you sure this is the same issue? I'm a bit confused if you are saying this started in 2.2 or 2.3. The commit written about here was introduced in 2.2. |
I would, but dxvk doesn't write logs despite having log level set to debug and log path set to a universally writable directory Either way it doesn't get my GPU into P0 performance/3D mode, and neither my CPU nor my GPU show more than 30% of utilization (no core higher than 30% on the CPU) (GPU is RTX 3080 like OP and CPU is a 5950X) Is there some d3d call that turns the current window into a 3D context or something like that? No idea. (non-demanding scene) Same scene but with 2.1 Edit: the bottom screenshot tops out at 240 fps, because it's set to vsync, that's normal. with uncapped fps the behaviour in dxvk 2.2/2.3 is identical, while I get to 400-600 fps in this scene in dxvk 2.1 Since the issue links to a commit related to monitor enumeration as possible issue, I'll just add my monitor setup, which is probably doesn't mean much, but eh. FPS I get with 2.2(Lutris) and 2.3(Latest Git Commit) is ~63FPS with Wine-ge 8. |
@koplo199 With the build found here https://github.com/doitsujin/dxvk/actions/runs/6467734807 would you be able to verify that launching with |
@Blisto91 I confirm that using that build (alongside (And sorry I missed your previous comment about a test with a particular Proton build, I was able to test it now on a regular Steam installation and for what it's worth it didn't seem to change anything) Does it mean the workaround can now be added to config.cpp for World of Warcraft? If so, the executable names are |
We are a bit weary of adding it built in for every game as it has the potential of breaking some games in multi monitor or multi GPU setups. |
Understandable, I just want to add that from my last testings the performance drop was really significative: ~50 FPS without the workaround and ~100 FPS with it activated. It was still very much playable, but that's with a 3080 at ~1440p; for some users it might cross the boundary between playable and unplayable, so I really don't know what would be the best option here. As the regression seems to mainly affect NVIDIA cards, could it be activated for World of Wacraft by default if an NVIDIA card is detected (or with an Intel/AMD card if their |
No need to add it for every game, just for World of Warcraft
I have AMD card and don't use |
@koplo199 Try use my settings https://gist.github.com/Milor123/351517ec9741786b910f874826943975 |
As said above the config |
@koplo199 @insunaa @kerriganx Are you able to verify that this is no longer an issue without the config when using the new Proton 9.0 beta or Experimental? |
@koplo199 @insunaa @kerriganx Friendly double ping. I checked it out with my new Nvidia GPU and it seemed fine with Proton 9 |
Sorry for the delay, I was/am unable to test but there's no reason to believe it isn't fixed by Proton 9. Many thanks to everyone involved in the resolution of the issue! |
Using DXVK 2.2 seems to have pretty big perfomance regression (~25/30%) for WotLK Classic, doing a git bisect give the following commit as a culprit: 83a2942.
Compiling using the parent commit (242ac20), or using the
master
branch reverting 83a2942 (and 14eb469 to fix compilation errors) makes it work at the right FPS again.Software information
World of Warcraft: Wrath of the Lich King Classic
Max settings
System information
Log files
Using
DXVK_LOG_LEVEL=debug
andDXVK_LOG_PATH
set appropriately:WoWClassic_dxgi_83a2942.log
WoWClassic_d3d11_83a2942.log
WoWClassic_dxgi_242ac20(parent).log
WoWClassic_d3d11_242ac20(parent).log
The text was updated successfully, but these errors were encountered: