protonscr

DXVK VR performance troubleshooting

dxvkclosed wontfixperformancevr
doitsujin/dxvk#1503 · opened 2020-03-10 by JulianGro · updated 2022-08-28 · 4 comments · github
JJulianGro 2020-03-10 github

Hello,

I have been troubleshooting the low VRChat performance for a bit and noticed a weird issue.
When running in desktop mode with DXVK performance is great on 1440p. We are talking >100fps in full worlds with mirrors and >300 fps in empty ones.
When running in vr mode however performance doesn't look so good. Changing the resolution has no impact whatsoever (as long as it doesn't exceed memory). Framerate is stuck between 60 and 70 fps. Unfortunately using actual VR doesn't work with DXVK on windows for me, so I cannot test the performance any more. These numbers are very similar to what I encounter on linux as well though.
It feels as if the framerate was capped by something, but it is fluctuating between 60 and 70 fps and VRChat doesn't limit the framerate itself in this scenario, SteamVR would either limit it to exactly 60 or to 120 fps, and Vsync is forced of in DXVK config. The nvidia hack is also turned off in the DXVK config.

I would be cool if we could troubleshoot this somehow.

Software information

VRChat

System information

Ddoitsujin maintainer 2020-03-10 github

Note that VR requires everything to be rendered twice, so a very significant drop in CPU-bound performance is to be expected.

Also I don't think VRChat is the pinnacle of game optmization, so there's that, and I'm not sure if I really care about performance in that particular scenario if there's no concrete evidence that DXVK is doing something wrong. SteamVR is also known to be less than ideal with Nvidia GPUs at the moment since it lacks asynchronous reprojection to compensate for lower framerates.

What kind of performance are you getting on Windows without DXVK?

Edit: I guess part of the reason why the perf drop can be >50% is because submitting the VR images requires the rendering thread to wait until all work has completed on DXVK's own worker threads, and therefore serializes a significant amount of work. This cannot be fixed, and delaying the image submission would introduce latency that could be detrimental to the VR experience.

TL;DR DXVK (DX11) basically has no further headroom for optimization.

JJulianGro 2020-03-11 github

Without DXVK, the framerate is at the constant frametarget of 144fps in the same scenario on vr. So we are talking not even half the framerate on DXVK compared to just DX11, which feels weird as I get close to native performance on most game without vr. On VRChat desktop mode I cannot even see any higher performance on DX11 as oppose to DXVK. They are so close together that this is basically margin of error.

Ddoitsujin maintainer 2020-03-11 github

While that's weird, I don't think there's much I can do to improve this. As mentioned, DXVK doesn't have much optimization headroom left, and it would be a miracle if we managed to squeeze out even 5% out of it at this point. Doubling performance is completely impossible, and yes, Nvidia's native implementation is known to be significantly faster.

Especially since I have absolutely no way at all to debug this at the moment, and knowing how bad VRChat performs for pretty much everyone in practice, also no interest. Other VR games like Beat Saber tend to perform well.

You could try looking at perf top to see if there's anything sketchy going on on the Linux side of things, but other than that I simply cannot help with this.

TTomcatt 2022-08-28 github

So there will not be any VR support then.

I think you have something great here. Running your DXVK in windows for Elite looks good. (In the end, I'll set up a gaming rig for Linux.)

Nothing extracted yet.