Repository navigation
feat(ngs2): route custom submixer buffers through Gain - #10851
Conversation
|
Owner coordination for this standalone audio-routing change, currently @JJenkx (#5548), @JAB-dev (#9926/#10410), @kyon-eth (#10599): the overlap scan identifies shared test registrations, event/control propagation, the integer-output guard and custom-module setup/processing. Could you confirm ownership and landing order? Maintainers can choose an order if the later branch preserves every topic's behavior and tests. I will validate whichever composition is selected; none has been built or claimed green yet. Two independent adversarial reviews and my source inspection confirmed these issues at the pinned counterpart heads:
Could the respective owners take those repairs, or confirm who should own them, before we attempt shared edits? This is a static-source report, not a console measurement. The other audited heads were #5548 On this branch, all four native/core route-mutation regressions fail at |
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed the exact-head follow-up e50cbf349d4e0af8647627640df9c8c9ddf610b7 against a43a610bbf8a8c5b9e7499dd2631247a8597a551. This follow-up is test-only: callback safety cases now require the exact refusal and a single callback invocation, and the integer-output case checks finite positive/negative gain plus nonfinite rejection with output sentinels unchanged. I found no issue in these added assertions. I did not build or run them locally; the 27/27 NGS2 results in the description are author-reported. This is not a full review or approval of the composed change: the PR remains draft while overlap owners coordinate, and the body says no combined branch has been validated.
|
Recommended landing queue, after refreshing current PR metadata and inspecting read-only source merge conflicts on 2026-10-25: #9926 → #10127 → #10851 → repaired #10410 → repaired #10599. Defer draft #5548 until its own evidence gaps are resolved. This replaces the open-ended landing-order question in my earlier coordination comment. It is my recommendation, not an agreement from other authors or a claim that any counterpart is ready to merge. This PR has no prerequisite and is being marked ready for standalone review; if an earlier item is unavailable, it can land independently. I accept ownership of rebasing #10851 after earlier changes and preserving their behavior/tests. No sibling branch was edited. Why this order:
Pinned inputs (main is still
I rechecked the two sibling defects at these unchanged heads: #10410 borrowed-PCM fixture, and #10599 position mask. @JAB-dev and @kyon-eth own those repairs unless they coordinate otherwise. @JJenkx: retention is not a prerequisite here. Owners/maintainers may choose a different queue; the later branch must preserve each topic and all registrations, then build both NGS2 libraries and run the union of their focused tests. #1384 at Validation for this documentation/readiness update: current heads/state/comments were refreshed; |
|
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.
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.
|
|
@Felipebmaitan The custom submixer buffers and the corrected Gain stage read well. One test change: Several cases the console accepts are left as
Each of those assertions would fail as soon as the case is implemented. Could you remove them (keep the |
|
@oneandonlydean Addressed in
Reconfigured and rebuilt both production NGS2 variants plus all 22 focused executables on Windows/WinLibs GCC 15.2.0, with build concurrency 2. At exact head Conventions and whitespace checks pass. The declaration audit passes for 368 libraries/12,231 exports. No new title, GPU, PS5 or original-module result is claimed. Historical refusal-mutation results are not evidence for the revised tests. Both fresh independent macro and micro reviews found no actionable candidate defect and confirmed the follow-up fulfills your request. Their source/artifact audits are separate from my exact-head build and 30/30 runtime execution above. This PR remains ready for standalone review; no sibling-owner agreement is a prerequisite. Independent review pins and integration notesBoth reviewers use GPT-6.1-Sol/xhigh with independent isolated worktrees. They are read-only; the parent owns all edits and the exact-head build/test result above. Reviewed base:
The previous queue's #9926, #10127 and #10410 are now merged into main. Newer #11352 at The micro reviewer reverified two separate sibling parameter-index issues: #10599 at The latest observed main AI-assisted: yes. |
|
@Felipebmaitan Thanks, removing those assertions while keeping the guards is what was asked. We'll review the update and the main merge, then run CI on this head. |
What
Custom submixers currently use one sample buffer for inputs, output ports and Gain. Add 1-4 per-voice buffers for custom submixers with zero modules or one Gain stage: inputs feed matching buffers, each grain clears unwritten samples, ports select their configured source, and Gain overwrites its selected destination. Broader chains and module routing stay unsupported until their processing-order contract is established.
Correct Gain's 37 unclamped levels, previous-level
i/Nramps, equal-gain fast path, steady zero clearing and steady unity copying. Invalid Gain positions return0x804A835Aand stop linked parameter processing. Contracts follow the PS5 12.70 module report and later findings; KytyPS5 corroborates port selection. No new console measurement is claimed.Unverified Gain initialization/lifecycle, callback setup/route changes and nonfinite integer rendering retain their runtime refusals and debt entries. Sampler Gain, broader custom chains and channel conversion remain outside this milestone. Tests exercise supported operations rather than requiring unimplemented cases to keep throwing.
Dean's requested follow-up is implemented at
c40ba98945e845b950ecca7819c472942757ad30. Merged main9b520147fbeddff4357d6e8f92e5235a16342171in0c3f104067239abd5358b8d1992295f9da7b27ee; then removed the unsupported exception assertions. CustomSafety keeps ordinary custom/upstream callbacks, explicitly configured Gain, route changes before rendering, callback counts, port metadata and literal output checks in both libraries. Gain keeps finite integer controls and its float/numeric/ramp coverage. Ngs2Custom's supported coverage is retained.The earlier proposed queue's #9926, #10127 and #10410 are now in main, including #10410's PCM-fixture lifetime repair. The merge preserves their PLAY/list-error propagation, PCM widths/accounting, mastering gain and all tests alongside this PR's Gain early errors and callback safeguards. No open prerequisite is required.
#11352 independently proposes the same Gain-ramp correction already included here; apply that correction once and preserve the combined coverage whichever PR lands first. Custom Reverb #10599, experimental PCM retention #5548, and newer custom-module/channel/codec work remain separate. Their later compositions must preserve each topic's scope, state ownership and test registrations and be validated at their actual heads. The refreshed overlap report and independent reviews record current pinned references; no sibling branch was edited or combined-runtime result claimed.
Tested
Windows 11 Pro 10.0.26200; WinLibs MinGW-w64 GCC 15.2.0 r7; Ninja Release, BUILD_TESTING=ON, SPIRV-Tools enabled. Latest exact head:
c40ba98945e845b950ecca7819c472942757ad30, main ancestor9b520147fbeddff4357d6e8f92e5235a16342171.cmake --build build --target <both libraries and NGS2 test targets> --parallel 2.ctest --test-dir build -R '^ngs2_' --output-on-failure --parallel 2: 30/30 passed, zero skips, 2.95 seconds. This includes all ten supported CustomSafety cases, Gain/Routing against both libraries, native/core PCM and native voice events.python -B tools/check_conventions.py --base origin/mainand exact-base whitespace checks pass.python -B core/libs/tests/test_public_headers.py --audit-only: 368 libraries/12,231 exports verified; this is a declaration audit, not a compiled-header run.The former unsupported-refusal tests and their historical mutation results are not retained-test evidence. No new title, GPU, original-module or PS5 run was performed for this follow-up. The earlier a43a610 production smoke reached a capped Dead Cells loading screen; it establishes no latest-head title result, audio fidelity, callback timing, GPU validation or performance. Full-suite/hosted runtime checks and unselected external compositions are not claimed.
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)