Forum Discussion
Mystfit
4 years agoProtege
UE 4.26.1 - OpenXR empty project shows black screen on Quest
I'm curious if anyone has managed to get OpenXR working with a Quest and Unreal Engine 4.26? The release notes for 4.26 includes "New: Added Oculus Quest platform support to OpenXR."
I've posted this as an issue on the Oculus Github fork but I'm cross-posting it here as well to see if anyone has had better luck than me.
I've built a small test project was built using the current 4.26 branch in the Oculus fork using a blank UE template project, as well as Epic's 4.26.1 engine from the launcher. The project was built using Android platform 29, NDK 21.3, Vulkan and armv8-a. Plugins used were the OpenXR, OpenXRHandtracking and OculusOpenXR plugins with the regular OculusVR plugin disabled. Project settings include enabling mobile multiview.
The project runs and shows no particularly obvious errors, but just displays a black screen. The Oculus button when held down will show the recentering icon, but pressing the button will not return you to the dashboard unless the app is closed through adb.
Looking at the log, there are a number of OpenXR extensions which aren't loading. Some seem optional but xrCreateSwapchainAndroidSurfaceKHR is one that sounds suspiciously important.
Here's the raw logcat output for this project - blankquest.log and I've attached my test project to this post if anyone wants to try it out themselves.
And here are the non-loading extensions.
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetAndroidApplicationThreadKHR requires XR_KHR_android_thread_settings to be enabled.
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateSwapchainAndroidSurfaceKHR requires XR_KHR_android_surface_swapchain to be enabled.
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrGetOpenGLESGraphicsRequirementsKHR requires XR_KHR_opengl_es_enable to be enabled.
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrGetVisibilityMaskKHR not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrPerfSettingsSetPerformanceLevelEXT requires XR_EXT_performance_settings to be enabled.
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrThermalGetTemperatureTrendEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetDebugUtilsObjectNameEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateDebugUtilsMessengerEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrDestroyDebugUtilsMessengerEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSubmitDebugUtilsMessageEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSessionBeginDebugUtilsLabelRegionEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSessionEndDebugUtilsLabelRegionEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSessionInsertDebugUtilsLabelEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateSpatialAnchorMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateSpatialAnchorSpaceMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrDestroySpatialAnchorMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetInputDeviceActiveEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetInputDeviceStateBoolEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetInputDeviceStateFloatEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetInputDeviceStateVector2fEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetInputDeviceLocationEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateSpatialGraphNodeSpaceMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateHandMeshSpaceMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrUpdateHandMeshMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetAndroidApplicationThreadKHR requires XR_KHR_android_thread_settings to be enabled.
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateSwapchainAndroidSurfaceKHR requires XR_KHR_android_surface_swapchain to be enabled.
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrGetOpenGLESGraphicsRequirementsKHR requires XR_KHR_opengl_es_enable to be enabled.
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrGetVisibilityMaskKHR not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrPerfSettingsSetPerformanceLevelEXT requires XR_EXT_performance_settings to be enabled.
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrThermalGetTemperatureTrendEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSessionBeginDebugUtilsLabelRegionEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSessionEndDebugUtilsLabelRegionEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSessionInsertDebugUtilsLabelEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateSpatialAnchorMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateSpatialAnchorSpaceMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrDestroySpatialAnchorMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetInputDeviceActiveEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetInputDeviceStateBoolEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetInputDeviceStateFloatEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetInputDeviceStateVector2fEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrSetInputDeviceLocationEXT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateSpatialGraphNodeSpaceMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrCreateHandMeshSpaceMSFT not supported
02-07 17:21:36.714 29575 29603 W OpenXR_DriverLoader: xrGetInstanceProcAddr: xrUpdateHandMeshMSFT not supported1 Reply
Replies have been turned off for this discussion
- MystfitProtegeSome additional experiments. I'm attempting to call the Enable HMD BP function via a BeginPlay event in a blueprint because I don't think that it is being called in the OpenXR plugin as I'm not seeing any of the expected messages for the EnableHMD C++ function showing up in the logs. EnableHMD is called for other platform specific XR plugins from what I can tell.
This hasn't fixed the black screen yet, but I do get a new message in my log.D/UE4 : [2021.02.11-10.40.53:353][ 0]LogHMD: Warning: Swapchain format not supported (50), falling back to runtime preferred format (43).Looking up the values for the swapchain formats, I can see that PF_ASTC_4x4 is being requested (enum value of 50) but PF_R8G8B8A8 is being returned instead (enum value of 37).
UPDATE:
It worked! I wasn't wearing the headset at the time but I managed to get my project showing on the screen. It crashed a few seconds later due to some other issue but this is the first thing that I've seen drawn in my Quest since I converted my project to OpenXR so that's very promising.
Long story short, call EnableHMD in your pawn or level BP.
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device