Commit Graph
23051 Commits
Author SHA1 Message Date
MarcZX10 c255f112db feat(libSceAudioOut): apply the host volume where AudioOut2 hands PCM to the device
DeviceCallback applies the context's ramp to the stereo float it just filled, which is the only place the AudioOut2 main mix reaches the speakers; the title's own volumes and the mastering stay before it. At the default volume the ramp is at unity and the call returns without touching the stream. The controller sound card keeps its own path and is not touched.
2026-10-30 16:29:55 +01:00
MarcZX10 1e82fc5a7e feat(libSceAudioOut): give each AudioOut2 context a host gain ramp
Ten milliseconds of the 48 kHz stereo output for a full-scale change.
2026-10-30 16:29:55 +01:00
MarcZX10 0b8656250b feat(libSceAudioOut): apply the host volume where AudioOut queues PCM to SDL
Every non-vibration port goes through HostGainFilter just before SDL_QueueAudio, after the title's volume and channel order. With the default volume the filter returns the title's buffer untouched. Vibration ports go to the controller's sound card and are not touched.
2026-10-30 16:29:55 +01:00
MarcZX10 30cca88304 feat(libSceAudioOut): give every AudioOut port its own host gain ramp
The ramp is ten milliseconds of the port's own frame rate for a full-scale change, and a reopened port starts from unity.
2026-10-30 16:29:55 +01:00
MarcZX10 4957afdb77 build(libSceAudioOut): compile the host volume state into the tests that build AudioOut.cpp
The vibration device, default open and buffer size tests compile AudioOut.cpp directly, so they need the state it will read.
2026-10-30 16:29:55 +01:00
MarcZX10 e68a8008b2 test(libSceAudioOut): cover the shared host volume, its settings and its focus rule
Register audio_out_host_volume_state. Covers the unity default, each command publishing its gain, focus acting only with the option on, initial values, a refused configuration leaving the state alone, both variables read from the environment with the invalid one named, and readers never seeing a gain above unity while commands run.
2026-10-30 16:29:55 +01:00
MarcZX10 31c54b6cb3 feat(libSceAudioOut): keep one shared host volume for the process
The state sits behind a mutex and publishes its gain through an atomic, so the audio threads read it without locking. HostVolumeConfigure replaces the state, parsing ANYPS5_VOLUME and ANYPS5_MUTE_ON_FOCUS_LOSS before changing anything, so an invalid value leaves it untouched and throws an error naming the variable.
2026-10-30 16:29:55 +01:00
MarcZX10 49d4cd5d9b test(libSceAudioOut): cover the host volume feedback lines
Level at the default and after a step, the user's mute, the focus mute, and the user's mute taking precedence.
2026-10-30 16:29:55 +01:00
MarcZX10 685ea93a0e feat(libSceAudioOut): word the one-line host volume feedback
The message gives the level, or says the volume is muted by the user or by the window losing focus, always with the level it returns to.
2026-10-30 16:29:55 +01:00
MarcZX10 0034db7a8c test(libSceAudioOut): cover accepting and refusing the host volume settings
Accepts 0 and 1 for the flag and 0 to 100 for the level; refuses empty, padded, signed, fractional, out-of-range and overflowing values with the variable named.
2026-10-30 16:29:55 +01:00
MarcZX10 2dbb988fae feat(libSceAudioOut): parse the host volume settings strictly
A flag is exactly 0 or 1 and a level a whole number from 0 to 100. Anything else, including an empty value, throws an error that names the variable and quotes the value.
2026-10-30 16:29:55 +01:00
MarcZX10 98d5899f44 test(libSceAudioOut): cover the host gain filter's bypass and copy rules
At unity the title's pointer comes back and nothing is copied, a changed gain works on a copy and leaves the title's buffer as it was, and the scratch buffer is processed in place.
2026-10-30 16:29:55 +01:00
MarcZX10 cd606d57a1 feat(libSceAudioOut): add a filter that leaves the title's buffer alone
HostGainFilter returns the title's own pointer when the ramp is at unity with a unity target, so the default path copies nothing and multiplies nothing. Otherwise it applies the ramp to a scratch copy, or in place when the data already is the scratch buffer, and never writes the title's memory.
2026-10-30 16:29:55 +01:00
MarcZX10 049cf7c80f test(libSceAudioOut): cover the float host gain on mono, stereo and 8 channels
Covers the byte-for-byte bypass at unity, the first sample and landing frame matching the 16-bit ramp, no step above the slope, a ramp split across buffers, and the absence of clamping.
2026-10-30 16:29:55 +01:00
MarcZX10 eed0017aa0 feat(libSceAudioOut): add the gain ramp for 32-bit float host audio
The float overload uses the same per-frame gain as the 16-bit one, converted exactly from the fixed-point value, and does not clamp. At unity with a unity target it touches nothing.
2026-10-30 16:29:55 +01:00
MarcZX10 fc729b1f4a test(libSceAudioOut): cover the 16-bit host gain on mono, stereo and 8 channels
Register audio_out_host_gain. Covers the byte-for-byte bypass at unity, the exact first sample and landing frame of a ramp, no step larger than the ramp slope, a ramp split across buffers equal to one buffer, saturation above unity, one gain per frame on every channel, a silent gain, and the return to bypass.
2026-10-30 16:29:55 +01:00
MarcZX10 9ba3f5d80a feat(libSceAudioOut): add a gain ramp for 16-bit host audio
HostGainRamp moves a 16.16 fixed-point gain toward its target by a constant step per frame, so the ramp is exact, continues across buffers and applies one gain to every channel of a frame. 16-bit samples are rounded and saturate. At unity with a unity target nothing is touched.
2026-10-30 16:29:55 +01:00
MarcZX10 0c5e8f4fec test(libSceAudioOut): cover the gain derived from the host volume
Unity at the default, 16384 at 50, strictly growing and never above unity, and 0 while muted or focus muted.
2026-10-30 16:29:55 +01:00
MarcZX10 7a95f2cefd feat(libSceAudioOut): derive the output gain from the host volume
The gain is a 16.16 fixed-point amplitude of the volume squared, so 100 is exactly unity and 0 is silence. Mute and focus mute force it to 0.
2026-10-30 16:29:55 +01:00
MarcZX10 a0dd35ca5f test(libSceAudioOut): cover the focus mute transitions
Covers the option off, a focus loss and gain with it on, the user's own mute and volume surviving a round trip, and the option changing while the window is unfocused.
2026-10-30 16:29:55 +01:00
MarcZX10 4d7b8f0180 feat(libSceAudioOut): track window focus in the host volume
With the option on, a window without focus counts as muted and gaining focus ends it. The focus mute is derived from the focus and the option, so it never replaces the user's own mute. With the option off, focus changes change nothing.
2026-10-30 16:29:55 +01:00
MarcZX10 a42c4ecb0b test(libSceAudioOut): cover setting the host volume directly
Values 0 to 100 are taken, anything else is refused without changing the state, and the mute is left alone.
2026-10-30 16:29:55 +01:00
MarcZX10 dc7fc6b108 feat(libSceAudioOut): let the host volume be set directly
SetVolume takes a value from 0 to 100 for an initial volume and refuses anything else.
2026-10-30 16:29:55 +01:00
MarcZX10 e729d8fbf5 test(libSceAudioOut): cover volume steps ending a mute
Both directions unmute, including at 0 and at 100 where the volume itself cannot move.
2026-10-30 16:29:55 +01:00
MarcZX10 e2962efdb8 feat(libSceAudioOut): let a volume step end an explicit mute
Raising or lowering the volume while muted unmutes, so the step is audible. A step that cannot move the volume still reports a change when it unmutes.
2026-10-30 16:29:55 +01:00
MarcZX10 a5a8a4ba74 test(libSceAudioOut): cover mute and unmute restoring the volume
Muting at 100, at 90 and at 0 keeps the volume, and unmuting returns it.
2026-10-30 16:29:54 +01:00
MarcZX10 67cb5a3301 feat(libSceAudioOut): add a mute toggle to the host volume
The muted flag is separate from the volume, so unmuting brings back the volume that was set before.
2026-10-30 16:29:54 +01:00
MarcZX10 2c0f6a8174 test(libSceAudioOut): cover the host volume steps and their limits
Register audio_out_host_volume. It starts at 100, moves in steps of 5 in both directions, and refuses to leave 0 to 100.
2026-10-30 16:29:54 +01:00
MarcZX10 42a4f6b20d feat(libSceAudioOut): add the host volume state with fixed steps
HostVolume holds the host output volume from 0 to 100 and moves it in steps of 5 without leaving the range. A move that changes nothing returns false.
2026-10-30 16:29:54 +01:00
Adrià 9f748f4d8e Merge pull request #13036 from edubox/feat/npcpp-matchmaking
feat(libSceNpCppWebApi): bring up Matchmaking V1 offline
2026-10-30 16:29:21 +01:00
Adrià 3465fa32fc Merge pull request #13025 from JJenkx/fix/libc-stream-scan-eof-errno
fix(libc): preserve errno on stream scan input exhaustion
2026-10-30 16:29:12 +01:00
Adrià 6fe9c81379 Merge pull request #13002 from JJenkx/fix/import-audit-unrelated-helper-branches
fix(tools): avoid expanding unrelated helper host branches
2026-10-30 16:29:03 +01:00
Adrià 50c39f09b5 Merge pull request #12415 from Elma7e/test/np-session-signaling-post-terminate-lifecycle
test(libSceNpSessionSignaling): cover post-terminate CreateContext lifecycle
2026-10-30 16:27:01 +01:00
Adrià c21e5c8b27 Merge pull request #13126 from iamthehimansh/split/macos-pool-reset-terminate
test(agc): catch the descriptor pool reset terminate on macOS
2026-10-30 16:26:13 +01:00
Adrià 74deb875a1 Merge pull request #13051 from heditrigui/feat/libSceVdecsw-picture-info
test(libSceVdecsw): cover two-picture output rejection in GuestVdecsw
2026-10-30 16:26:05 +01:00
Adrià 91cd8ac6fd Merge pull request #13049 from JJenkx/fix/libc-character-scan-lengths
fix(libc): ignore non-wide lengths on character scans
2026-10-30 16:25:56 +01:00
Adrià 63dfcc3166 Merge pull request #13279 from JJenkx/fix/pad-injected-modal-dialog
fix(pad): let harness input answer system dialogs
2026-10-30 16:21:04 +01:00
Adrià 8ad062d14e Merge pull request #13278 from bunbeans2-arch/fix/tests-configure-seed-utf8
fix(tests): decode configure_seed output as UTF-8
2026-10-30 16:20:54 +01:00
Adrià b44f8ab346 Merge pull request #12306 from edubox/feat/http2-gzip
feat(http2): inflate gzip response bodies
2026-10-30 16:20:45 +01:00
Dean ed1e0ed08f Merge pull request #13252 from hugodearaujo/fix/label-takes-prune
perf(agc): prune and gate the label take records
2026-10-31 03:46:31 +13:00
Adrià 2614f409dc Merge pull request #12953 from frankea/feat/acm-batch-job-priority
feat(libSceAcm): encode sceAcmBatchJobPriority jobs
2026-10-30 15:45:46 +01:00
Adrià 01069f4d2b Merge pull request #12954 from hugodearaujo/fix/audioout2-blocking-push
fix(libSceAudioOut): return from a blocking AudioOut2 push once the queue has room
2026-10-30 15:45:36 +01:00
Adrià 9f3366ac35 Merge pull request #12737 from xdCloudy/codex/pr-overlap-fail-closed
fix(tools): fail closed on incomplete overlap checks
2026-10-30 15:45:27 +01:00
Adrià 82ddc5a9e0 Merge pull request #12287 from Filip722/perf/shader-zero-left-max
perf(shader): simplify float max with a positive zero lhs
2026-10-30 15:21:55 +01:00
Adrià 6154580567 Merge pull request #12968 from GiannisG1/test/unclamped-blend-skip-without-formatless-reads
test(agc): skip the unclamped normalized blend test without shaderStorageImageReadWithoutFormat
2026-10-30 15:21:40 +01:00
Adrià 71c5d4e6d6 Merge pull request #13118 from Rengundom/refactor/terminal-reachability
refactor(shader): short-circuit terminal reachability checks
2026-10-30 15:21:27 +01:00
Adrià d6401d794e Merge pull request #13105 from Queuse/codex/test-memccpy-boundaries-20261029
test(libc): guard memccpy stop boundaries
2026-10-30 15:08:47 +01:00
Adrià b1b5353cfc Merge pull request #11413 from atinseau/codex/relinker-island-function-entry
fix(relinker): keep moved instructions off a function entry after padding
2026-10-30 14:48:59 +01:00
Adrià 4f631cb4e1 Merge pull request #6628 from MarcZX10/codex/bda-msaa-range-guard-6625
fix(agc): exclude native MSAA spans from BDA tables
2026-10-30 14:47:54 +01:00
Adrià d998343ced Merge pull request #12039 from milescoviello/perf/ir-use-arena
perf(shader): allocate a program's use lists from an arena
2026-10-30 14:38:29 +01:00