StardustXR/stardust-xr-cpp

Sharing input with you

goyalyashpal opened this issue · 2 comments

So, there was a question someone asked somewhere:

  • why not startdust display server (instead of wxrd - xr display wayland comp)?

And the reply was following:

  • Vulkan preferred over OpenGL. We can actually run a full stack without any OpenGL whatsoever.
  • wxrd can also run directly on DRM without any other X11 or Wayland compositor below, this is a first.
  • Another advantage of xrdesktop compared to wxrc, SimulaVR and StardustXR is that we can run next to GNOME and KDE and share windows.

Hoping it will help you 😅 as i dont have any understanding to add my own input to this...

That's all true... somewhat. Stardust is absolutely a display server, it fills that role. But several things aren't right.

  1. Vulkan is much much better for specialized graphics that need ultra-high performance, but if done elegantly OpenGL gets darn close. Since Stardust's reference server uses StereoKit and StereoKit doesn't have Vulkan yet, that display server uses GLES 3. But, it's optimized for mobile hardware with performance by default, so it's a good start.
  2. WXRD can't run directly on DRM, it's an XRDesktop backend and XRDesktop uses OpenXR as its backend, so therefore Monado. Monado however does DRM and KMS.
  3. This is absolutely true, and I thought about doing that for Stardust too. Ultimately for the reference server I decided against it because of complexity and the limitations that it'd provide for Stardust's standalone side.

But ultimately what Stardust has over all the others is a proper display server architecture. Don't like how it uses OpenGL? You can write a new server that follows the same protocol but with Vulkan and it'll work! Don't like how it needs OpenXR underneath? You can make a server that talks straight to displays. Don't like how the server's C++? Make a server in Rust instead. The server component has minimal behavior on purpose so 1 dev actually can do it, and the bulk of the work is done in the reference server. Same with XRDesktop windows, as long as they present like panels according to the API you can put them in the backend.

Where was this question asked? I'd love to chat with that person to explain better.

@studiofreiluft does this discussion seem useful to you?