StardustXR / stardust-xr-cpp

A Linux XR display server featuring enhanced 2D app support and XR app support.
GNU General Public License v2.0
116 stars 11 forks source link

Sharing input with you #20

Closed goyalyashpal closed 2 years ago

goyalyashpal commented 2 years ago

So, there was a question someone asked somewhere:

And the reply was following:

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

technobaboo commented 2 years ago

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.

goyalyashpal commented 2 years ago

@studiofreiluft does this discussion seem useful to you?