goatcorp / FFXIVQuickLauncher

Custom launcher for FFXIV
https://goatcorp.github.io/
GNU General Public License v3.0
2.79k stars 325 forks source link

dxvk_async and recent DXVK versions #1099

Open orowith2os opened 2 years ago

orowith2os commented 2 years ago

DXVK Master can now partially render during loading screens, which it used to not be able to. Mesa still needs to implement the features required, but the NVIDIA drivers already have it implemented, and it seems to work about the same as dxvk_async.

What's the plan for when Mesa works with the new features in DXVK? It's not possible to compile with both the async patch and the graphics pipeline stuff without disabling one or the other.

Would the checkbox be used to override the DirectX dll files inside of the prefix, depending on whether or not the user chooses async or not? Or would the DXVK ASYNC checkbox be removed completely?

marzent commented 2 years ago

DXVK Master can now partially render during loading screens, which it used to not be able to.

Lol it still can’t render any more or less during loading screens than it used to… Maybe you are thinking of the work that has gone into improving shader compilation speed.

Mesa still needs to implement the features required, but the NVIDIA drivers already have it implemented, and it seems to work about the same as dxvk_async.

It does not work the same, on master the render thread is still blocked until the shader is compiled, whereas with async shader compilation happens on a separate thread without blocking anything. There is no reason you can’t have both.

What's the plan for when Mesa works with the new features in DXVK? It's not possible to compile with both the async patch and the graphics pipeline stuff without disabling one or the other.

What makes you say that; it used to work on master until 3 days ago up until with https://github.com/doitsujin/dxvk/commit/ab1d629961c7902d1171f6c6fc08ad275b47058d

Surprisingly big changes to the graphics pipeline create issues with applying the async patch and building dxvk with it, give the maintainer some time to adjust it.

Would the checkbox be used to override the DirectX dll files inside of the prefix, depending on whether or not the user chooses async or not? Or would the DXVK ASYNC checkbox be removed completely?

I don’t understand the issue here, all the checkbox does is set an environment variable, so it doesn’t hurt anyone if it is set with a dxvk version that does not support async (in fact you can use any custom dxvk by just replacing the dxvk files inside the xlcore CompatibilityTools folder) Also this concerns a dxvk version that is not even released yet, how about just waiting until dxvk 11.0 and then re-evaluating the necessary settings options…

orowith2os commented 2 years ago

I'm going off of what I've heard from people that work with dxvk, and I'm fairly certain that I have it correct. And yeah, it probably isn't worth worrying about right now, but maybe worth considering, since judging from what I've heard it performs about the same as dxvk-async, just with a small bit of stuttering when it finished the cache.

orowith2os commented 2 years ago

Alright, as I now have more time to look into it:

It uses something called "graphics pipeline library" to improve the shader compiling, seemingly rendering partial shaders. https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_graphics_pipeline_library.html

It does set an environment variable, of which will not function if the dxvk version does not have the async patch. This would make the checkbox useless, unless it were to redirect to a version of DXVK that does have the async patch applied.

And, judging from what the async maintainer has told me, you CAN NOT have both of them applied at the same time; only one or the other. You would need to ship two different sets of dxvk.