Skip to content

Initial Galaxy XR port#585

Merged
xytovl merged 11 commits intoWiVRn:masterfrom
perillamint:dev/galaxy-xr
Nov 10, 2025
Merged

Initial Galaxy XR port#585
xytovl merged 11 commits intoWiVRn:masterfrom
perillamint:dev/galaxy-xr

Conversation

@perillamint
Copy link
Contributor

@perillamint perillamint commented Nov 7, 2025

This PR is an initial attempt to port WiVRn to Galaxy XR.

Current limitation:

  • Controller coordinate transform seems not correct (but I can't fix it because I don't have controller yet)
  • When you put off headset, logcat screams with Error getting tracked pose for HMD.
  • Face tracking is not working (yet)

This PR closes #584

@perillamint perillamint changed the title Add galaxy xr support Port WiVRn to Galaxy XR Nov 7, 2025
case model::htc_vive_xr_elite:
return scale_view(view, 1920);
case model::lynx_r1:
case model::galaxy_xr:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we follow the other device's conventions, this would be scale_view(view, 3552).
I believe on 140% scale (the default) it would fail to create encoders and any computer would struggle to render.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied, but, yes, I also think it should be adjusted base on the real-world test. 3552 * 3840 * 2 pixels are not that easy for modest computers (and I also doubt extreme high-end PCs will be able to do that too)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Configured it to return scale_view(view, 3552), and it seems the default value (140%) is fine, at least on Radeon RX 9070XT.

I think it is good to go with this value.

htc_vive_xr_elite,
htc_vive_focus_vision,
lynx_r1,
samsung_galaxy_xr,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now we can keep it like this, but the solution doesn't scale very well.

I think I'll go for something with 2 levels like

enum class meta
{
  quest_1,
  quest_2,
  quest_pro,
  quest_3s,
  quest_3,
};

enum class android_xr
{
  samsung_galaxy_xr,
  generic,
};

using model = std::variant<meta, android_xr>;

with obviously htc and pico, I suppose Lynx and unknown would get their own categories.

Permissions would only depend on the toplevel, the second one would be used for quirks or resolution override.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree on it too. However, I think it should be handled in separate refactoring PR, not in here.

@perillamint perillamint marked this pull request as ready for review November 7, 2025 13:50
@perillamint perillamint changed the title Port WiVRn to Galaxy XR Initial Galaxy XR port Nov 7, 2025
@xytovl
Copy link
Collaborator

xytovl commented Nov 8, 2025

If you want to keep separate commits, please rework them into logical elements like Android XR stuff, Galaxy XR ones, initial run permission requests.
If you don't think it's important, I'll squash into a single commit instead.

I also triggered CI, which will report if there are any issues or formatting to be done

@xytovl xytovl merged commit ffd5cf8 into WiVRn:master Nov 10, 2025
21 checks passed
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.

[Feature Request]: Galaxy XR support

2 participants