cancel
Showing results for 
Search instead for 
Did you mean: 

Never receiving XR_SESSION_STATE_SYNCHRONIZED causing endless hang

DragonDreamsGD
Honored Guest

I'm trying to port a game engine from supporting PC VR to Quest. The app has to start out as 2D then transition to 3D when ready to run.

When I use 2D only (hence AndroidManifest Intent group "android.intent.category.LAUNCHER", "com.oculus.intent.category.DEFAULT" and "com.oculus.intent.category.2D") then I can create an OpenXR instance and it transitions from Idle over Ready to Synchronized and I see something rendered in 2D panel mode only.

When I use though VR mode (hence AndroidManigest Intent group "android.intent.category.DEFAULT", "com.oculus.intent.category.VR" and "org.khronos.openxr.intent.category.IMMERSIVE_HMD") then the created OpenXR instance only transitions to Idle but never to Ready nor Synchronized. This of course dead-locks the application since according to OpenXR you can not start rendering nor interacting with OpenXR if it is not in Synchronized state.

What is required to be done to start an application in VR mode AND to get OpenXR to transition to Synchronized state?

1 REPLY 1

DragonDreamsGD
Honored Guest

By the way. In the 2D case I could call eglCreateWindowSurface to obtain a surface and create the OpenGL context. In VR-Mode eglCreateWindowSurface fails and instead I had to use eglCreatePbufferSurface to be able to create a surface. Could it be the problem is already coming from the fact that eglCreateWindowSurface is not usable in VR-Mode?