Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update LWJGL from v3.3.4 to v3.3.6 #2371

Merged
merged 1 commit into from
Feb 27, 2025
Merged

update LWJGL from v3.3.4 to v3.3.6 #2371

merged 1 commit into from
Feb 27, 2025

Conversation

stephengold
Copy link
Member

Last week, in jMonkeyEngine 3.8.0-alpha3, we finally upgraded jme3-lwjgl3 and jme3-vr to use LWJGL v3.3.4.

V3.3.4 is over 6 months old. Already there are 2 newer releases out: v3.3.5 and v3.3.6. The differences between them are so slight that I propose we upgrade directly from v3.3.4 to v3.3.6. This pull request implements that upgrade.

I'm unsure whether this change should go public in JME v3.8.0-stable or in a later release. I'll leave that decision to the release manager .

Either way, we'll need someone to test on VR hardware. Currently, I don't have access to such hardware. @jseinturier and @phr00t can you help?

@yaRnMcDonuts
Copy link
Member

I'm unsure whether this change should go public in JME v3.8.0-stable or in a later release. I'll leave that decision to the release manager .

I'd say it is a good decision to update to the newest LWJGL3 version, and to try to keep up to date anytime they release a new one.

If you can submit another PR upgrading the version, then I'll add it to the list of PRs ready for review in the 3.8 thread on the jme hub, and we can hopefully get some users with VR to test it in time.

@stephengold stephengold added this to the v3.8.0 milestone Feb 16, 2025
@stephengold
Copy link
Member Author

If you can submit another PR upgrading the version

This is that PR! If I was unclear, I apologize.

Based on your comments, I've gone ahead and added this to v3.8.0 milestone.

@yaRnMcDonuts
Copy link
Member

This is that PR! If I was unclear, I apologize.

Oops that's my bad for misunderstanding, I am still sick and not thinking straight at times, so I mistook this as an issue and not a PR at first glance when I responded.

@richardTingle
Copy link
Member

richardTingle commented Feb 21, 2025

I tried this with Tamarin and it crashes with

Exception in thread "main" java.lang.NoSuchFieldError: Class org.lwjgl.openxr.XrVector3f does not have member field 
'sun.misc.Unsafe UNSAFE'

But that is pretty much always the case with a change in LWJGL version. When jme 3.8.0 comes out I'll create a new Tamarin version and update the compatibility table.

This problem is caused because Tamarin has to ship lwjgl-openxr separately (and so has to keep the JME LWJGL and Tamarin LWJGL versions in sync)

More worryingly when I do align the LWJGL versions I get this

com.onemillionworlds.tamarin.openxr.OpenXrSessionManager$OpenXrException: Open XR returned an error code -4

I think this is the problem described at https://stackoverflow.com/questions/79048790/how-to-query-the-openxr-runtimes-api-version. I'll have an investigate. The stack overflow post does suggest an (ugly) solution.

Edit; yes, that is easy enough to fix just by pinning my version rather than letting it use whatever the most recent version it is aware of is

p.s. I notice that this PR changes OSVR.java. Are you specifically looking for someone to test exercising that bit of code? OSVR is horrifically deprecated (like even more deprecated than the other VR support in JME). E.g. see this post from a mod on the OSVR reddit 6 years ago saying "don't go with OSVR" https://www.reddit.com/r/OSVR/comments/bgby9y/what_happened_to_osvr_read_me_if_youre_new/)

@stephengold
Copy link
Member Author

OSVR is horrifically deprecated

Perhaps v3.8.0 presents a good opportunity to remove OSVR from JMonkeyEngine. Worth discussing at the Forum, anyway.

@richardTingle
Copy link
Member

I've started a discussion at https://hub.jmonkeyengine.org/t/should-osvr-very-old-vr-standard-be-removed-from-jme/48234

@richardTingle
Copy link
Member

I've put in a PR to remove OSVR support at #2380.

I tested it by exercising OpenVR (LWJGL version) on a Quest 3 just to make sure I hadn't inadvertently broken OpenVR support when I deleted OSVR

Interestingly my virus checker (bitdefender) is convinced that LWJGL V3.3.4 has trojans in it (but not v3.3.6). A false alarm I'm sure but another reason to update. As a result I tested my changes with your changes merged into it (which is probably a good thing anyway - confirms 3.3.6 is fine with OpenVR).

It will merge conflict with this PR so whoever goes second will have to deal with that but it is a very mild merge conflict (we just have to accept the side that deletes OSVR.java

@yaRnMcDonuts
Copy link
Member

yaRnMcDonuts commented Feb 25, 2025

@richardTingle thanks for your insight! I will go ahead and merge this in 24 hours, and then we can work on resolving the conflicts and merging PR #2380 and #2373

@yaRnMcDonuts yaRnMcDonuts merged commit e6f0c9d into master Feb 27, 2025
15 checks passed
@stephengold stephengold deleted the sgold/lwjgl336 branch February 27, 2025 17:25
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.

3 participants