Open CheesecakeCG opened 2 years ago
cc @BastiaanOlij
It seems I cannot reproduce this. Both scenes work fine (although the timed delay seems to negtively affect the display quality on the CrashWithMainViewport scene).
Godot 4 alpha 5, Windows 10, Nvidia GTX3060Ti studio driver 511.65, Windows Mixed Reality (HP Reverb G2), SteamVR 1.21.12
I do most of my testing on Windows 10 and SteamVR and so far haven't run into this. Tested with Rift S, Quest 1, Valve Index and Acer WMR.
Are the XR shaders enabled?
A crash log would help identify where the problem may be originating from. I'll try your test project out during the week, unfortunately I'm traveling this weekend.
XR Shaders are enabled. It doesn't seem to actually be crashing, just exiting abruptly. How would I go about getting more information about what's happening?
This happens with this project too. Commenting out vp.use_xr = true
has the same behavior as the test project, it lets the project run - with tracking - but with nothing displayed on the headset.
One thing that I don't like about OpenXR, though I made a change for that a day or so ago, is that OpenXR won't start if it doesn't detect the headset. SteamVR just refuses to create the OpenXR instance, Oculus will start it but won't setup the session because it will report no valid setup is available.
Godot will just quit at that point, I changed it that it will try to init without XR support so you can check for failure of starting OpenXR and tell the user to plugin a headset and restart.
This seems to be resolved with alpha 11.
I can confirm this is still an issue in alpha 13 and master.
Crash happens within rendering_device_vulkan.cpp
Windows 10, AMD RX 580, Steam VR 1.22.13
Could be an AMD specific issue, iirc, I closed the issue after I switched to an Nvidia card.
Definitely seems like an AMD specific issue, tested on a Nvidia RTX 3050 without any issues.
I also had an issue with AMDVLK and XR in the past: https://github.com/godotengine/godot/issues/61787 And this issue seem to be back now. Maybe it's related. But I do get a full driver crash including blackscreen. (maybe the way it crashes is different depending on the GPU but the reason is the same :thinking:) This is my error:
Using swap chain format: VK_FORMAT_R8G8B8A8_SRGB
OpenXR: Failed to locate view space in play space [ XR_ERROR_TIME_INVALID ]
ERROR: Vulkan: Did not create swapchain successfully.
at: (drivers/vulkan/vulkan_context.cpp:2063)
ERROR: Condition "err" is true. Returning: ERR_CANT_CREATE
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2140)
ERROR: vkBeginCommandBuffer failed with error -4.
at: (drivers/vulkan/rendering_device_vulkan.cpp:8962)
ERROR: Condition "err" is true. Returning: ERR_CANT_CREATE
I'm using an RX 6600, Win 10, Valve Index. Also interesting that I don't have my issue if I compile godot on windows using MSVC.
@CherrySodaPop which VR headset are you using? Can you please post your error output? Could you try your application with the godot alpha 5? For me alpha 5 worked so if it works for you too our issues may be related.
You can also get some more vulkan debug output if you set VK_LOADER_DEBUG=all as ENV variable. I did this using a powershell script "run.ps1" I start from the godot exe directory:
$Env:VK_LOADER_DEBUG = "all"
./Godot_v4.0-alpha14_win64.exe
Read-Host -Prompt "Press Enter to exit"
Do you have or had OBS Studio on your system? I do get a strange output when using VK_LOADER_DEBUG
but I hope it's not related to the issue:
LAYER | DEBUG: Loading layer library C:\ProgramData\obs-studio-hook\.\graphics-hook64.dll
LAYER | INFO: Inserted device layer VK_LAYER_OBS_HOOK (C:\ProgramData\obs-studio-hook\.\graphics-hook64.dll)
LAYER | DEBUG: Loading layer library C:\WINDOWS\System32\DriverStore\FileRepository\u0382332.inf_amd64_c26898b78056458e\B382319\.\amdvlk64.dll
LAYER | INFO: Failed to find vkGetDeviceProcAddr in layer C:\WINDOWS\System32\DriverStore\FileRepository\u0382332.inf_amd64_c26898b78056458e\B382319\.\amdvlk64.dll
LAYER: vkCreateDevice layer callstack setup to:
LAYER: <Application>
LAYER: ||
LAYER: <Loader>
LAYER: ||
LAYER: VK_LAYER_OBS_HOOK
LAYER: Type: Implicit
LAYER: Disable Env Var: DISABLE_VULKAN_OBS_CAPTURE
LAYER: Manifset: C:\ProgramData\obs-studio-hook\obs-vulkan64.json
LAYER: Library: C:\ProgramData\obs-studio-hook\.\graphics-hook64.dll
LAYER: ||
LAYER: <Device>
@Cyberrebell I'm using the Quest 2 via Link cable with SteamVR. I actually get no debug output and it immediately closes, I only got information through compiling and attaching a debugger.
Crash happens within rendering_device_vulkan.cpp
Trying alpha 5, issue still persists, no output info and immediately closes. I do have OBS installed and I'm getting the same debug info.
LAYER | DEBUG: Loading layer library C:\ProgramData\obs-studio-hook\.\graphics-hook64.dll
LAYER | INFO: Inserted device layer VK_LAYER_OBS_HOOK (C:\ProgramData\obs-studio-hook\.\graphics-hook64.dll)
LAYER | DEBUG: Loading layer library C:\WINDOWS\System32\DriverStore\FileRepository\u0379219.inf_amd64_3649648678001de4\B378972\.\amdvlk64.dll
LAYER | INFO: Failed to find vkGetDeviceProcAddr in layer C:\WINDOWS\System32\DriverStore\FileRepository\u0379219.inf_amd64_3649648678001de4\B378972\.\amdvlk64.dll
LAYER: vkCreateDevice layer callstack setup to:
LAYER: <Application>
LAYER: ||
LAYER: <Loader>
LAYER: ||
LAYER: VK_LAYER_OBS_HOOK
LAYER: Type: Implicit
LAYER: Disable Env Var: DISABLE_VULKAN_OBS_CAPTURE
LAYER: Manifset: C:\ProgramData\obs-studio-hook\obs-vulkan64.json
LAYER: Library: C:\ProgramData\obs-studio-hook\.\graphics-hook64.dll
LAYER: ||
LAYER: <Device>
I'll quickly uninstall OBS right now just to rule it out.
Edit: Still crashes even without OBS but now the error is different.
LAYER | DEBUG: Loading layer library C:\WINDOWS\System32\DriverStore\FileRepository\u0379219.inf_amd64_3649648678001de4\B378972\.\amdvlk64.dll
LAYER | INFO: Failed to find vkGetDeviceProcAddr in layer C:\WINDOWS\System32\DriverStore\FileRepository\u0379219.inf_amd64_3649648678001de4\B378972\.\amdvlk64.dll
LAYER: vkCreateDevice layer callstack setup to:
LAYER: <Application>
LAYER: ||
LAYER: <Loader>
LAYER: ||
LAYER: <Device>
@CherrySodaPop thank you for testing. I tried alpha 5 again and it still works for me. So maybe we don't even have the same bug. As you have a Quest 2 you could set the Rift software as default OpenXR server for now. For me this worked fine when I tested with the Quest 2. My issue does "only" happen with SteamVR+AMD(GPU)+Godot MinGW builds compiled on linux.
I also tested compiling the latest master with MinGW64 (MSYS2) GCC on Windows and it works...
Tried with the Oculus OpenXR and it also crashes, this time it gives me an error log though.
OpenXR: Running on OpenXR runtime: Oculus 1.75.0
Godot Engine v4.0.alpha15.official.432b25d36 - https://godotengine.org
OpenXR: XrGraphicsRequirementsVulkan2KHR:
- minApiVersionSupported: 1.0.0
- maxApiVersionSupported: 1.0.0
OpenXR: Requested Vulkan version exceeds the maximum version this runtime has been tested on and is known to support.
- desired_version 1.2.0
- minApiVersionSupported 1.0.0
- maxApiVersionSupported 1.0.0
Vulkan API 1.2.0 - Using Vulkan Device #0: AMD - Radeon RX 580 Series
OpenXR: failed to create action default_pose ! [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: failed to create action haptic ! [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: failed to suggest bindings for /interaction_profiles/htc/vive_tracker_htcx ! [ XR_ERROR_VALIDATION_FAILURE ]
OpenXR: Found supported reference space XR_REFERENCE_SPACE_TYPE_VIEW
OpenXR: Found supported reference space XR_REFERENCE_SPACE_TYPE_LOCAL
OpenXR: Found supported reference space XR_REFERENCE_SPACE_TYPE_STAGE
OpenXR: Found supported swapchain format VK_FORMAT_R8G8B8A8_UNORM
OpenXR: Found supported swapchain format VK_FORMAT_R8G8B8A8_SRGB
OpenXR: Found supported swapchain format VK_FORMAT_B8G8R8A8_UNORM
OpenXR: Found supported swapchain format VK_FORMAT_B8G8R8A8_SRGB
OpenXR: Found supported swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
OpenXR: Found supported swapchain format VK_FORMAT_B10G11R11_UFLOAT_PACK32
OpenXR: Found supported swapchain format VK_FORMAT_D16_UNORM
OpenXR: Found supported swapchain format VK_FORMAT_D32_SFLOAT
OpenXR: Found supported swapchain format VK_FORMAT_D24_UNORM_S8_UINT
OpenXR: Found supported swapchain format VK_FORMAT_D32_SFLOAT_S8_UINT
OpenXR: Found supported swapchain format VK_FORMAT_BC1_RGBA_UNORM_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC1_RGBA_SRGB_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC2_UNORM_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC2_SRGB_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC3_UNORM_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC3_SRGB_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC6H_UFLOAT_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC6H_SFLOAT_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC7_UNORM_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC7_SRGB_BLOCK
OpenXR initialised successfully
Using swap chain format: VK_FORMAT_R8G8B8A8_SRGB
OpenXR: Failed to get interaction profile for 54597624266928 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266929 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266930 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266931 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266932 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266933 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266934 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266935 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266936 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266937 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266938 [ XR_ERROR_PATH_UNSUPPORTED ]
OpenXR: Failed to get interaction profile for 54597624266939 [ XR_ERROR_PATH_UNSUPPORTED ]
--- Debugging process stopped ---
For me https://github.com/godotengine/godot/pull/63288 fixed the issue by enabling full LTO but also increased the size of the godot.exe from 150MB to 1.5GB
It's the other way around. LTO creates smaller binaries and those optimized builds cause the crash while disabling LTO (build argument lto=none
) creates an not crashing version.
for me alpha 17 fixed the issue
Using alpha 17 and beta 1, still crashes.
@CherrySodaPop Same issue here, startup logo strobes and then the game window closes. I have almost the same setup using Quest 2 link. I tried updating drivers, still the same. Errors such as OpenXR: Failed to get interaction profile for 54597624266928 [ XR_ERROR_PATH_UNSUPPORTED ]
go away after using the workaround discussed in #65395. My headset and OpenXR work just fine in UE4.
WARNING: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
ReadDataFilesInRegistry: Registry lookup failed to get layer manifest files.
Objects - 1
Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 2096202909504
at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:168)
Vulkan API 1.2.135 - Using Vulkan Device #0: AMD - Radeon RX 570 Series
Editing project: C:/Users/celyk/Documents/godot/vr gaming
Godot Engine v4.0.beta1.official.20d667284 - https://godotengine.org
WARNING: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
ReadDataFilesInRegistry: Registry lookup failed to get layer manifest files.
Objects - 1
Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 2768236230048
at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:168)
ERROR: Condition "!windows.has(p_window)" is true.
at: window_resize (drivers/vulkan/vulkan_context.cpp:1497)
Vulkan API 1.2.135 - Using Vulkan Device #0: AMD - Radeon RX 570 Series
WARNING: Blend file import is enabled in the project settings, but no Blender path is configured in the editor settings. Blend files will not be imported.
at: _editor_init (modules/gltf/register_types.cpp:75)
WARNING: FBX file import is enabled in the project settings, but no FBX2glTF path is configured in the editor settings. FBX files will not be imported.
at: _editor_init (modules/gltf/register_types.cpp:99)
Running: C:/Users/celyk/Downloads/Godot_v4.0-beta1_win64.exe/Godot_v4.0-beta1_win64.exe --path C:/Users/celyk/Documents/godot/vr%20gaming --remote-debug tcp://127.0.0.1:6007 --editor-pid 1128 --position 104,60 res://main.tscn
OpenXR: Running on OpenXR runtime: Oculus 1.76.0
Godot Engine v4.0.beta1.official.20d667284 - https://godotengine.org
OpenXR: XrGraphicsRequirementsVulkan2KHR:
- minApiVersionSupported: 1.0.0
- maxApiVersionSupported: 1.0.0
OpenXR: Requested Vulkan version exceeds the maximum version this runtime has been tested on and is known to support.
- desired_version 1.2.0
- minApiVersionSupported 1.0.0
- maxApiVersionSupported 1.0.0
WARNING: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
ReadDataFilesInRegistry: Registry lookup failed to get layer manifest files.
Objects - 1
Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 2146268923552
at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:168)
Vulkan API 1.2.135 - Using Vulkan Device #0: AMD - Radeon RX 570 Series
OpenXR: Found supported reference space XR_REFERENCE_SPACE_TYPE_VIEW
OpenXR: Found supported reference space XR_REFERENCE_SPACE_TYPE_LOCAL
OpenXR: Found supported reference space XR_REFERENCE_SPACE_TYPE_STAGE
OpenXR: Found supported swapchain format VK_FORMAT_R8G8B8A8_UNORM
OpenXR: Found supported swapchain format VK_FORMAT_R8G8B8A8_SRGB
OpenXR: Found supported swapchain format VK_FORMAT_B8G8R8A8_UNORM
OpenXR: Found supported swapchain format VK_FORMAT_B8G8R8A8_SRGB
OpenXR: Found supported swapchain format VK_FORMAT_R16G16B16A16_SFLOAT
OpenXR: Found supported swapchain format VK_FORMAT_B10G11R11_UFLOAT_PACK32
OpenXR: Found supported swapchain format VK_FORMAT_D16_UNORM
OpenXR: Found supported swapchain format VK_FORMAT_D32_SFLOAT
OpenXR: Found supported swapchain format VK_FORMAT_D24_UNORM_S8_UINT
OpenXR: Found supported swapchain format VK_FORMAT_D32_SFLOAT_S8_UINT
OpenXR: Found supported swapchain format VK_FORMAT_BC1_RGBA_UNORM_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC1_RGBA_SRGB_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC2_UNORM_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC2_SRGB_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC3_UNORM_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC3_SRGB_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC6H_UFLOAT_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC6H_SFLOAT_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC7_UNORM_BLOCK
OpenXR: Found supported swapchain format VK_FORMAT_BC7_SRGB_BLOCK
OpenXR initialised successfully
Using swap chain format: VK_FORMAT_R8G8B8A8_SRGB
@CherrySodaPop and @celyk can you test this issue with the latest master again? https://github.com/godotengine/godot/pull/68102 was merged yesterday and it fixed a AMD XR issue for me so maybe you are lucky too.
Seems to occur for me on Linux with Beta 5. Ryzen 7 1800x, RX 6600, Linux Mint, SteamVR, Valve Index, running without setting UseXr
tracks fine, setting it renders one frame to the desktop viewport then freezes.
@Frozenreflex let's share more details as our setups are very similar but mine is working. Godot 4 Beta 5, RX 6600 and Ryzen 9 3900X, Valve Index, Arch Linux, Xorg session SteamVR beta 1.25.1, mesa 22.2.3
@Frozenreflex let's share more details as our setups are very similar but mine is working. Godot 4 Beta 5, RX 6600 and Ryzen 9 3900X, Valve Index, Arch Linux, Xorg session SteamVR beta 1.25.1, mesa 22.2.3
Turns out I needed to install the Vulkan SDK from here https://www.lunarg.com/vulkan-sdk/
@CherrySodaPop and @celyk can you test this issue with the latest master again? https://github.com/godotengine/godot/pull/68102 was merged yesterday and it fixed a AMD XR issue for me so maybe you are lucky too.
I can confirm it not working with #68102 but instead some commit from beta 5 fixing it! I believe #68080 might have actually been the fix.
@Frozenreflex let's share more details as our setups are very similar but mine is working. Godot 4 Beta 5, RX 6600 and Ryzen 9 3900X, Valve Index, Arch Linux, Xorg session SteamVR beta 1.25.1, mesa 22.2.3
Turns out I needed to install the Vulkan SDK from here https://www.lunarg.com/vulkan-sdk/
This should not be needed to use prebuilt versions of the engine, there might be something off in the XR setup @BastiaanOlij.
Installing the SDK should not make a difference, I only advised that so you can run --gpu-validation
. Now it is possible that the validation results in nice errors instead of crashing.
Can you still reproduce this issue in the latest 4.0 beta?
I am currently experiencing a black screen crash on html5 across browsers when I enable get_viewport().use_xr = true
, following this tutorial and its associated template, using the latest beta (4.0.2).
I'm on Windows 11 with an AMD Ryzen 7 5825U with Radeon graphics using the WebXR API Emulator plugin. This setup works with Godot 3.5.2 following the Godot 3 tutorial and doesn't crash, so it seems isolated to the Godot 4 version.
There aren't any errors that output in the web console when the crash happens. Unfortunately, I'm not sure if this is WebXR-specific as I don't have any headsets to debug on other than a Quest 2 and a Google Cardboard approach š
Can you still reproduce this issue in the latest 4.0 beta?
Still having this issue when using Godot 4.1.1. I have a Geforce RTX 2060. Running on Windows with the Oculus OpenXR runtime. It will just exit out of the project immediately after starting up.
I commented out the "get_viewport().use_xr = true" line and it will stay as a black screen and say I need to make a viewport set use_xr = true.
@JoshuaManuel same issue
same issue, RX 580 & Valve Index
Godot version
4.0 alpha 5
System information
Windows 10, Vulkan, AMD RX460, SteamVR 1.21.12
Issue description
Godot 4.0 crashes when enabling use_xr on viewport. This applies to both the main viewport and subviewports.
I've tried it with Windows Mixed Reality and TrinusVR Cardboard, it crash the same way with both with SteamVR set as the OpenXR runtime.
Headset tracking seems to work fine, and can render to the normal display just fine, but once XR is enabled, the game just closes.
Steps to reproduce
Set
use_xr
to true on a viewport.get_viewport().use_xr = true
Minimal reproduction project
VR Test Project.zip