OpenXR 32bit runtime issues
I am trying to implement OpenXR support in a VR mod for an old game (X-Wing Alliance).
When I do the first call to xrEnumerateInstanceExtensionProperties(), it never returns.
Oculus loader indicates that the runtime was loaded correctly, but never completes the "trampoline" like it usually does.
Verbose [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Entering loader trampoline
Warning [GENERAL | | OpenXR-Loader] : ReadLayerDataFilesInRegistry - failed to read registry location \ApiLayers\Implicit in either HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
Info [GENERAL | | OpenXR-Loader] : RuntimeManifestFile::FindManifestFiles - using environment variable override runtime file F:\Oculus\Support\oculus-runtime\oculus_openxr_32.json
Info [GENERAL | | OpenXR-Loader] : RuntimeManifestFile::CreateIfValid - attempting to load F:\Oculus\Support\oculus-runtime\oculus_openxr_32.json
Info [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : RuntimeInterface::LoadRuntime succeeded loading runtime defined in manifest file F:\Oculus\Support\oculus-runtime\oculus_openxr_32.json using interface version 1 and OpenXR API version 1.0Output captured from Oculus runtime show no specific error:22/02 01:49:20.051 {INFO} [CAPI] OVRInterface plugin library location: F:\Oculus\Support\oculus-runtime\client-plugins\x86
22/02 01:49:20.051 {INFO} [CAPI] OVRInterface plugin libraries:
<none>
22/02 01:49:20.051 {INFO} [CAPI] OVRInterface classes and interfaces:
Class Id: 0xb00b00067332ab1, class Name: OVRExtensionAddition
Interface Id: 0xb00b00053345520
22/02 01:49:20.057 {INFO} [CAPI] LibOVR module is located at F:\Oculus\Support\oculus-runtime\LibOVRRT32_1.dllProcmon indicates that the last event from the process is a CreateFile for Oculus\Support\oculus-runtime\client-plugins\x86 that fails with PATH NOT FOUND, because it does not exist.To try to bypass this issue and troubleshoot, if I try to xrCreateInstance() with a hardcoded array of extension names (only XR_KHR_D3D11_enable), without calling xrEnumerateInstanceExtensionProperties() first, it's successful with a warning:
22/02 02:02:21.196 {WARNING} [OXR] OXRInstanceData::CreateSession detected graphics device query was not called for XR_TYPE_GRAPHICS_BINDING_D3D11_KHRBut the subsequent call to xrCreateSession() fails, and returns an error code of -50, which even though missing in my version of the headers, it seems to be XR_ERROR_GRAPHICS_REQUIREMENTS_CALL_MISSING in the latest version of OpenXR.
The |
Unfortunately, , I could not find any documentation about the allegedly required xrGetGraphicsRequirements() call.
Any ideas of what is causing these issues, or to put me in the right direction?
My environment:
Oculus runtime: 26.0.0.39.502
OpenXR Loader 1.0.10 (from Nuget package)
Note: I have successfully run some examples compiled 32bit mode and with Oculus runtime, so that should not be the issue. I assume it's something in the specific app context which is a bit special because it's a dll wrapping DirectDraw (ddraw.dll) to hook a 20 year old game engine and use Direct3D.
Thanks in advance!
