Update to KHR_vulkan_enable2 breaks compatibility with oculus runtime 23.0.0.43.517
Callum17 opened this issue · 7 comments
Looks like the latest oculus desktop runtime (23.0.0.43.517) does not support changes from KHR_vulkan_enable2. #65
Issue affects v0.14.0.
Tested v0.13.1 - both vulkan and hello demos working.
Not sure if this means there should be a fallback option to KHR_vulkan_enable?
Wanted to document in case someone ran into the same issue.
To be clear, you're saying Oculus has not yet implemented KHR_vulkan_enable2? Valve and Monado both have working impls already; my expectation is that all vendors will in the near future, and you can defer updating openxrs until then.
Oculus has not yet implemented KHR_vulkan_enable2
As far as I can tell, no.
Inspecting the output of xr::ExtensionSet::default()
xr::Entry::enumerate_extensions
gave khr_vulkan_enable2 = false
for v0.14.0 using the oculus runtime.
Got v0.14.0 (with the khr_vulkan_enable2 change) working by changing the runtime to steamVR, and using virtual desktop on the Quest 2.
Was achieved by editing registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenXR\1
from:
C:\Program Files\Oculus\Support\oculus-runtime\oculus_openxr_64.json
to:
C:\Program Files (x86)\Steam\steamapps\common\SteamVR\steamxr_win64.json
Interestingly, v0.13.1 did not work for me with steamVR. The required extension "VK_EXT_debug_marker" was reported as missing.
To clarify my setup is:
rustc 1.49.0 (stable)
cmake 3.19.3
Quest 2
Windows 10
As you say - this is likely a vendor problem, with runtimes not fully meeting openXR 1.0 spec. Would it be worth recording compabitibility somewhere to help people get started?
Inspecting the output of xr::ExtensionSet::default()
That's always got false for everything; you need to call xr::Entry::enumerate_extensions
to see what's actually supported by your runtime.
v0.13.1 did not work for me with steamVR
This is a known long-standing bug in SteamVR's implementation of the original OpenXR Vulkan enable extension. It can be worked around by loading the validation layers or filtering the Vulkan extension list, but using the newer extension is preferred.
this is likely a vendor problem, with runtimes not fully meeting openXR 1.0 spec
KHR_vulkan_enable2
is not actually mandatory for compliance, but in practice I expect Oculus will get around to implementing it reasonably soon, since the original version had some issues.
Would it be worth recording compabitibility somewhere to help people get started?
I'm happy to keep this issue open until Oculus catches up; alternatively I'd also be happy to merge a README note.
I'd also be happy to merge a README note
Guess it would make sense to record compatibility with runtimes for both linux and windows until support improves.
Assuming people are running latest stable distribution for each runtime:
Platform | Runtime | Compatibility |
---|---|---|
Windows | Windows Mixed Reality | ❓ |
Windows | SteamVR | ✔ - v0.14.0 onwards |
Windows | Oculus | ✔ - (khr_vulkan_enable2 examples not supported) |
Linux | Monado | ❓ |
Linux | SteamVR | ❓ |
Any runtimes missing?
Would be handy if anyone can help fill in the blanks.
I feel like that level of detail is a bit overkill. openxrs supports any conformant OpenXR runtime, for any implemented graphics binding. There are only a few non-obvious consequences:
- Oculus hasn't yet(?) implemented vulkan_enable2, but surely will in the near future.
- WMR doesn't support Vulkan at all.
- Nobody's contributed a D3D12 binding yet.
I feel like that level of detail is a bit overkil
Fair enough. In which will close without a README change.
Not sure it makes sense to treat the oculus Windows runtime differently. Especially given that the Oculus native mobile runtime support for vulkan_enable2 may be different again.
- WMR doesn't support Vulkan at all.
This was useful information for me. Thank you!