SteamVR

SteamVR

BattleAxeVR Aug 31, 2021 @ 6:48pm
Major issue w/ SteamVR's OpenXR on Oculus -- No tracking until manually Resetting View
Hi, I reported this bug last November and it's still there. 100% repro for me. It's really important that I find a solution to this or at least a workaround in code to make this work. Can anyone try to repro this? It's been bugging me for ages.

Problem: Using SteamVR's OpenXR runtime on Oculus Quest 2 (Link or Air Link), the OpenXR SDK Source "hello_xr" sample app doesn't receive tracking updates until I manually Reset View, then it works fine after that. So I'm greeted with a stuck screen when I start it up.

Can anyone else confirm having this issue? I based my OpenXR integration in my engine around the hello_xr sample and I can't see what's wrong with it. Happens in my engine too, 100% repro.

hello_xr works perfectly well with the Oculus OpenXR runtime, up to and including 120 Hz mode on either Link or Air Link.

thanks for any insights / help anyone can do here. I'd be surprised if I were the only one having this issue, right now this is a showstopper for me. I'd like people to be able to use SteamVR's input remapping functionality instead of implementing it myself, custom, for example, so using SteamVR instead of Oculus' OpenXR runtime is useful for that. Amongst other things.
< >
Showing 1-15 of 16 comments
runeberg Aug 31, 2021 @ 7:17pm 
Hi @BattleAxeVR - What do you mean by "Reset View"?

I've just tried helloxr which we also build along with steamvr internally, and unable to see anything odd with the demo. Can you provide more info on your setup?
BattleAxeVR Aug 31, 2021 @ 9:09pm 
Thanks for looking into it.

By "Reset View" I mean I press the right controller's Oculus Home button, and when you're in SteamVR opens up a window where there's a button that you can press Reset View on it, that's what jump starts the tracking and makes it run properly.

I'm on Windows 10 Pro for Workstations, 128 GB of RAM, Threadripper 2990wx.

HMD is Oculus Quest 2 connected via Link (wired or not makes no difference) at 120 Hz, using latest SteamVR (tried beta and non-beta), latest OpenXR-SDK-Source checkout from Github as of today. I also connected my Quest 1 and Rift CV1 (wired via HDMI) and it was the same problem.

I built the hello_xr sample with VS 2019 x64, and latest Vulkan SDK (last I checked the issue was there with DX12 as well). I started it in Debug and Release, both with the debugger attached and not, same thing.

Toggling between Oculus' OpenXR runtime and SteamVR's gives me a 100% repro, that's persisted across nearly a year's worth of OpenXR SDK releases, SteamVR updates, Vulkan SDK updates, etc.

I can't for the life of me figure it out. If it's just an issue on my machine, that'll make it hard to diagnose. I do recall that I used to only need to do Reset View once, then subsequent sessions would work correctly. But now it's literally every time, so it's unusable.

The OpenXR session / initialization seems to work but the main loop in hello_xr that polls the HMD poses for each eye's view isn't getting any values for either the headset or controllers, until I manually do ResetView.
NiTrox808 Sep 1, 2021 @ 10:20am 
I am getting the Open XR. I've used VRidge w/RiftCat and still on occasion get the error message. If I try to run steam vr and then launch War Thunder I get the error message just after the initial WT splash screen comes up
NiTrox808 Sep 1, 2021 @ 10:21am 
I am using Gear VR w/ Note 9
runeberg Sep 1, 2021 @ 3:26pm 
Originally posted by BattleAxeVR:
Thanks for looking into it.

By "Reset View" I mean I press the right controller's Oculus Home button, and when you're in SteamVR opens up a window where there's a button that you can press Reset View on it, that's what jump starts the tracking and makes it run properly.

I'm on Windows 10 Pro for Workstations, 128 GB of RAM, Threadripper 2990wx.

