Skip to content

fix(build): require an SDL audio backend on Linux - #3574

Merged
adriadam10 merged 1 commit into
boykopovar:mainfrom
marshmll:fix/linux-sdl-audio-backends
Oct 11, 2026
Merged

adriadam10 merged 1 commit into
boykopovar:mainfrom
marshmll:fix/linux-sdl-audio-backends

Conversation

@marshmll

Copy link
Copy Markdown
Contributor

What

On Linux the bundled SDL builds its PipeWire, PulseAudio and ALSA audio drivers only when their development files are found. Without them it keeps only the silent dummy and disk drivers and configuration still succeeds, so titles run with no sound and nothing reports why.

The Linux jobs in build.yml and release.yml install only libvulkan1 and mesa-vulkan-drivers, so the published v0.1.1 Linux libraries are built this way: strings on libSceAudioOut.prx, libSceAgcDriver.prx and libfmod.prx from prx-linux-v0.1.1.tar.gz finds only "SDL dummy audio driver" and "direct-to-disk audio", and no libpulse.so.0, libpipewire-0.3.so.0 or libasound.so.2.

  • CMakeLists.txt: on Linux, with the bundled SDL, configuration fails with the package names when SDL found none of PipeWire, PulseAudio or ALSA (HAVE_PIPEWIRE, HAVE_PULSEAUDIO, HAVE_ALSA in SDL's directory scope). SDL already defaults these drivers ON and loads the libraries at run time (*_SHARED), so the built libraries gain no link dependency. ANYPS5_USE_SYSTEM_DEPS=ON is unchanged.
  • build.yml and release.yml: the Linux jobs install libpipewire-0.3-dev, libpulse-dev and libasound2-dev.
  • docs/dev/BUILD.md: lists the packages for Debian/Ubuntu and Fedora.

Tested

Fedora 44, GCC 16.2.1, AMD RX 9060 XT (RADV, Mesa), PipeWire.

  • Dreaming Sarah (PPSA02929) on current main without the audio development packages: the generated SDL_config.h defines only the DISK, DUMMY and OSS audio drivers, and the title opens its AudioOut port (Audio out started (port#1,256[samples],48000[Hz],2[ch])) with no sound. After installing pipewire-devel, pulseaudio-libs-devel and alsa-lib-devel and reconfiguring, SDL defines PIPEWIRE, PULSEAUDIO and ALSA, the title shows up as a PulseAudio stream and is audible. Rendering was fine in both 90 s runs; no crash.
  • Configuration with -DSDL_PIPEWIRE=OFF -DSDL_PULSEAUDIO=OFF -DSDL_ALSA=OFF stops with the new error; a normal configuration passes.
  • ctest before the change: 838 tests on RADV, all passed. On lavapipe only agc_driver_emulated_color_compare (linux CI + NVIDIA: agc_driver_emulated_color_compare fails on main since #3438 (8-bit sRGB compare refused on the decode path) #3526) and agc_driver_image_plane_address_on_line_implicit_lod (test(agc): skip the level checks of the implicit-LOD 1D sample test on llvmpipe #3418) fail, the same as on main. After the change, the audio, pad and VideoOut tests (25) pass on lavapipe.
  • python3 tools/check_conventions.py --base origin/main passes.
  • The Ubuntu package install in the workflows was not run locally.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • AI-assisted: yes

The bundled SDL builds its PipeWire, PulseAudio and ALSA drivers only
when their development files are found, and otherwise keeps just the
silent dummy and disk drivers without an error. The Linux CI and
release jobs install none of them, so the v0.1.1 Linux libraries
(libSceAudioOut, libSceAgcDriver, libfmod) contain no audible driver.

Fail configuration on Linux when SDL found none of the three, install
the Debian development packages in the Linux build and release jobs,
and list the packages in the build instructions.
@github-actions

github-actions Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
#3664 .github/workflows/build.yml L218-219
.github/workflows/release.yml L65
docs/dev/BUILD.md L30
#3994 docs/dev/BUILD.md L29-30

@adriadam10

Copy link
Copy Markdown
Collaborator

Checked the configure check on Linux: with -DSDL_PIPEWIRE=OFF -DSDL_PULSEAUDIO=OFF -DSDL_ALSA=OFF it stops with the new message, and a normal configuration passes; full build and ctest on Linux pass (the only failures are window-opening video-out tests that time out here without this change too). The Ubuntu package install is covered by a manual full Build run before merging; merging once it is green.

@adriadam10
adriadam10 merged commit b6b7deb into boykopovar:main Oct 11, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants