From f17b772c56cf73ac539b4c8c47e0a7c8f29dae5a Mon Sep 17 00:00:00 2001 From: Ac_K Date: Fri, 20 Sep 2019 01:49:05 +0200 Subject: audren: Fix AudioRenderer implementation (#773) * Fix AudioRenderer implementation According to RE: - `GetAudioRendererWorkBufferSize` is updated and improved to support `REV7` - `RequestUpdateAudioRenderer` is updated to `REV7` too Should improve results on recent game and close #718 and #707 * Fix NodeStates.GetWorkBufferSize * Use BitUtils instead of IntUtils * Nits --- .../Audio/AudioRendererManager/SplitterContext.cs | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/SplitterContext.cs (limited to 'Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/SplitterContext.cs') diff --git a/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/SplitterContext.cs b/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/SplitterContext.cs new file mode 100644 index 00000000..e46af443 --- /dev/null +++ b/Ryujinx.HLE/HOS/Services/Audio/AudioRendererManager/SplitterContext.cs @@ -0,0 +1,25 @@ +using Ryujinx.Common; + +namespace Ryujinx.HLE.HOS.Services.Audio.AudioRendererManager +{ + class SplitterContext + { + public static long CalcWorkBufferSize(BehaviorInfo behaviorInfo, AudioRendererParameter parameters) + { + if (!behaviorInfo.IsSplitterSupported()) + { + return 0; + } + + long size = parameters.SplitterDestinationDataCount * 0xE0 + + parameters.SplitterCount * 0x20; + + if (!behaviorInfo.IsSplitterBugFixed()) + { + size += BitUtils.AlignUp(4 * parameters.SplitterDestinationDataCount, 16); + } + + return size; + } + } +} \ No newline at end of file -- cgit v1.2.3