https://bugs.winehq.org/show_bug.cgi?id=49636
Bug ID: 49636 Summary: Wine does not fill in Vulkan device LUID for more than 1 GPU Product: Wine Version: 5.13 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: winevulkan Assignee: wine-bugs@winehq.org Reporter: sashok.olen@gmail.com Distribution: Mint
Created attachment 67829 --> https://bugs.winehq.org/attachment.cgi?id=67829 vulkan_tests_results
Hi. When running the Wine's Vulkan test, I've encountered some failures when running on a machine with dual graphics. They appear to be caused by Wine not filling device LUIDs for the discrete GPU, only the primary integrated (Intel) one. This happens even if you set preference for the discrete GPU and filter out other GPUs with some envars (__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only). This causes an issue in World War Z, as it requires device LUID to be filled, and falls back to its inferior DX11 renderer if the LUID is zero-ed out. I've attached a text file with output from the vulkan test running with different combinations of these filtering envars and with none of them. I should note that this is not related to bug 49631, these tests were done on a different machine and during the tests for this bug report virtual desktop was disabled.
https://bugs.winehq.org/show_bug.cgi?id=49636
Alexandr Oleynikov sashok.olen@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |zzhang@codeweavers.com
https://bugs.winehq.org/show_bug.cgi?id=49636
Alexandr Oleynikov sashok.olen@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |loothelion@nvidia.com
https://bugs.winehq.org/show_bug.cgi?id=49636
Zhiyi Zhang zzhang@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever confirmed|0 |1
--- Comment #1 from Zhiyi Zhang zzhang@codeweavers.com --- Currently Wine uses RandR outputs to correlate Vulkan displays and find their corresponding GPUs, see dlls/winex11.drv/xrandr.c#get_gpu_properties_from_vulkan(). I guess on a Nvidia prime setup, only the integrated GPU is actually driving RandR outputs so Wine can't find the corresponding discrete GPU from its XRandR provider.
For the moment you can try to use the discrete GPU to drive X. See https://rpmfusion.org/Howto/Optimus#NVIDIA PrimaryGPU Support. I don't have a such a setup so I didn't try it.
https://bugs.winehq.org/show_bug.cgi?id=49636
Brendan Shanks bshanks@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |bshanks@codeweavers.com
https://bugs.winehq.org/show_bug.cgi?id=49636
Leopard yurnerolinux@yandex.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |yurnerolinux@yandex.com
--- Comment #2 from Leopard yurnerolinux@yandex.com --- (In reply to Zhiyi Zhang from comment #1)
Currently Wine uses RandR outputs to correlate Vulkan displays and find their corresponding GPUs, see dlls/winex11.drv/xrandr.c#get_gpu_properties_from_vulkan(). I guess on a Nvidia prime setup, only the integrated GPU is actually driving RandR outputs so Wine can't find the corresponding discrete GPU from its XRandR provider.
For the moment you can try to use the discrete GPU to drive X. See https://rpmfusion.org/Howto/Optimus#NVIDIA PrimaryGPU Support. I don't have a such a setup so I didn't try it.
Sadly Nvidia only mode also yields to same result. Which is likely due to how these setups works and igpu handles the presentation to screen despite rendering entirely done on dgpu. So lack of support for such systems on Wine block World War Z from selecting Vulkan renderer and iirc blocks Red Dead Redemption 2 to run also.