Closed Deus-nsf closed 3 years ago
Some of the things you're requesting are already possible using the DXVK config file. https://github.com/doitsujin/dxvk/blob/master/dxvk.conf
driver level overrides for AF
# d3d11.samplerAnisotropy = -1
# d3d9.samplerAnisotropy = -1
Keep in mind that this can cause issues.
pre-rendered frames / ultra low latency for example.
# dxgi.maxFrameRate = 0
# d3d9.maxFrameRate = 0
antialiasing
You can force MSAA for d3d9 games using # d3d9.forceSwapchainMSAA = -1
. MSAA is fundamentally incompatible with the way most games work though.
Oh! I had no idea sorry, I've been experimenting with DXVK for a couple of weeks but just quickly read through the readme. I'll try this as soon as possible thanks a lot!
Maybe that could be worth mentioning in the readme (or maybe I missed it too sorry if that's the case).
Anyways, that's really great and I'll definitely give it a try :)
I have a technical question though, when you enable d3d9.forceSwapchainMSAA for example, does it use a Vulkan feature? Or does it allow the GPU driver to take control of this particular part of the rendering?
Not sure what you mean, of course it's using a Vulkan feature and that Vulkan feature is implemented in the GPU driver.
For example there are several ways to control MSAA in nvidia's control panel, edge anti aliasing, transparency multisampling, transparency supersampling, etc... the d3d9.forceSwapchainMSAA will only allow edge smooth style of AA or everything MSAA related supported by the GPU driver?
Just regular edge anti aliasing.
That's just me being greedy thanks for clarifying this! I suppose D3D9 MSAA transparency supersampling support is not in the priority list as there might be much more important things to consider first :D
So, I've been trying all those things, everything works very well, MSAA is broken in STALKER but thats because the game's implementation wasn't finished back in the days.
However it is super impressive how on Windows, even if DXVK isn't the intended platform, the framerate jumps from 190 in DX9 to 230 FPS in Vulkan (the gap can be even more in CPU bottlenecked areas), your framerate limiter is also a godsend, at 140 FPS on 144 Hz with Vsync off Adaptive Sync is rock solid stable with no stutter or tearing whatsoever and the inputlag is nowhere to be seen (and I am very inputlag sensitive), this is extremely good stuff.
On Linux it's more like 200 FPS on the same savefile and game config, probably a bit of performance loss because of the obligatory Proton layer (Wine's fault, most certainely), but still very impressive nontheless.
Thinking of antialiasing, I wonder if Vulkan supports a good old brute force SSAAx4 method of supersampling (4 pixels to 1), that maybe doesn't require specific game implementation. One would just increase the game's resolution and downsample, but on some games that makes the HUD unreadable, a necessary evil probably.
Thinking of antialiasing, I wonder if Vulkan supports a good old brute force SSAAx4 method of supersampling (4 pixels to 1), that maybe doesn't require specific game implementation. One would just increase the game's resolution and downsample, but on some games that makes the HUD unreadable, a necessary evil probably.
You can try rendering the game at higher resolution and scale it down, on Windows with GeDoSaTo and on Linux with gamescope. :)
I'm sorry for creating an issue for a feature request, I wanted to do it on Valve Proton's github but since this is Vulkan specific I'd rather do it here.
As probably many knows, one of the biggest drawbacks of Vulkan (even in modern native implementations) is that the GPU driver has no control whatsoever on some aspects of the rendering, meaning if the developer didn't implement ingame options for altering texture filtering quality, antialiasing, or the render queue latency, there is no way the user can improve this, as opposed to OpenGL and all DirectX versions except 12, which will support GPU driver level overrides for AF, various forms of antialiasing, or pre-rendered frames / ultra low latency for example.
This is a huge problem that affects all Vulkan games even on Windows!
For example in games like STALKER Shadow of Chernobyl, the engine has a problem that creates massive stutters around campfires and dense vegetation, that can be easily avoided in DX9 by enabling low latency / render queue reductions in both AMD and Nvidia control panels, same goes for anti aliasing, which does not work in DX9 from the game's options but does work extremely well from the GPU drivers.
This was just one game but the problem can be observed for an insane number of games, especially for texture filtering!
I know this is asking a lot... but if it would be possible to have entry points in Vulkan's DXVK implementation, with environment variables to control and force some aspects like texture filtering or render queue latency (MSAA/SSAA options might be too hard/specific, though I'd love it too), it would be a huge improvement and make the linux experience on par or event better than what windows is offering.
Thank you for reading this.