diff options
| author | Ac_K <Acoustik666@gmail.com> | 2019-04-24 16:22:06 +0200 |
|---|---|---|
| committer | jduncanator <1518948+jduncanator@users.noreply.github.com> | 2019-04-25 00:22:06 +1000 |
| commit | 156a32b4d016db5a26373192a9012c40fc7a9450 (patch) | |
| tree | 42132d2d8c76751d5acfcbbdd59f45328152c619 | |
| parent | 354a30370d91f23cb2aff58de3ff906a0c278afc (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.cs | 23 |
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); |
