aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2022-09-09 22:16:24 -0300
committerGitHub <noreply@github.com>2022-09-10 01:16:24 +0000
commit81f1a4dc3161882b0385c9d4752fbba84b9eca96 (patch)
treeac0f24b578077e152cf58a4ce8c3a9f5e2a38c3b /Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs
parentc64524a240671cb3f8609e3454576e69e5948a60 (diff)
Allocate work buffer for audio renderer instead of using guest supplied memory (#3276)1.1.257
* Allocate work buffer for audio renderer instead of using guest supplied memory * Typo * Use GC.AllocateArray to allocate pinned array
Diffstat (limited to 'Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs')
-rw-r--r--Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs19
1 files changed, 12 insertions, 7 deletions
diff --git a/Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs b/Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs
index 904b56f6..af163ae0 100644
--- a/Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs
+++ b/Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs
@@ -55,7 +55,6 @@ namespace Ryujinx.Audio.Renderer.Server
private uint _processHandle;
private ulong _appletResourceId;
- private WritableRegion _workBufferRegion;
private MemoryHandle _workBufferMemoryPin;
private Memory<float> _mixBuffer;
@@ -98,7 +97,15 @@ namespace Ryujinx.Audio.Renderer.Server
_sessionId = 0;
}
- public ResultCode Initialize(ref AudioRendererConfiguration parameter, uint processHandle, CpuAddress workBuffer, ulong workBufferSize, int sessionId, ulong appletResourceId, IVirtualMemoryManager memoryManager)
+ public ResultCode Initialize(
+ ref AudioRendererConfiguration parameter,
+ uint processHandle,
+ Memory<byte> workBufferMemory,
+ CpuAddress workBuffer,
+ ulong workBufferSize,
+ int sessionId,
+ ulong appletResourceId,
+ IVirtualMemoryManager memoryManager)
{
if (!BehaviourContext.CheckValidRevision(parameter.Revision))
{
@@ -134,11 +141,10 @@ namespace Ryujinx.Audio.Renderer.Server
WorkBufferAllocator workBufferAllocator;
- _workBufferRegion = MemoryManager.GetWritableRegion(workBuffer, (int)workBufferSize);
- _workBufferRegion.Memory.Span.Fill(0);
- _workBufferMemoryPin = _workBufferRegion.Memory.Pin();
+ workBufferMemory.Span.Fill(0);
+ _workBufferMemoryPin = workBufferMemory.Pin();
- workBufferAllocator = new WorkBufferAllocator(_workBufferRegion.Memory);
+ workBufferAllocator = new WorkBufferAllocator(workBufferMemory);
PoolMapper poolMapper = new PoolMapper(processHandle, false);
poolMapper.InitializeSystemPool(ref _dspMemoryPoolState, workBuffer, workBufferSize);
@@ -841,7 +847,6 @@ namespace Ryujinx.Audio.Renderer.Server
_manager.Unregister(this);
_terminationEvent.Dispose();
_workBufferMemoryPin.Dispose();
- _workBufferRegion.Dispose();
if (MemoryManager is IRefCounted rc)
{