GPUOpen-Drivers / AMDVLK

AMD Open Source Driver For Vulkan
MIT License
1.69k stars 160 forks source link

Neos VR unplayable even if RADV is forced #331

Open purplebar0 opened 11 months ago

purplebar0 commented 11 months ago

First off, the game only renders properly with RADV, while AMDVLK and AMDGPU-PRO split the VR framebuffer into a garbled mess of squares. This is an issue, but the bigger issue is that, presumably due to AMDVLK's Vulkan driver switching logic, forcing RADV does not help either.

Setting AMD_VULKAN_ICD=RADV (forcing Mesa RADV) makes the game render properly, however the VR HMD receives no framebuffer from the game if Steam is running, and if it isn't running, the game stops rendering on the HMD as soon as SteamVR Dashboard is brought up.

Artix Linux. The Linux build of the game was tested with SteamVR beta and SteamVR 1.14 on RX 6600 XT. The tested headset is SteamVR-native Valve Index.


Additional note to testers: SteamVR itself also requires RADV to be forced in order to avoid stuttering and artifacts, other games I tested do work this way (Half-Life: Alyx, Boneworks work perfectly if SteamVR uses RADV and the games use AMDVLK).

purplebar0 commented 11 months ago

Workaround: Set these variables to /etc/environment so that RADV becomes default and AMD_VULKAN_ICD is ignored:

DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1
VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.i686.json:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json

Use this to force AMDVLK for games that work properly with it:

VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/amd_icd32.json:/usr/share/vulkan/icd.d/amd_icd64.json

The culprit is AMD_VULKAN_ICD. Something about it is buggy, and even setting it to RADV causes issues.