HMD is Oculus Quest 2 connected via Link (wired or not makes no difference) at 120 Hz, using latest SteamVR (tried beta and non-beta), latest OpenXR-SDK-Source checkout from Github as of today. I also connected my Quest 1 and Rift CV1 (wired via HDMI) and it was the same problem.

I built the hello_xr sample with VS 2019 x64, and latest Vulkan SDK (last I checked the issue was there with DX12 as well). I started it in Debug and Release, both with the debugger attached and not, same thing.

Toggling between Oculus' OpenXR runtime and SteamVR's gives me a 100% repro, that's persisted across nearly a year's worth of OpenXR SDK releases, SteamVR updates, Vulkan SDK updates, etc.

I can't for the life of me figure it out. If it's just an issue on my machine, that'll make it hard to diagnose. I do recall that I used to only need to do Reset View once, then subsequent sessions would work correctly. But now it's literally every time, so it's unusable.

The OpenXR session / initialization seems to work but the main loop in hello_xr that polls the HMD poses for each eye's view isn't getting any values for either the headset or controllers, until I manually do ResetView.

Still unable to repro this on two different rigs and Quest2s I have running at 120hz in the Oculus side (we only run 72 on our end) using both Vulkan and DX12 for helloxr. I'm getting validation warnings in Vulkan mode but nothing that seems to affect the prompt start of the demo app.

You mentioned as well you've had the issue since 1 year, that would exclude 120hz mode to be an issue I guess.

Try using vulkan2 with helloxr+steamvr and see if that works better for you. Also, note any xrcall errors. Its kinda sounding like either the session isnt starting properly, openxr calls are being made in an inappropriate session state, or some issue with tracking being established.

Other things to check is if you're compiling the latest helloxr in Khronos' GitHub and your cable is officially supported.

For DX12, you can also try the following test app:

https://github.com/JoeLudwig/diligent_hello_openxr

For Vulkan, I'm not sure if the Unity and UE implementations are stable at the moment so you can compare as they have some solid QA around those implementations, so would be good to check.

I also have a test app for OpenXR that I use for quickly testing some steamvr dev work:

https://github.com/1runeberg/OpenXRProvider

This currently uses only OpenGL, but I have been migrating it to Vulkan on a private repo in my spare time. What I could say at this point is that you can easily run into issues with implementing the vulkan extension specially around the init part, this was the reason for the vulkan2 extension.

If you havent already, enable the validation layers and make sure you're not silently running into any vulkan errors.

Just as a side note regarding vulkan2 - this still does have issues at this stage so other runtimes havent implemented it (I believe oculus hasnt) and likely waiting for a new iteration of this extension.



Last edited by runeberg; Sep 1, 2021 @ 3:52pm
BattleAxeVR Sep 1, 2021 @ 6:09pm 
Hi, thanks for all your tips / help.

I tried the diligent sample, it doesn't build (missing vulkan.h even though vulkan isn't implemented), and when I fixed that it just crashes. Next.

OpenXRProvider actually starts and runs with the SteamVR Oculus OpenXR runtime without reset view, right from the start, but it runs at 60 Hz instead of 120 Hz. Using Oculus' runtime it's a solid 120. That worries me but that's a different problem (I think others have reported it). That's at least a clue towards a fix / workaround, even if it only is for niche setups.

Going back to OpenXR SDK's hello_xr, I built it using latest everything but it's still the same as before, and I tried with -g d3d11 / d3d12 / vulkan and vulkan2. Same thing each time. So it's not even a Vulkan-specific issue. There must be something in this sample code that just doesn't work on my machine, maybe my Threadripper CPU or possibly Windows 10 for Workstations, who knows. I seem to remember only upgrading to 10 for Workstations after, but anyway if the OpenXRProvider sample doesn't need the reset view, and it's not a Vulkan-specific issue, then there must be something inherent in the timings or initialization sequence that happens there. I should probably just debug d3d11 which is simpler than vulkan, since the issue is caused by something at a higher level of abstraction than the RHI.

