Skip to content

Implement action set priorities and restrict to device#41

Draft
OrionMoonclaw wants to merge 2 commits intoSupreeeme:mainfrom
OrionMoonclaw:priorities
Draft

Implement action set priorities and restrict to device#41
OrionMoonclaw wants to merge 2 commits intoSupreeeme:mainfrom
OrionMoonclaw:priorities

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.

@OrionMoonclaw OrionMoonclaw changed the title Implement action set priorities Implement action set priorities and restrict to device Feb 25, 2026
@OrionMoonclaw
Copy link
Author

Update: my current plan with this is to only enable priorities if there's hand tracking data available from the runtime, as there seems to be interest on the Monado side for adding skeletal estimation there, so it will be a matter of creating a generic API for it and gradually adding support for different devices

I'm still waiting on some of @ImSapphire's PRs that touch hand tracking code to avoid having to rewrite code due to merge conflicts

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