amwatson/CitraVR

Vive XR Elite Support

Closed this issue · 4 comments

Is there an existing issue for this?

  • I have searched the existing issues

What feature are you suggesting?

Support for the Vive XR Elite. It uses pretty similar hardware, and does support OpenXR.

Why would this feature be useful?

More people could play it, and also a great demonstration that's things can be more open and multiplatform rather than "quest apps".

I was thinking of porting to Vive XR Elite.
If resource is limited, I can help.
I might need to know how can I make this possible.
But, currently I couldn't compile the project after cloning.

Lubos is working on a Pico port as well. If you're interested in writing the Vive XR Elite (/Vive Focus?) port, I'm not opposed, though for the XR Elite specifically (as opposed to Pico), I'd want it to start as a fork and we merge when it's ready. We should stay aligned on the architecture if we want to eventually merge.

I'll warn you that the differences between the existing project and a Vive XR Elite-compatible version aren't quite trivial. A few significant differences that come to mind:

  1. Vive XR Elite's OpenXR implementation doesn't support a few key extensions, including XR_KHR_ANDROID_SURFACE_SWAPCHAIN. Sections that use a surface would need to be re-implemented for the XR Elite using a traditional swapchain and either a texID passed to Citra's shaders (which isn't a bad thing at all, just a greater deviation from existing Citra code that adds maintenance burden) or with a SurfaceTexture (which is worse from an overhead perspective)
  2. Some parts of Citra (e.g. the launcher and menu) utilize the 2D container provided by the Quest, which needs an alternative on other platforms. Lubos is currently planning on handling this for Pico (which does have a 2D container but not the same type) but splitting the app into two packages (i.e. the user downloads two apks) and having one launch the other, but this isn't yet implemented.

With these considerations in mind, if you are still interested in doing the port, I'm happy to support to the extent that time permits. However, I would not add support anytime soon if it was me implementing, due to these significant differences.

@lvonasek ah, got it. I'll actually have access to my Pico and tomorrow and can confirm this on my end. If it isn't available, that's a shame

@chengnay one advantage of porting to to XR Elite (unlike pico) is that HTC's standalone runtime does support non-proprietary opener out of box, which is a requirement for the port as well