Skip to content

Conversation

@OrionMoonclaw
Copy link

This splits out skeleton inputs into another process (thanks openxr loader...) with a headless session and implements action set priorities!

Mostly tested for regressions with VRChat (needed device restriction and secondary action sets to work properly), Resonite (doesn't need priorities anyway) and Alyx.

Would appreciate testing with other games and controllers, especially Valheim VR, assuming that works with xrizer at all.

Depends on #40

@Supreeeme
Copy link
Owner

I'd really prefer not to use multiple instances and IPC to accomplish this - that seems error prone, hard to test, and not portable across runtimes. I have some thoughts on how to accomplish this that I'd like to explore first.

@OrionMoonclaw
Copy link
Author

I think as far as testing it shouldn't be too bad, I just need to make some changes to fakexr to support headless sessions. The IPC interface is very minimal and uses ipc-channel, so not hard to manually verify and at runtime it will just return an error if anything goes wrong. I still need to make sure it doesn't panic when that happens since it's better to not have working fingers than to just outright crash.

I don't think it's too big of an ask for PC XR runtimes to support headless sessions if they want better compatibility with OpenVR games (some of them do already, including Monado and VDXR), XR_EXT_active_action_set_priority would be the bigger issue here with afaik pretty much only Monado and Meta supporting it (VDXR is open source, so support could be added there).

I think what I'm actually least happy about currently is the way the binary is found, I don't think that's portable and it relies on where vrclient.so is located. I tried embedding the binary and using memfd_create, but that's even more Linux-specific and would complicate the build process, perhaps writing it to a temp file instead would work better.

Orion Moonclaw added 2 commits June 1, 2025 17:11
This spawns a separate process that runs its own XrInstance with a
headless session to get inputs for the estimated skeleton. Maybe not the
most optimal solution, but it does the job without having to do action
set voodoo.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants