audio effects fix and audio object pooling

Revert and reimplement Float BiquadFilterEffect support, fixes infinite load issues in a few games like Splatoon 3.

Fix incorrect string check with the new thread naming system.

Implement object pooling for all Audio Commands and a few other audio related objects and use a growing error list for updating wave buffers instead of always allocating space for 8 errors.
This commit is contained in:
LotP 2025-10-25 21:07:10 -05:00 committed by KeatonTheBot
parent 86f47b8333
commit cdbe568620
43 changed files with 763 additions and 602 deletions

View file

@ -338,7 +338,7 @@ namespace Ryujinx.Audio.Renderer.Server
bool performanceInitialized = false;
PerformanceEntryAddresses performanceEntry = new();
PerformanceEntryAddresses performanceEntry = null;
if (_performanceManager != null && _performanceManager.IsTargetNodeId(nodeId) && _performanceManager.GetNextEntry(out performanceEntry, dataSourceDetailType, PerformanceEntryType.Voice, nodeId))
{
@ -499,7 +499,7 @@ namespace Ryujinx.Audio.Renderer.Server
{
int nodeId = sortedInfo.NodeId;
PerformanceEntryAddresses performanceEntry = new();
PerformanceEntryAddresses performanceEntry = null;
bool performanceInitialized = false;
@ -785,7 +785,7 @@ namespace Ryujinx.Audio.Renderer.Server
bool isFinalMix = mix.MixId == Constants.FinalMixId;
PerformanceEntryAddresses performanceEntry = new();
PerformanceEntryAddresses performanceEntry = null;
bool performanceInitialized = false;
@ -1049,7 +1049,7 @@ namespace Ryujinx.Audio.Renderer.Server
GenerateEffects(ref subMix);
PerformanceEntryAddresses performanceEntry = new();
PerformanceEntryAddresses performanceEntry = null;
int nodeId = subMix.NodeId;
@ -1080,7 +1080,7 @@ namespace Ryujinx.Audio.Renderer.Server
{
int nodeId = sortedInfo.NodeId;
PerformanceEntryAddresses performanceEntry = new();
PerformanceEntryAddresses performanceEntry = null;
bool performanceInitialized = false;
@ -1114,7 +1114,7 @@ namespace Ryujinx.Audio.Renderer.Server
GenerateEffects(ref finalMix);
PerformanceEntryAddresses performanceEntry = new();
PerformanceEntryAddresses performanceEntry = null;
int nodeId = finalMix.NodeId;
@ -1163,7 +1163,7 @@ namespace Ryujinx.Audio.Renderer.Server
{
int nodeId = _mixContext.GetFinalState().NodeId;
PerformanceEntryAddresses performanceEntry = new();
PerformanceEntryAddresses performanceEntry = null;
bool performanceInitialized = false;
@ -1243,7 +1243,7 @@ namespace Ryujinx.Audio.Renderer.Server
{
bool performanceInitialized = false;
PerformanceEntryAddresses performanceEntry = new();
PerformanceEntryAddresses performanceEntry = null;
if (_performanceManager != null && _performanceManager.GetNextEntry(out performanceEntry, PerformanceEntryType.Sink, sink.NodeId))
{