ci: add Linux aarch64 libretro build#458
Merged
Merged
Conversation
WizzardSK
force-pushed
the
ci-linux-aarch64
branch
from
July 25, 2026 21:01
4725e6a to
6c3c374
Compare
Author
|
Pushed a correction to this branch: the job no longer pins That tag does not exist. The aarch64 build image only publishes It isn't needed either — the aarch64 image installs the toolchain in its main Dockerfile: # Install newer GCC from Ubuntu toolchain PPA
RUN add-apt-repository ppa:ubuntu-toolchain-r/test && apt-get install -y gcc-12 g++-12 && \
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 && ...
# Install newer CMake from Kitware
RUN ... apt.kitware.com/ubuntu/ bionic main ... && apt-get install -y cmakeso the default image from |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a
libretro-build-linux-aarch64job so the core is built for Linux aarch64 on the buildbot (there is currently no Linux aarch64 nightly for dolphin).The core already compiles for aarch64 via the existing
android-arm64-v8ajob (JitArm64, ARM64 FFmpeg, etc.), and the CMake build handlesaarch64correctly (sets_M_ARM_64, ARM64 output paths). This job simply reuses the same CMake path with GCC 12 on the aarch64 backports image, mirroring the existinglibretro-build-linux-x64job (same-DLIBRETRO=ON -DENABLE_LTO=ONargs).Verified locally
Built on aarch64 Linux (postmarketOS, glibc, GCC 15) with
-DLIBRETRO=ON, producing a 19.4 MBdolphin_libretro.sowith no errors. I had to build with-DENABLE_LTO=OFFbecause the LTO link OOMs on my 3.8 GB test device; the CI runners have the headroom, so the job keeps the default-DENABLE_LTO=ONto match the x64 job.Runtime check on the resulting core (RetroArch 1.22.2, Adreno 618 / Mesa freedreno + Turnip): Mario Kart: Double Dash!! boots and renders at 60 fps with JitArm64 and the OGL backend. The Vulkan backend also negotiates its HW render context without errors.
Unrelated pre-existing bug found while testing
Not caused by this PR, but worth flagging: on aarch64 the default option combination
dolphin_cpu_core = JITARM64+dolphin_main_cpu_thread = enableddeadlocks — black screen and the frontend's main loop stops responding entirely (RetroArch does not even react to a networkQUITcommand). Reproduced 3/3. Changing either one of the two resolves it:dolphin_cpu_core = JITARM64+dolphin_main_cpu_thread = disabled-> 60 fpsdolphin_cpu_core = Cached Interpreter+dolphin_main_cpu_thread = enabled-> ~17 fpsSo it appears to be an interaction between JitArm64 and the separate CPU thread rather than a fault in either on its own. I can open a separate issue with logs if that is useful.