ptitSeb / box64

Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64 Linux devices
https://box86.org
MIT License
3.9k stars 288 forks source link

SteamVR OpenXR vulkan failed to find VkPhysicalDevice matching deviceUUID #1261

Open Coreforge opened 9 months ago

Coreforge commented 9 months ago

I've been able to run SteamVR successfully (tracking works fine and I get the default steamvr aurora skybox in the headset), but I'm unable to get any applications to actually submit frames successfully.

hello_xr with the vulkan backend somewhat gracefully exits.

[16:55:56.970][Info   ] Available Layers: (0)
[16:55:57.124][Info   ] Instance RuntimeName=SteamVR/OpenXR RuntimeVersion=2.4.1
[16:55:57.130][Info   ] Available View Configuration Types: (1)
[16:55:57.134][Info   ] Available Environment Blend Mode count : (1)
[16:55:57.134][Info   ] Environment Blend Mode (XR_ENVIRONMENT_BLEND_MODE_OPAQUE) : (Selected)
[16:55:57.143][Warning] No validation layers found in the system, skipping
[gfxrecon] INFO - Initializing GFXReconstruct capture layer
[gfxrecon] INFO -   GFXReconstruct Version 0.9.18-unknown (unknown-build-source)
[gfxrecon] INFO - Recording graphics API capture to gfxrecon_capture_20240211T165557.gfxr
[gfxrecon] INFO -   Vulkan Header Version 1.3.239
[gfxrecon] INFO -   Vulkan Header Version 1.3.239
[16:55:57.224][Info   ] INFO: (INSTANCE 0x3ed87670) linux_read_sorted_physical_devices:
[16:55:57.225][Info   ] INFO: (INSTANCE 0x3ed87670)      Original order:
[16:55:57.225][Info   ] INFO: (INSTANCE 0x3ed87670)            [0] AMD Radeon RX 460 Graphics (RADV POLARIS11)
[16:55:57.225][Info   ] INFO: (INSTANCE 0x3ed87670)      Sorted order:
[16:55:57.226][Info   ] INFO: (INSTANCE 0x3ed87670)            [0] AMD Radeon RX 460 Graphics (RADV POLARIS11)  
[16:55:57.226][Info   ] INFO: (INSTANCE 0x3ed87670) linux_read_sorted_physical_devices:
[16:55:57.226][Info   ] INFO: (INSTANCE 0x3ed87670)      Original order:
[16:55:57.226][Info   ] INFO: (INSTANCE 0x3ed87670)            [0] AMD Radeon RX 460 Graphics (RADV POLARIS11)
[16:55:57.226][Info   ] INFO: (INSTANCE 0x3ed87670)      Sorted order:
[16:55:57.226][Info   ] INFO: (INSTANCE 0x3ed87670)            [0] AMD Radeon RX 460 Graphics (RADV POLARIS11)  
[16:55:57.229][Info   ] INFO: (INSTANCE 0x3ed87670) linux_read_sorted_physical_devices:
[16:55:57.229][Info   ] INFO: (INSTANCE 0x3ed87670)      Original order:
[16:55:57.229][Info   ] INFO: (INSTANCE 0x3ed87670)            [0] AMD Radeon RX 460 Graphics (RADV POLARIS11)
[16:55:57.229][Info   ] INFO: (INSTANCE 0x3ed87670)      Sorted order:
[16:55:57.229][Info   ] INFO: (INSTANCE 0x3ed87670)            [0] AMD Radeon RX 460 Graphics (RADV POLARIS11)  
[16:55:57.229][Info   ] INFO: (INSTANCE 0x3ed87670) linux_read_sorted_physical_devices:
[16:55:57.229][Info   ] INFO: (INSTANCE 0x3ed87670)      Original order:
[16:55:57.229][Info   ] INFO: (INSTANCE 0x3ed87670)            [0] AMD Radeon RX 460 Graphics (RADV POLARIS11)
[16:55:57.229][Info   ] INFO: (INSTANCE 0x3ed87670)      Sorted order:
[16:55:57.229][Info   ] INFO: (INSTANCE 0x3ed87670)            [0] AMD Radeon RX 460 Graphics (RADV POLARIS11)  
[16:55:57.288][Error  ] XrResult failure [XR_ERROR_RUNTIME_FAILURE]
    Origin: pfnGetVulkanGraphicsDeviceKHR(instance, getInfo->systemId, getInfo->vulkanInstance, vulkanPhysicalDevice)
    Source: /home/ich/OpenXR-SDK-Source/src/tests/hello_xr/graphicsplugin_vulkan.cpp:1961

