Ok, this seems odd. Two Vulkan devices are reported. For a single NVIDIA graphics card, I’d expect to see only the first device present. This is likely what is causing Proton games to default to software Mesa rendering. Let’s see if any knowledgeable members can interpret this more meaningfully.
Does nvidia_icd.json exist in the /usr/share/vulkan/icd.d/ directory? I did see a suggestion to set the VK_ICD_FILENAMES environment variable with `export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json, (can be added to ~/.profile), but this feels like another workaround to me.
λ ls /usr/share/vulkan/icd.d/
intel_hasvk_icd.i686.json lvp_icd.x86_64.json nvidia_icd.x86_64.json
intel_icd.i686.json nvidia_icd.i686.json radeon_icd.i686.json
I added export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.x86_64.json to my ~/.profile(and later ~/.bashrc, just to be sure) but it didn’t solve anything.
I also tried launching the Steam game with the launch parameter VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.x86_64.json %command%, but it also didn’t solve anything.
Unrelated, but I noticed that in a broken state after reboot, simply querying for the persistence mode (which does say it’s “Enabled”) will “fix” the issue as well:
@daunk then if it’s using llvmpipe that’s a Vulkan device select issue. So you need to see where to set MESA_VK_DEVICE_SELECT="10de:2684" as an environment variable. In Proton (like Steam) there should be an option to set? Else you may need to set system wide via adding that to a /etc/environment file (needs a reboot).
I restarted my computer, and ran Dune: Awakening as an experiment, but Steam decided I needed to rebuild some Vulkan shaders.
The game then launched correctly, without having to use the nvidia-smitrick.
However, after another computer, and when Steam did not run a shader rebuild, the game once again complained about missing DirectX 12.
I’m assuming that Steam rebuilding the shaders will initialize the drivers, just like nvidia-smi.
Simply calling nvidia-smi at startup still works.
So the issue still exists on the newest NVidia driver version.