Skip to content

Conversation

@BastiaanOlij
Copy link
Contributor

@BastiaanOlij BastiaanOlij commented May 28, 2025

This PR adds support for the Khronos OpenXR loader to the core of Godot.

This means that as long as the headset supports it, and you don't use any vendor features or have features locked behind vendor specific manifest entries, Godot can export to a headset without needing the vendor plugin.

All you need to do is enabled Use Gradle Build:
image

And set the XR Mode to OpenXR:
image

And your game can be successfully exported to AOSP devices.

Tested on:

  • Quest 3
  • Pico 4 Ultra

Contributed by Khronos Group through the Godot Integration Project

@BastiaanOlij
Copy link
Contributor Author

cc @dsnopek @m4gr3d

@BastiaanOlij BastiaanOlij force-pushed the openxr_core_android_loader branch 4 times, most recently from e16eb1d to 15ecdbd Compare May 28, 2025 06:04
@BastiaanOlij BastiaanOlij modified the milestones: 4.5, 4.6 May 30, 2025
@BastiaanOlij BastiaanOlij force-pushed the openxr_core_android_loader branch from 15ecdbd to 918d224 Compare June 2, 2025 06:14
@BastiaanOlij BastiaanOlij marked this pull request as ready for review June 2, 2025 06:14
@BastiaanOlij BastiaanOlij requested review from a team as code owners June 2, 2025 06:14
@BastiaanOlij
Copy link
Contributor Author

I'm taking this out of draft as it is working. This should not be merged until after we've updated the OpenXR version in the thirdparty folder to atleast 1.1.46

Opinion among the XR team is to also hold off merging until Godot 4.5 has been released as accompanying changes on the vendor plugin side will require some guidance.

@BastiaanOlij BastiaanOlij force-pushed the openxr_core_android_loader branch from 918d224 to f1de29a Compare June 4, 2025 05:47
@BastiaanOlij
Copy link
Contributor Author

Rebased so it should now automatically pick up the OpenXR loader for 1.1.47 :)

@BastiaanOlij
Copy link
Contributor Author

Just discussed with @m4gr3d , need to rebase this and we're planning on removing the custom loader option as there currently is no scenario where we need this.

@BastiaanOlij BastiaanOlij force-pushed the openxr_core_android_loader branch from 10503d6 to ebfdd7b Compare November 5, 2025 02:10
@BastiaanOlij BastiaanOlij self-assigned this Nov 5, 2025
@BastiaanOlij
Copy link
Contributor Author

This has now been rebased and I've removed the custom option. PR still works as expected.

Also as expected, with the current vendor plugin installed gradlew complains that we're including the loader twice. While we plan to remove the loader code from the vendor plugin, we want to be backwards compatible so we're looking into manifest changes that tell gradlew to ignore the loader from the vendor plugin.

Once that is resolved this can be merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant