Skip to content

Conversation

kvnp
Copy link

@kvnp kvnp commented May 14, 2024

This PR attempts to add ARM64 targets for Windows and Linux. The arm64 build for Windows seems to work out of the box.

There are two issues I'm currently facing:

  1. Squirrel does not distinguish between multi-target builds. The releasified package does not take into account the architecture, which is given by changing the filename of the packed .nupkg file. This means that packages built for other Windows targets will be replaced, as will the entries in the RELEASES file. According to this issue How to release both x64 and ia32 versions Squirrel/Squirrel.Windows#554, a separate endpoint per target is required. This means that a separate release per architecture is required in osus releases page to solve this problem, which is not a pretty solution. What are your thoughts on this?

  2. The Linux builds compile but do not currently run. It's not clear to me how the dependencies in the folder ./osu/osu.Desktop/bin/Debug/net8.0/runtimes/linux-arm64/ are collected, as no error messages appeared during compilation. Some libraries are missing when compared to those under win-arm64. For example, bass_fx. Any advice on this matter is greatly appreciated.

@smoogipoo
Copy link
Contributor

x86 builds will never be supported. Please remove.

@smoogipoo
Copy link
Contributor

smoogipoo commented May 14, 2024

Here's a list of tasks:

Also, I don't currently own a win-arm64 machine to test with, complicating things a bit (will look into it, but this is not a priority because it emulates win-x64 anyway and otherwise has a low userbase).

@kvnp kvnp changed the title Add x86 and ARM targets (Windows and Linux) Add ARM64 targets for Windows and Linux May 14, 2024
@kvnp
Copy link
Author

kvnp commented May 15, 2024

I rewrote the build script for SDL3 using Docker, and while the build times are not great, it looks promising. However, Git is not happy for some reason.

https://github.com/kvnp/SDL3-CS/actions/runs/9088862218

@kvnp
Copy link
Author

kvnp commented May 19, 2024

PRs for SDL3-CS, Veldrid-Spirv and ffmpeg have been opened.

How should I approach this? Just add these to a PR?

  • Anticheat is not compiled for linux-arm64. This is somewhat difficult to do at the moment.

Is there anything I can do to get this task done?

@ThatStella7922
Copy link

Figured I'd add, Windows ARM64 is exceptionally easy to test with because of Apple Silicon Macs. VMWare Fusion is free and runs Windows 11 ARM64. It's able to run osu!lazer perfectly fine with the Veldrid DX11 and OpenGL renderers, and you have the full suite of Visuai Studio ARM64 dev tools as well.

@JamiKettunen
Copy link

JamiKettunen commented Apr 30, 2025

With https://github.blog/changelog/2025-01-16-linux-arm64-hosted-runners-now-available-for-free-in-public-repositories-public-preview/ and https://github.blog/changelog/2025-04-14-windows-arm64-hosted-runners-now-available-in-public-preview/ around this should be much nicer to continue work on in general. In ppy/veldrid-spirv#10 I've focused the original efforts solely on ARM64 as well and confirmed the artifacts as working on my Asus Vivobook S 15 (Snapdragon X Elite)

@JamiKettunen
Copy link

Now with the linked osu-framework PR now being merged more or less just getting anti-cheat up for ARM64 as well is all that should be needed. Shipping a native win-arm64 build with the win-x64 lib should work just fine and I could test that if needed as well, the x64 build of the whole game does already run albeit with degraded performance.

linux-arm64 probably needs the nativelibs from osu-framework @ master (until tagged/bumped again in ppy/osu when the current updated BASS situation is figured out) since the currently existing x86/x64 translation layers with decent performance (FEX/box64 etc) aren't really widely integrated anywhere by default.

@JamiKettunen
Copy link

The nativelibs I've mentioned have now all landed and it's as simple to run the game built from source on ARM64 now as it is x86_64. Any chance for someone to look at the anti-cheat since that's not something I could possibly help with (it being closed-source and all)? Depending on how it's built the GitHub ARM64-native builders could help here which I linked in a previous comment and at least there doesn't seem to be an issue building it for ARM64 Apple silicon Macs :)

While the Linux side is looking good from my POV win-arm64 still should probably get similarly up-to-date BASS library source to everything else (bass/fx/mix of 2.4.17.48/2.4.12.16/2.4.12.4 instead of 2.4.17.0/2.4.12.5/2.4.12.0 currently used with ppy/osu-framework@256ce2a with no library updates since even seen by looking at commits to the dirs in https://github.com/ppy/osu-framework/tree/master/osu.Framework.NativeLibs/runtimes). With the semi-cursed Windows Arm64EC architecture one potentially could even ship the x64 versions of BASS (or even anti-cheat?) for now while having the rest of it be native.

Otherwise this PR could use rebasing which I could maybe look at and submit. Is there anything else I could help with than that though? Since BASS is closed source too that likely would need contact to the developers most likely to get more up-to-date binaries for ARM64 Windows (ideally they should be shipped all-architectures-in-one like https://www.un4seen.com/stuff/bass-linux.zip so they're always updated together).

@shiumano
Copy link

shiumano commented Aug 31, 2025

It may sound strange, but you can run the Linux version on Android using an app called Termux.There are no additional native libraries that need to be built.
Screenshot_20250901-012847
What's even stranger is that the Linux version performs better than the Android version...

@JamiKettunen
Copy link

@shiumano This is a pull request, we are trying to make development stuff happen, please take offtopic discussion elsewhere. Also I see nothing strange based on the game rendering practically at a quarter of your native resolution.

@shiumano
Copy link

I'm sorry.
From what I've seen, it seems to work fine on Linux ARM64.

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.

5 participants