VRR works just fine on Linux with multiple GPUs; I do have a setup with a 6900XT + RTX 4070.
I really don't think it's in the scope of this project to work around this, we'd need to rewrite our swapchain implementation to support presenting on a dedicated Vulkan device (or straight-up use D3D12 for it) and then do all sorts of magic to keep frame pacing reasonably consistent with the app, but this should really just... work, and given that it does on Linux/Wayland I strongly doubt it's worth the effort.
Yeah totally fair, this is very very niche! I may have the opportunity to try mixed GPU vendor soon as well, AMD primary and Nvidia secondary / output, maybe it will be better? I know AMD implements Vulkan stuff in a different way on Windows, I'll keep you informed if I get the chance to try this :)
Unless you have a dual boot with a Windows partition yourself? Not to try to fix it but just to see if AMD + Nvidia dodges the issue maybe?
doesn't matter if I'm set to Vulkan native or layered on DXGI swapchain in the driver
Just a quick reminder, if you configure DXGI swapchain just in Nvidia ctrl panel only, then it won't work with DXVK. See https://www.pcgamingwiki.com/wiki/Nvidia_Profile_Inspector#Layer_Vulkan.2FOpenGL_on_DXGI_swapchain
You may use https://github.com/GameTechDev/PresentMon to check whether it's on DXGI swapchain or native vulkan.
doesn't matter if I'm set to Vulkan native or layered on DXGI swapchain in the driver
Just a quick reminder, if you configure DXGI swapchain just in Nvidia ctrl panel only, then it won't work with DXVK. See https://www.pcgamingwiki.com/wiki/Nvidia_Profile_Inspector#Layer_Vulkan.2FOpenGL_on_DXGI_swapchain You may use https://github.com/GameTechDev/PresentMon to check whether it's on DXGI swapchain or native vulkan.
I had absolutely no idea! I'll be trying that right now and edit my comment to give you a feedback!
EDIT: IT WORKS!!!! EVEN WITH FSE!
I have no idea how anyone found that flag, I suspect it's an Nvidia engineer, I see no other possibilities, it's beyond amazing and this solution needs to be preached to everyone!
Okay, this can be closed now!
I guess other configurations could be interesting to test however, like AMD main + Nvidia as output, I believe you said you have that @doitsujin ? (I mean you do but with the Nvidia card as output maybe not)
If you can find a moment at some point to try it out on Windows, to see if the trick holds when AMD is the primary GPU (aka high performance) and Nvidia secondary (aka power saving) and output.
Pretty simple, just seeing if the allowFSE flag works should be enough.
Good to hear it solved the problem.
So this issue is apparently another issue on Windows native Vulkan backend. The native backend on Windows lacks tons of modern feature and Microsoft apparently doesn't want to pay any attention to improve it. So there's little that dxvk can do to improve it. Implementing dxgi swapchain should resolve it, but it's really a huge project as it may bring tons of conflict as dxvk has its own dxgi translation.
Maybe I can do some more test on Nvidia+Intel environment, if I can get my VRR monitor work on direct DP connection instead of displaylink currently.
Maybe they fixed that on Windows 11 (doubt it but you never know) since I'm on 10.
No need to work on an in house solution, if there's an external one, even obscure, it's more than enough :)
Just hope it holds with other vendors yeah.
If not, maybe there's an obscure Windows registry Dword to set lol.
I can confirm Windows 11 has nothing improvement on native Vulkan backend. DXGI swapchain backend did received some improvement for windowed game (mainly for Unity, as only Unity uses fake fullscreen by default)
Nvidia implements lots of black magic in the driver actually, which may due to RTX remix is using dxvk. I heard AMD has something similar that can raise Vulkan to DXGI but I'm not AMD user I cannot confirm. I can confirm Intel currently has nothing for these things.
The native backend on Windows lacks tons of modern feature and Microsoft apparently doesn't want to pay any attention to improve it
Vulkan isn't a part of Windows so Microsoft can't really do anything about it, it's all up to GPU vendors and how they implement their Vulkan driver.
Nothing extracted yet.
I unfortunately can't try it on Linux as my Debian partition is bricked due to some driver shenanigans (will have to completely format it)
But the idea, is that I'm doing a little trick on Windows to use a secondary GPU to offload the destop windows manager and some other things (saves quite a bit of VRAM and else), it's also very useful for 3rd party software like Lossless Scaling to offload the frame generation on the weaker second card which serves as output.
The issue I'm having, is that for some reason, (doesn't matter if I'm set to Vulkan native or layered on DXGI swapchain in the driver), unless I manually set the weaker secondary card that serves as video output in the dxvk.conf file (dxvk.deviceFilter = "4060" in my case), then VRR cannot work, and setting allowFSE to True doesn't do anything either.
Maybe this affects Linux as well, there's no fullscreen exclusive on any Linux distro but I'm not sure about VRR.
Both GPUs are Nvidia, I tried older DXVK versions just in case and it's the same behavior.
Hard to replicate, as not many people have dual GPU setups today, but maybe with an iGPU passtrough this can be easily replicated (my CPU doesn't have one though).
Oh I should precise that, I'm using Windows 10 latest release build, drivers are 572.16, and the issue I'm describing on Windows only affects DXVK, all other APIs are fine.