Implement action set priorities and restrict to device#41
Implement action set priorities and restrict to device#41OrionMoonclaw wants to merge 2 commits intoSupreeeme:mainfrom
Conversation
|
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. |
|
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. |
947325e to
8974d81
Compare
8974d81 to
9907312
Compare
9907312 to
ab33478
Compare
3685a52 to
730839d
Compare
730839d to
bb4fdf8
Compare
|
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 |
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