sharpemu/tests
kuba e7c7c27cbb [AudioOut2] Pace one grain per Advance+Push cycle and report the queue level
sceAudioOut2ContextAdvance and sceAudioOut2ContextPush each submitted the
context's pending PCM and, whenever nothing reached a host device, each slept
a whole grain in the software pacing fallback. A title that calls Advance then
Push once per grain therefore spent two grain periods per grain, so its audio
thread ran at half real time and held up every thread waiting on it.

Advance now claims the next grain on the context's clock and returns without
blocking (or, when its own submit already blocked in the backend, marks the
grain served), and Push waits for the grain Advance claimed; a Push with no
preceding Advance claims one itself. Neither call skips pending PCM. Because
the output holds QueueDepth grains, a grain may be queued as soon as the grain
QueueDepth-1 ahead of it starts playing, so a context can run that far ahead
of real time before a push blocks.

sceAudioOut2ContextGetQueueLevel reported an empty queue with the full depth
available on every call. Titles size their rendering by those two values --
Wwise renders exactly puiAvailableQueues grains per update and pushes them
non-blocking -- so a queue that never filled made it render a full queue every
update and then block inside Push for a grain per push while holding its audio
lock, which starved the game thread. The level now comes from the context's
grain clock, or, once a grain has reached a host device, from that device's
queued milliseconds beyond a short cushion.
2026-09-29 23:09:59 +02:00
..
SharpEmu.Libs.Tests [AudioOut2] Pace one grain per Advance+Push cycle and report the queue level 2026-09-29 23:09:59 +02:00
SharpEmu.ShaderCompiler.Metal.Tests Amd fix opcode nid filecache wave32 (#903) 2026-09-24 15:00:42 +03:00
SharpEmu.ShaderCompiler.Tests test(shader): cover SAshrI64 translation (#914) 2026-09-28 02:59:51 +03:00
SharpEmu.SourceGenerators.Tests feat(hle): prefer loaded guest exports for selected registrations (#844) 2026-08-25 22:32:57 +02:00