OpenXR SDK source gives me a bunch of validation errors using the latest Vulkan SDK:

"[21:04:09.622][Error ] ERROR: (INSTANCE 0x0) [Validation] Validation Error: [ VUID-VkPhysicalDeviceProperties2-pNext-pNext ] Object 0: VK_NULL_HANDLE, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0xdd73dbcf |

vkGetPhysicalDeviceProperties2KHR: Includes a pNext pointer (pProperties->pNext) to a VkStructureType (VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES), but its parent extension VK_KHR_external_fence_capabilities has not been enabled. The Vulkan spec states:

Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkPhysicalDeviceAccelerationStructurePropertiesKHR, VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, ...."

I'm gonna try running the OpenXR hello_xr sample on a different system to see if it's just my machine.

Actually, can you send me your hello_xr.exe ? My email is belakampis at battleaxevr com

I wonder if it's something wrong with my visual studio setup here. I'm using VS 2019 community.

In the SDK releases it doesn't include compiled binaries of the sample app (jeez why is nothing ever easy). Btw I really appreciate the help here.
Last edited by BattleAxeVR; Sep 1, 2021 @ 7:05pm
runeberg Sep 1, 2021 @ 10:25pm 
Hi. No worries.

I don't think you'll get 120 over steamvr link if that's your ultimate goal esp since it's still experimental. Pls note with OpenXR, your users can always opt to use the native openxr runtime that came with their hardware (in this case Oculus). OpenXR titles published in Steam should run in any OpenXR runtime.

We have upcoming changes to Steam with startup options for OpenXR, but even without these upcoming changes, the default OpenXR runtime (e.g. SteamVR, WMR, Oculus, Monado, etc) would be used by the published app. One recently released title if you'd like to try that uses OpenXR for example that I'm aware of and was tested across different runtimes and published in Steam is:

https://store.steampowered.com/app/1296970/Zombieland_VR_Headshot_Fever/

This title was also extensively tested with SteamVR+Oculus Rift/RiftS/Quest/Quest2.

As for the possibility of a CPU compat issue, one of the rigs I used for testing is a Ryzen 9 3950X and the other Intel i9-9900K. 60Hz seems rather slow though for the Sandbox (OpenXRProvider) demo app on a Quest2, might be cable related? Or potentially a steamvr add-on?

The Vulkan error you're getting means you're not enabling a required extension we need. If you're getting this with vulkan2, then check with vulkaninfo if your hardware and sdk version supports all our required extensions, listed here (as of this writing):

