aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAc_K <Acoustik666@gmail.com>2019-04-24 16:22:06 +0200
committerjduncanator <1518948+jduncanator@users.noreply.github.com>2019-04-25 00:22:06 +1000
commit156a32b4d016db5a26373192a9012c40fc7a9450 (patch)
tree42132d2d8c76751d5acfcbbdd59f45328152c619
parent354a30370d91f23cb2aff58de3ff906a0c278afc (diff)
Fix GetAudioRendererWorkBufferSize for REV5 (#677)
* Fix GetAudioRendererWorkBufferSize for REV5 This should be close #669. Based of my own RE. * Fix nit Co-Authored-By: AcK77 <Acoustik666@gmail.com> * Fix RE mistake * Fix nit 2
-rw-r--r--Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs23
1 files changed, 19 insertions, 4 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs b/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs
index fb1409f4..18e9184c 100644
--- a/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs
+++ b/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs
@@ -16,7 +16,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
('V' << 16) |
('0' << 24);
- private const int Rev = 4;
+ private const int Rev = 5;
public const int RevMagic = Rev0Magic + (Rev << 24);
@@ -58,8 +58,9 @@ namespace Ryujinx.HLE.HOS.Services.Aud
if (revision <= Rev)
{
- bool isSplitterSupported = revision >= 3;
-
+ bool isSplitterSupported = revision >= 3;
+ bool isVariadicCommandBufferSizeSupported = revision >= 5;
+
long size;
size = IntUtils.AlignUp(Params.Unknown8 * 4, 64);
@@ -99,7 +100,21 @@ namespace Ryujinx.HLE.HOS.Services.Aud
(Params.PerformanceManagerCount + 1) + 0x13F) & ~0x3FL;
}
- size = (size + 0x1907D) & ~0xFFFL;
+ if (isVariadicCommandBufferSizeSupported)
+ {
+ size += Params.EffectCount * 0x840 +
+ Params.MixCount * 0x5A38 +
+ Params.SinkCount * 0x148 +
+ Params.SplitterDestinationDataCount * 0x540 +
+ Params.VoiceCount * (Params.SplitterCount * 0x68 + 0x2E0) +
+ ((Params.VoiceCount + Params.MixCount + Params.EffectCount + Params.SinkCount + 0x65) << 6) + 0x3F8 + 0x7E;
+ }
+ else
+ {
+ size += 0x1807E;
+ }
+
+ size = size & ~0xFFFL;
context.ResponseData.Write(size);