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
This commit is contained in:
Ac_K 2019-04-24 16:22:06 +02:00 committed by jduncanator
parent 354a30370d
commit 156a32b4d0

View file

@ -16,7 +16,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
('V' << 16) | ('V' << 16) |
('0' << 24); ('0' << 24);
private const int Rev = 4; private const int Rev = 5;
public const int RevMagic = Rev0Magic + (Rev << 24); public const int RevMagic = Rev0Magic + (Rev << 24);
@ -59,6 +59,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
if (revision <= Rev) if (revision <= Rev)
{ {
bool isSplitterSupported = revision >= 3; bool isSplitterSupported = revision >= 3;
bool isVariadicCommandBufferSizeSupported = revision >= 5;
long size; long size;
@ -99,7 +100,21 @@ namespace Ryujinx.HLE.HOS.Services.Aud
(Params.PerformanceManagerCount + 1) + 0x13F) & ~0x3FL; (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); context.ResponseData.Write(size);