Required instance extensions (all platforms):
VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME (this is what the vulkan error you're getting is complaining of for vkGetPhysicalDeviceProperties2KHR)
VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME

Required instance extensions (windows):
VK_KHR_SURFACE_EXTENSION_NAME
VK_KHR_WIN32_SURFACE_EXTENSION_NAME

Required instance extensions (linux)
VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME

Required device extensions (all platforms):
VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME
VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME
VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME
VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME

Additional required extensions for linux:
VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME
VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME

Finally, here's a pre-built helloxr.exe:
https://www.dropbox.com/sh/55gh3azs6bogakv/AAAorBL3KC63mfPybWdQb5u6a?dl=0
Last edited by runeberg; Sep 2, 2021 @ 11:34am
BattleAxeVR Sep 2, 2021 @ 6:25pm 
Thanks a lot of taking the time to do this. I tried your build of helloxr.exe with -g d3d11, vulkan and vulkan2, using both Oculus' and SteamVR's OpenXR runtimes. Same problem, though. At least I know it's my machine now. I had a 2080 Ti, 2060 Super and now a 3090 and it's still always the same problem with SteamVR's runtime, a frozen screen and spam of a bunch of performance warning in the console (which doesn't happen with Oculus' runtime).

But, after I do the ResetView, SteamVR's OpenXR interface runs just fine at 120 Hz on my Quest 2, both using Link, Air Link, and Virtual Desktop.

Here's the logs, there are some key differences, especially that SteamVR doesn't bind the vibration in this sample, but there's also a bunch of log spam from Vulkan using SteamVR too:

helloxr.exe -g vulkan

SteamVR's OpenXR runtime:

[21:17:26.314][Info ] Instance RuntimeName=SteamVR/OpenXR RuntimeVersion=0.1.0
[21:17:26.314][Info ] Available View Configuration Types: (1)
[21:17:26.314][Info ] Available Environment Blend Mode count : (1)
[21:17:26.314][Info ] Environment Blend Mode (XR_ENVIRONMENT_BLEND_MODE_OPAQUE) : (Selected)
[21:17:26.426][Info ] INFO: (INSTANCE 0x29928d0) [Loader Message] Inserted device layer VK_LAYER_KHRONOS_validation (C:\VulkanSDK\1.2.182.0\Bin\.\VkLayer_khronos_validation.dll)
[21:17:26.426][Info ] INFO: (INSTANCE 0x29928d0) [Loader Message] Inserted device layer VK_LAYER_NV_optimus (C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_b8346c359fcd6093\.\nvoglv64.dll)
[21:17:26.573][Info ] Loaded vertex shader
[21:17:26.573][Info ] Loaded fragment shader
[21:17:28.342][Info ] Available reference spaces: 3
[21:17:28.357][Info ] System Properties: Name=SteamVR/OpenXR : oculus VendorId=10462
[21:17:28.357][Info ] System Graphics Properties: MaxWidth=2528 MaxHeight=2780 MaxLayers=16
[21:17:28.357][Info ] System Tracking Properties: OrientationTracking=True PositionTracking=True
[21:17:28.357][Info ] Creating swapchain for view 0 with dimensions Width=2528 Height=2780 SampleCount=1
[21:17:28.365][Info ] Creating swapchain for view 1 with dimensions Width=2528 Height=2780 SampleCount=1
[21:17:28.368][Info ] XrEventDataSessionStateChanged: state XR_SESSION_STATE_UNKNOWN->XR_SESSION_STATE_IDLE session=132024368 time=46771220419300
[21:17:28.368][Info ] XrEventDataSessionStateChanged: state XR_SESSION_STATE_IDLE->XR_SESSION_STATE_READY session=132024368 time=46771220437500
[21:17:28.567][Warning] PERF: (COMMAND_BUFFER 0x88e1e38) [Validation] Validation Performance Warning: [ UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout ] Object 0: handle = 0x88e1e38, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x4dae5635 | vkCmdBlitImage(): For optimal performance VkImage 0xb8b3500000000ac[] layout should be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL instead of GENERAL.
[21:17:28.576][Warning] PERF: (COMMAND_BUFFER 0x88e1e38) [Validation] Validation Performance Warning: [ UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout ] Object 0: handle = 0x88e1e38, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x4dae5635 | vkCmdBlitImage(): For optimal performance VkImage 0xdf8aaa00000000b3[] layout should be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL instead of GENERAL.
[21:17:28.578][Info ] XrEventDataSessionStateChanged: state XR_SESSION_STATE_READY->XR_SESSION_STATE_SYNCHRONIZED session=132024368 time=46771455920600
[21:17:28.578][Info ] XrEventDataSessionStateChanged: state XR_SESSION_STATE_SYNCHRONIZED->XR_SESSION_STATE_VISIBLE session=132024368 time=46771455941500
[21:17:28.578][Info ] XrEventDataSessionStateChanged: state XR_SESSION_STATE_VISIBLE->XR_SESSION_STATE_FOCUSED session=132024368 time=46771455957400
[21:17:28.589][Warning] PERF: (COMMAND_BUFFER 0x88e1e38) [Validation] Validation Performance Warning: [ UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout ] Object 0: handle = 0x88e1e38, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x4dae5635 | vkCmdBlitImage(): For optimal performance VkImage 0xb8b3500000000ac[] layout should be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL instead of GENERAL.
[21:17:28.590][Warning] PERF: (COMMAND_BUFFER 0x88e1278) [Validation] Validation Performance Warning: [ UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout ] Object 0: handle = 0x88e1278, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x4dae5635 | vkCmdBlitImage(): For optimal performance VkImage 0xdf8aaa00000000b3[] layout should be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL instead of GENERAL.
[21:17:28.590][Info ] Grab action is bound to Left Hand Oculus Touch Grip
[21:17:28.590][Info ] Quit action is bound to nothing
[21:17:28.590][Info ] Pose action is bound to Left Hand Oculus Touch /pose/openxr_grip
[21:17:28.590][Info ] Vibrate action is bound to nothing
[21:17:28.590][Info ] Grab action is bound to Left Hand Oculus Touch Grip
[21:17:28.590][Info ] Quit action is bound to nothing
[21:17:28.590][Info ] Pose action is bound to Left Hand Oculus Touch /pose/openxr_grip
[21:17:28.590][Info ] Vibrate action is bound to nothing
[21:17:28.591][Info ] Grab action is bound to Left Hand Oculus Touch Grip
[21:17:28.591][Info ] Quit action is bound to nothing
[21:17:28.591][Info ] Pose action is bound to Left Hand Oculus Touch /pose/openxr_grip
[21:17:28.591][Info ] Vibrate action is bound to nothing
[21:17:28.591][Info ] Grab action is bound to Left Hand Oculus Touch Grip
[21:17:28.591][Info ] Quit action is bound to nothing
[21:17:28.591][Info ] Pose action is bound to Left Hand Oculus Touch /pose/openxr_grip
[21:17:28.591][Info ] Vibrate action is bound to nothing
[21:17:28.601][Warning] PERF: (COMMAND_BUFFER 0x88e1278) [Validation] Validation Performance Warning: [ UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout ] Object 0: handle = 0x88e1278, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x4dae5635 | vkCmdBlitImage(): For optimal performance VkImage 0xb8b3500000000ac[] layout should be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL instead of GENERAL.
[21:17:28.602][Warning] PERF: (COMMAND_BUFFER 0x88e1e38) [Validation] Validation Performance Warning: [ UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout ] Object 0: handle = 0x88e1e38, type = VK_OBJECT_TYPE_COMMAND_BUFFER; | MessageID = 0x4dae5635 | vkCmdBlitImage(): For optimal performance VkImage 0xdf8aaa00000000b3[] layout should be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL instead of GENERAL.
[21:17:28.602][Info ] Grab action is bound to Left Hand Oculus Touch Grip
[21:17:28.602][Info ] Quit action is bound to nothing
[21:17:28.602][Info ] Pose action is bound to Left Hand Oculus Touch /pose/openxr_grip
[21:17:28.602][Info ] Vibrate action is bound to nothing
[21:17:28.602][Info ] Grab action is bound to Left Hand Oculus Touch Grip
[21:17:28.602][Info ] Quit action is bound to nothing
[21:17:28.602][Info ] Pose action is bound to Left Hand Oculus Touch /pose/openxr_grip
[21:17:28.603][Info ] Vibrate action is bound to nothing


Oculus' runtime:

[21:19:38.258][Info ] Instance RuntimeName=Oculus RuntimeVersion=1.65.0
[21:19:38.262][Info ] Available View Configuration Types: (1)
[21:19:38.262][Info ] Available Environment Blend Mode count : (1)
[21:19:38.262][Info ] Environment Blend Mode (XR_ENVIRONMENT_BLEND_MODE_OPAQUE) : (Selected)
[21:19:38.338][Info ] INFO: (INSTANCE 0x2c444e0) [Loader Message] Inserted device layer VK_LAYER_KHRONOS_validation (C:\VulkanSDK\1.2.182.0\Bin\.\VkLayer_khronos_validation.dll)
[21:19:38.338][Info ] INFO: (INSTANCE 0x2c444e0) [Loader Message] Inserted device layer VK_LAYER_NV_optimus (C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_b8346c359fcd6093\.\nvoglv64.dll)
[21:19:38.495][Info ] Loaded vertex shader
[21:19:38.495][Info ] Loaded fragment shader
[21:19:38.631][Info ] Available reference spaces: 3
[21:19:38.631][Info ] System Properties: Name=Oculus Quest VendorId=-11714
[21:19:38.631][Info ] System Graphics Properties: MaxWidth=4096 MaxHeight=4096 MaxLayers=16
[21:19:38.631][Info ] System Tracking Properties: OrientationTracking=True PositionTracking=True
[21:19:38.632][Info ] Creating swapchain for view 0 with dimensions Width=2064 Height=2272 SampleCount=1
[21:19:38.637][Info ] Creating swapchain for view 1 with dimensions Width=2064 Height=2272 SampleCount=1
[21:19:38.643][Info ] XrEventDataSessionStateChanged: state XR_SESSION_STATE_UNKNOWN->XR_SESSION_STATE_IDLE session=72143888520839169 time=46901508768500
[21:19:38.643][Info ] XrEventDataSessionStateChanged: state XR_SESSION_STATE_IDLE->XR_SESSION_STATE_READY session=72143888520839169 time=46901508779400
[21:19:38.659][Info ] XrEventDataSessionStateChanged: state XR_SESSION_STATE_READY->XR_SESSION_STATE_SYNCHRONIZED session=72143888520839169 time=46901536847899
[21:19:39.602][Info ] XrEventDataSessionStateChanged: state XR_SESSION_STATE_SYNCHRONIZED->XR_SESSION_STATE_VISIBLE session=72143888520839169 time=46902479811900
[21:19:39.602][Info ] XrEventDataSessionStateChanged: state XR_SESSION_STATE_VISIBLE->XR_SESSION_STATE_FOCUSED session=72143888520839169 time=46902479815700
[21:19:39.621][Info ] Grab action is bound to Left Hand Oculus Touch Squeeze
[21:19:39.621][Info ] Quit action is bound to Left Hand Oculus Touch Menu Button
[21:19:39.621][Info ] Pose action is bound to Left Hand Oculus Touch Grip Pose
[21:19:39.622][Info ] Vibrate action is bound to Left Hand Oculus Touch Vibration

BattleAxeVR Sep 2, 2021 @ 6:37pm 
The reason I need SteamVR's runtime to work on Oculus hardware is because I'll be offering my game to use PlutoVR which uses CloudXR and that only supports SteamVR, not Oculus runtime and as you know SteamVR has a ton of configurability that Oculus doesn't (e.g. for accessibility), support for adding in extra trackers like 3rd-party waist and FBT trackers (I have DecaGear's "DecaMove" 3DOF waist tracker, although apparently there's no way to access it via OpenXR API yet, unless I'm mistaken), input remapping, etc.

