Skip to content

fix(audio-propagation): preserve existing destination mixes - #6513

Open
JJenkx wants to merge 2 commits into
boykopovar:mainfrom
JJenkx:fix/audio-propagation-preserve-mix
Open

JJenkx wants to merge 2 commits into
boykopovar:mainfrom
JJenkx:fix/audio-propagation-preserve-mix

Conversation

@JJenkx

@JJenkx JJenkx commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

What

sceAudioPropagationSourceRender currently clears every destination buffer even though the existing no-propagation model supplies no audio paths. That erases any audio already mixed by the caller or another source. Preserve the destination instead, while retaining all existing descriptor, system, source, buffer and format validation.

The additive-output contract comes from the public SharpProspero interop declaration and render-buffer documentation. This is a source-based correction, not console-measured behaviour. The technical-debt entry records that limitation. No acoustic simulation, path allocation, dry-signal rendering or additional formats are implemented, and this does not claim to unblock a title.

Tested

Arch Linux, Ryzen 9 7950X. Based on current main 03c4cb5e78e0679db09cbad743981068c40ed2c6.

  • Full runtime build: cmake --build build-full --target libs guest_audio_propagation_tests -j24 passed, Release, bundled dependencies.
  • ctest --test-dir build-full -R '^guest_audio_propagation$' --output-on-failure: passed, zero skips. Tests preserve distinct finite positive/negative sample patterns for one source, separate destinations with a shorter output range, a shared destination, overlapping destinations and an initially silent mix. Existing rejected-input and lifetime checks remain covered.
  • Negative control: the same updated test on unmodified main fails with empty source erased an existing mix; removing the destructive clear makes it pass.
  • Conventions, test registration and whitespace checks passed. No native-title, Windows or console run performed.

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; existing silent-stub limitations remain documented in the library debt file
  • No notes, investigation .md files or images added to the repository
  • New third-party code is a submodule built from source (none added)
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 6044 core/libs/tests/GuestAudioPropagation.cpp

@JJenkx

JJenkx commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

Temporarily parking this PR to free one of the 20 open slots for the refreshed ULT condition-variable implementation in #5942, which addresses four imports previously blocking Earthion PPSA28061. This audio correction remains valid, but currently has no demonstrated native-title benefit or outside validation.

Implementation and tests are preserved on fix/audio-propagation-preserve-mix at 4c2b12439f3883cff7c4dcba10f31a3b047bf311; the branch is retained. Reopen when a title reproduces the erased-mix problem, an independent review/test makes it ready to merge, or an available slot makes it the best next contribution.

@JJenkx JJenkx closed this Oct 18, 2026
@JJenkx JJenkx reopened this Oct 19, 2026
@oneandonlydean oneandonlydean self-assigned this Oct 20, 2026

This branch has not been deployed

No deployments
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.

2 participants