From the SteamVR xrclient log:

Sun Feb 11 2024 16:51:52.364802 [Info] - IVRSystem::GetOutputDevice: failed to find VkPhysicalDevice matching deviceUUID
Sun Feb 11 2024 16:51:52.364994 [Error] - CSxrCompositorOpenVRGetVulkanGRaphicsDevice error: failed to determine output device

The only three vulkan calls I found with BOX64_LOG=2 after a lot of vkGetInstanceProcAddr calls were to calls tovkEnumeratePhysicalDevices and then 8785|0x3f030d9fcc: Calling vkGetPhysicalDeviceProperties2(0x55E186D0, 0x7FA4484720, 0x7FA44846B0, ...) => return 0x105C0 , directly after which the error message gets created and written to the log.

hellovr_vulkan looses its connection to the X server and then shuts down. This could also be down to library issues however, I'll have to see if I can get it to recompile in an environment with older libraries (especially an older libc). 3975|0x100045375: Calling SDL_CreateWindow(0x100062B09, 0x2BC, 0x64, ...) =>X connection to :0 broken (explicit kill or server shutdown).

OpenVR through wine64 produces some more interesting errors in the vrclient log

Sat Feb 10 2024 17:12:16.651804 [Error] - No GPU timing Vulkan device in CVRCompositorSharedTextures::BeginGPUTimingCommandBuffer!
Sat Feb 10 2024 17:12:16.653085 [Error] - No Vulkan command buffer open in CGpuTiming::MarkEvent!
Sat Feb 10 2024 17:12:16.653296 [Error] - Invalid command buffer in CVRCompositorSharedTextures::FinishOpenCommandBuffer!
Sat Feb 10 2024 17:13:01.998581 [Info] - Enable advanced image processing of scene textures.
Sat Feb 10 2024 17:13:02.005827 [Info] - Failed to allocate new VRCompositor semaphore
Sat Feb 10 2024 17:13:02.006174 [Info] - Failed to create shared vulkan semaphore
Sat Feb 10 2024 17:13:02.006631 [Info] - Failed to allocate new VRCompositor semaphore
Sat Feb 10 2024 17:13:02.006675 [Info] - Failed to create shared vulkan semaphore
Sat Feb 10 2024 17:13:02.007500 [Info] - Initializing CVulkanVRRenderer
Sat Feb 10 2024 17:13:02.007939 [Info] - Debug markers: enabled
Sat Feb 10 2024 17:13:02.774652 [Info] - Initialized Vulkan transfer ring buffer, mapped at offset 0x0x7ed8759000.
Sat Feb 10 2024 17:13:02.778714 [Info] - Failed to allocate new VRCompositor semaphore
Sat Feb 10 2024 17:13:02.778807 [Info] - Failed to create shared vulkan semaphore
Sat Feb 10 2024 17:13:02.779344 [Info] - CSharedResourceBaseLinux::CreateAssociatedResources failed to pre-allocate semaphore handle=0x1000018f6 slot=0
Sat Feb 10 2024 17:13:02.780963 [Error] - SharedCountingSemaphoreLinux::CreateVulkanCountingSemaphore: failed to create associated semaphores.
Sat Feb 10 2024 17:13:02.782279 [Error] - CVulkanVRRenderer::CreateGPUCountingSemaphore - Failed to allocate counting shared resource
Sat Feb 10 2024 17:13:02.786028 [Info] - Failed to allocate new VRCompositor semaphore
Sat Feb 10 2024 17:13:02.786122 [Info] - Failed to create shared vulkan semaphore
Sat Feb 10 2024 17:13:02.786157 [Info] - CSharedResourceBaseLinux::CreateAssociatedResources failed to pre-allocate semaphore handle=0x2000018f6 slot=0
Sat Feb 10 2024 17:13:02.786188 [Error] - SharedCountingSemaphoreLinux::CreateVulkanCountingSemaphore: failed to create associated semaphores.
Sat Feb 10 2024 17:13:02.786214 [Error] - CVulkanVRRenderer::CreateGPUCountingSemaphore - Failed to allocate counting shared resource
Sat Feb 10 2024 17:13:02.787858 [Info] - Failed to create shared vulkan buffer: size=2032 usage=0x13
Sat Feb 10 2024 17:13:02.788458 [Error] - Failed to create sync texture.  Ensure application was built using DXGI 1.1 or later (i.e. Call CreateDXGIFactory1).
Sat Feb 10 2024 17:13:02.793165 [Info] - Failed to allocate new VRCompositor semaphore
Sat Feb 10 2024 17:13:02.793252 [Info] - Failed to create shared vulkan semaphore
Sat Feb 10 2024 17:13:02.793285 [Info] - CSharedResourceBaseLinux::CreateAssociatedResources failed to pre-allocate semaphore handle=0x3000018f6 slot=0
Sat Feb 10 2024 17:13:02.793315 [Error] - SharedCountingSemaphoreLinux::CreateVulkanCountingSemaphore: failed to create associated semaphores.
Sat Feb 10 2024 17:13:02.793337 [Error] - CVulkanVRRenderer::CreateGPUCountingSemaphore - Failed to allocate counting shared resource
Sat Feb 10 2024 17:13:02.794586 [Info] - Failed to allocate new VRCompositor semaphore
Sat Feb 10 2024 17:13:02.794658 [Info] - Failed to create shared vulkan semaphore
Sat Feb 10 2024 17:13:02.794687 [Info] - CSharedResourceBaseLinux::CreateAssociatedResources failed to pre-allocate semaphore handle=0x4000018f6 slot=0
Sat Feb 10 2024 17:13:02.794719 [Error] - SharedCountingSemaphoreLinux::CreateVulkanCountingSemaphore: failed to create associated semaphores.
Sat Feb 10 2024 17:13:02.794748 [Error] - CVulkanVRRenderer::CreateGPUCountingSemaphore - Failed to allocate counting shared resource
Sat Feb 10 2024 17:13:02.794856 [Info] - Failed to create shared vulkan buffer: size=2032 usage=0x13
Sat Feb 10 2024 17:13:03.065323 [Info] - Failed to ref VRCompositor resource 0x10000092a
Sat Feb 10 2024 17:13:03.065966 [Error] - VulkanVRRenderer::ImportConstantBufferFromSharedHandle - Failed to import remote constant buffer.
Sat Feb 10 2024 17:13:03.068647 [Error] - Failed to open frame info buffer (Vulkan)!
Sat Feb 10 2024 17:13:03.104364 [Info] - Failed to allocate new VRCompositor semaphore
Sat Feb 10 2024 17:13:03.104447 [Info] - Failed to create shared vulkan semaphore

in this case, the application runs and tracks correctly, but no frames get submitted to SteamVR (or at least they aren't visible in the headset, it's still showing the default skybox)

I didn't see any errors about missing vulkan extensions, so that's likely not the issue. Monado is also able to run fine fully in box64.
I haven't been able to run SteamVR with BOX64_log=2 yet unfortunately.

CaptainD54321 commented 6 months ago

Hey there, found any solution for this? I'm having the exact same issue (basically identical log spam in vrclient_java.txt) when I try to play Minecraft in VR using the Vivecraft mod; SteamVR works fine with Steam games, but Minecraft refuses to show anything in my headset, though I can tell

System Information: OS: Linux Mint 21.3 CPU: Intel i7-8750H @2.20 GHz GPU: RTX 2060 (using driver version 545) SteamVR version 2.5.2 (latest beta) VR Headset: HTC Vive

vrclient_java.txt: vrclient_java.txt

Coreforge commented 6 months ago

I didn't I ended up just using monado and OpenComposite.