I don't think the vulkan validation errors related to the layouts matters, since I get the problem using d3d11 as well. It's much more likely the log spam related to OpenXR session state. Are you not getting this same session log spam on your system with Quest using SteamVR on helloxr.exe? Maybe something's wrong with my machine but we sold the dGPU in my other system so I have no other machine to test this on right now. I do remember reproing this issue on that machine way back when though (it had an Intel quad-core CPU).
BattleAxeVR Sep 2, 2021 @ 7:11pm 
vkCmdBlitImage isn't called inside helloxr.exe, I just searched through the source code of the app, so that warning much be occurring inside SteamVR. Might be something to sort out (though I don't think it's relevant to this, it does cause log spam, making it harder to see other errors / warnings).
BattleAxeVR Sep 2, 2021 @ 7:14pm 
I just tested the helloxr.exe from PlutoSphere (PlutoVR), which is a Desktop.Vision instance on Amazon cloud, and it runs a bit choppily but it doesn't jam at the start at least. PlutoVR uses Nvidia's CloudXR to run / render SteamVR games remotely to a Quest 1/2/Focus3 so you don't need a PC at all to play SteamVR games anymore.

I get the same log spam about the vkCmdBlitImage on the console there, and it has nothing to do with Oculus runtime (Oculus Home isn't installed on these instances, they are just blade servers for remote rendering).
Last edited by BattleAxeVR; Sep 2, 2021 @ 7:15pm
BattleAxeVR Sep 2, 2021 @ 7:26pm 
In both runtimes the session state sequence is the same, per the logs:

XR_SESSION_STATE_UNKNOWN
XR_SESSION_STATE_IDLE
XR_SESSION_STATE_READY
XR_SESSION_STATE_SYNCHRONIZED
XR_SESSION_STATE_VISIBLE
XR_SESSION_STATE_FOCUSED

So the main differences between the two runtimes, at least wrt logs is

"Vibrate action is bound to nothing" and the vkCmdBlitImage validation warnings

When I tested it with a debugger the eye view poses just weren't getting any data updates from SteamVR's OpenXR runtime until after I call ResetView. That's where I ran into a brick wall, I don't have access to the source code so it's a black box to me. I know it's hard to debug without being able to reproduce it. I'll keep trying and also look at what may be different with the other sample there that doesn't have the issue. I'll also test Unreal's OpenXR plugin with both runtimes and see if it happens there.
BattleAxeVR Sep 2, 2021 @ 8:36pm 
One way to fix this is if, inside an OpenXR session, I can force SteamVR to manually reset the view using code, not forcing the user to do it. Is such a thing possible? I seem to recall tons of people asking for such a thing back in the older OpenVR days.
runeberg Sep 2, 2021 @ 11:17pm 
Originally posted by BattleAxeVR:
The reason I need SteamVR's runtime to work on Oculus hardware is because I'll be offering my game to use PlutoVR which uses CloudXR and that only supports SteamVR, not Oculus runtime and as you know SteamVR has a ton of configurability that Oculus doesn't (e.g. for accessibility), support for adding in extra trackers like 3rd-party waist and FBT trackers (I have DecaGear's "DecaMove" 3DOF waist tracker, although apparently there's no way to access it via OpenXR API yet, unless I'm mistaken), input remapping, etc.

