diff options
author | gdkchan <gab.dark.100@gmail.com> | 2022-09-09 22:16:24 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-10 01:16:24 +0000 |
commit | 81f1a4dc3161882b0385c9d4752fbba84b9eca96 (patch) | |
tree | ac0f24b578077e152cf58a4ce8c3a9f5e2a38c3b /Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs | |
parent | c64524a240671cb3f8609e3454576e69e5948a60 (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.cs | 19 |
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) { |