I don't think the vulkan validation errors related to the layouts matters, since I get the problem using d3d11 as well. It's much more likely the log spam related to OpenXR session state. Are you not getting this same session log spam on your system with Quest using SteamVR on helloxr.exe? Maybe something's wrong with my machine but we sold the dGPU in my other system so I have no other machine to test this on right now. I do remember reproing this issue on that machine way back when though (it had an Intel quad-core CPU).

I'm not seeing a session state spam? do you mean the vulkan warnings? yeah, this is something you can ignore for now and shouldnt affect the demo app.
runeberg Sep 2, 2021 @ 11:20pm 
Originally posted by BattleAxeVR:
One way to fix this is if, inside an OpenXR session, I can force SteamVR to manually reset the view using code, not forcing the user to do it. Is such a thing possible? I seem to recall tons of people asking for such a thing back in the older OpenVR days.

arent you trying to solve an issue that seems local to your setup? i'd ask colleagues or friends first to try before trying to place a workaround for something that seems local to your end. and perhaps focus on figuring hte issue. unfortunately this is not something i can help with.

but it is sounding like the app isnt getting input priority for some reason. so i would look at your steamvr setup and disable any add-ons if you have any or try reinstalling steamvr with prestine config.
< >
Showing 1-15 of 16 comments
Per page: 1530 50

Date Posted: Aug 31, 2021 @ 6:48pm
Posts: 16