mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-04-15 10:42:54 +00:00
SDK20 and REV15 support (ryubing/ryujinx!50)
See merge request ryubing/ryujinx!50
This commit is contained in:
@@ -20,14 +20,14 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
/// </summary>
|
||||
public ulong Size;
|
||||
|
||||
private unsafe MemoryPoolState* _memoryPools;
|
||||
private unsafe MemoryPoolInfo* _memoryPools;
|
||||
|
||||
/// <summary>
|
||||
/// The forced DSP address of the region.
|
||||
/// </summary>
|
||||
public DspAddress ForceMappedDspAddress;
|
||||
|
||||
private readonly unsafe ref MemoryPoolState MemoryPoolState => ref *_memoryPools;
|
||||
private readonly unsafe ref MemoryPoolInfo MemoryPoolInfo => ref *_memoryPools;
|
||||
|
||||
public readonly unsafe bool HasMemoryPoolState => (nint)_memoryPools != nint.Zero;
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
return new AddressInfo
|
||||
{
|
||||
CpuAddress = cpuAddress,
|
||||
_memoryPools = MemoryPoolState.Null,
|
||||
_memoryPools = MemoryPoolInfo.Null,
|
||||
Size = size,
|
||||
ForceMappedDspAddress = 0,
|
||||
};
|
||||
@@ -73,19 +73,19 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
|
||||
unsafe
|
||||
{
|
||||
_memoryPools = MemoryPoolState.Null;
|
||||
_memoryPools = MemoryPoolInfo.Null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the <see cref="MemoryPoolState"/> associated.
|
||||
/// Set the <see cref="MemoryPoolInfo"/> associated.
|
||||
/// </summary>
|
||||
/// <param name="memoryPoolState">The <see cref="MemoryPoolState"/> associated.</param>
|
||||
public void SetupMemoryPool(Span<MemoryPoolState> memoryPoolState)
|
||||
/// <param name="memoryPoolState">The <see cref="MemoryPoolInfo"/> associated.</param>
|
||||
public void SetupMemoryPool(Span<MemoryPoolInfo> memoryPoolState)
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
fixed (MemoryPoolState* ptr = &MemoryMarshal.GetReference(memoryPoolState))
|
||||
fixed (MemoryPoolInfo* ptr = &MemoryMarshal.GetReference(memoryPoolState))
|
||||
{
|
||||
SetupMemoryPool(ptr);
|
||||
}
|
||||
@@ -93,27 +93,27 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the <see cref="MemoryPoolState"/> associated.
|
||||
/// Set the <see cref="MemoryPoolInfo"/> associated.
|
||||
/// </summary>
|
||||
/// <param name="memoryPoolState">The <see cref="MemoryPoolState"/> associated.</param>
|
||||
public unsafe void SetupMemoryPool(MemoryPoolState* memoryPoolState)
|
||||
/// <param name="memoryPoolState">The <see cref="MemoryPoolInfo"/> associated.</param>
|
||||
public unsafe void SetupMemoryPool(MemoryPoolInfo* memoryPoolState)
|
||||
{
|
||||
_memoryPools = memoryPoolState;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if the <see cref="MemoryPoolState"/> is mapped.
|
||||
/// Check if the <see cref="MemoryPoolInfo"/> is mapped.
|
||||
/// </summary>
|
||||
/// <returns>Returns true if the <see cref="MemoryPoolState"/> is mapped.</returns>
|
||||
/// <returns>Returns true if the <see cref="MemoryPoolInfo"/> is mapped.</returns>
|
||||
public readonly bool HasMappedMemoryPool()
|
||||
{
|
||||
return HasMemoryPoolState && MemoryPoolState.IsMapped();
|
||||
return HasMemoryPoolState && MemoryPoolInfo.IsMapped();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the DSP address associated to the <see cref="AddressInfo"/>.
|
||||
/// </summary>
|
||||
/// <param name="markUsed">If true, mark the <see cref="MemoryPoolState"/> as used.</param>
|
||||
/// <param name="markUsed">If true, mark the <see cref="MemoryPoolInfo"/> as used.</param>
|
||||
/// <returns>Returns the DSP address associated to the <see cref="AddressInfo"/>.</returns>
|
||||
public readonly DspAddress GetReference(bool markUsed)
|
||||
{
|
||||
@@ -124,10 +124,10 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
|
||||
if (markUsed)
|
||||
{
|
||||
MemoryPoolState.IsUsed = true;
|
||||
MemoryPoolInfo.IsUsed = true;
|
||||
}
|
||||
|
||||
return MemoryPoolState.Translate(CpuAddress, Size);
|
||||
return MemoryPoolInfo.Translate(CpuAddress, Size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,62 +8,62 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
/// Server state for a memory pool.
|
||||
/// </summary>
|
||||
[StructLayout(LayoutKind.Sequential, Size = 0x20, Pack = Alignment)]
|
||||
public struct MemoryPoolState
|
||||
public struct MemoryPoolInfo
|
||||
{
|
||||
public const int Alignment = 0x10;
|
||||
|
||||
/// <summary>
|
||||
/// The location of the <see cref="MemoryPoolState"/>.
|
||||
/// The location of the <see cref="MemoryPoolInfo"/>.
|
||||
/// </summary>
|
||||
public enum LocationType : uint
|
||||
{
|
||||
/// <summary>
|
||||
/// <see cref="MemoryPoolState"/> located on the CPU side for user use.
|
||||
/// <see cref="MemoryPoolInfo"/> located on the CPU side for user use.
|
||||
/// </summary>
|
||||
Cpu,
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="MemoryPoolState"/> located on the DSP side for system use.
|
||||
/// <see cref="MemoryPoolInfo"/> located on the DSP side for system use.
|
||||
/// </summary>
|
||||
Dsp,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The CPU address associated to the <see cref="MemoryPoolState"/>.
|
||||
/// The CPU address associated to the <see cref="MemoryPoolInfo"/>.
|
||||
/// </summary>
|
||||
public CpuAddress CpuAddress;
|
||||
|
||||
/// <summary>
|
||||
/// The DSP address associated to the <see cref="MemoryPoolState"/>.
|
||||
/// The DSP address associated to the <see cref="MemoryPoolInfo"/>.
|
||||
/// </summary>
|
||||
public DspAddress DspAddress;
|
||||
|
||||
/// <summary>
|
||||
/// The size associated to the <see cref="MemoryPoolState"/>.
|
||||
/// The size associated to the <see cref="MemoryPoolInfo"/>.
|
||||
/// </summary>
|
||||
public ulong Size;
|
||||
|
||||
/// <summary>
|
||||
/// The <see cref="LocationType"/> associated to the <see cref="MemoryPoolState"/>.
|
||||
/// The <see cref="LocationType"/> associated to the <see cref="MemoryPoolInfo"/>.
|
||||
/// </summary>
|
||||
public LocationType Location;
|
||||
|
||||
/// <summary>
|
||||
/// Set to true if the <see cref="MemoryPoolState"/> is used.
|
||||
/// Set to true if the <see cref="MemoryPoolInfo"/> is used.
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.I1)]
|
||||
public bool IsUsed;
|
||||
|
||||
public static unsafe MemoryPoolState* Null => (MemoryPoolState*)nint.Zero.ToPointer();
|
||||
public static unsafe MemoryPoolInfo* Null => (MemoryPoolInfo*)nint.Zero.ToPointer();
|
||||
|
||||
/// <summary>
|
||||
/// Create a new <see cref="MemoryPoolState"/> with the given <see cref="LocationType"/>.
|
||||
/// Create a new <see cref="MemoryPoolInfo"/> with the given <see cref="LocationType"/>.
|
||||
/// </summary>
|
||||
/// <param name="location">The location type to use.</param>
|
||||
/// <returns>A new <see cref="MemoryPoolState"/> with the given <see cref="LocationType"/>.</returns>
|
||||
public static MemoryPoolState Create(LocationType location)
|
||||
/// <returns>A new <see cref="MemoryPoolInfo"/> with the given <see cref="LocationType"/>.</returns>
|
||||
public static MemoryPoolInfo Create(LocationType location)
|
||||
{
|
||||
return new MemoryPoolState
|
||||
return new MemoryPoolInfo
|
||||
{
|
||||
CpuAddress = 0,
|
||||
DspAddress = 0,
|
||||
@@ -73,7 +73,7 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the <see cref="CpuAddress"/> and size of the <see cref="MemoryPoolState"/>.
|
||||
/// Set the <see cref="CpuAddress"/> and size of the <see cref="MemoryPoolInfo"/>.
|
||||
/// </summary>
|
||||
/// <param name="cpuAddress">The <see cref="CpuAddress"/>.</param>
|
||||
/// <param name="size">The size.</param>
|
||||
@@ -84,11 +84,11 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if the given <see cref="CpuAddress"/> and size is contains in the <see cref="MemoryPoolState"/>.
|
||||
/// Check if the given <see cref="CpuAddress"/> and size is contains in the <see cref="MemoryPoolInfo"/>.
|
||||
/// </summary>
|
||||
/// <param name="targetCpuAddress">The <see cref="CpuAddress"/>.</param>
|
||||
/// <param name="size">The size.</param>
|
||||
/// <returns>True if the <see cref="CpuAddress"/> is contained inside the <see cref="MemoryPoolState"/>.</returns>
|
||||
/// <returns>True if the <see cref="CpuAddress"/> is contained inside the <see cref="MemoryPoolInfo"/>.</returns>
|
||||
public readonly bool Contains(CpuAddress targetCpuAddress, ulong size)
|
||||
{
|
||||
if (CpuAddress <= targetCpuAddress && size + targetCpuAddress <= Size + CpuAddress)
|
||||
@@ -118,9 +118,9 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Is the <see cref="MemoryPoolState"/> mapped on the DSP?
|
||||
/// Is the <see cref="MemoryPoolInfo"/> mapped on the DSP?
|
||||
/// </summary>
|
||||
/// <returns>Returns true if the <see cref="MemoryPoolState"/> is mapped on the DSP.</returns>
|
||||
/// <returns>Returns true if the <see cref="MemoryPoolInfo"/> is mapped on the DSP.</returns>
|
||||
public readonly bool IsMapped()
|
||||
{
|
||||
return DspAddress != 0;
|
||||
@@ -18,7 +18,7 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
const uint CurrentProcessPseudoHandle = 0xFFFF8001;
|
||||
|
||||
/// <summary>
|
||||
/// The result of <see cref="Update(ref MemoryPoolState, ref MemoryPoolInParameter, ref MemoryPoolOutStatus)"/>.
|
||||
/// The result of <see cref="Update(ref MemoryPoolInfo, ref MemoryPoolInParameter, ref MemoryPoolOutStatus)"/>.
|
||||
/// </summary>
|
||||
public enum UpdateResult : uint
|
||||
{
|
||||
@@ -49,9 +49,9 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
private readonly uint _processHandle;
|
||||
|
||||
/// <summary>
|
||||
/// The <see cref="Memory{MemoryPoolState}"/> that will be manipulated.
|
||||
/// The <see cref="Memory{MemoryPoolInfo}"/> that will be manipulated.
|
||||
/// </summary>
|
||||
private readonly Memory<MemoryPoolState> _memoryPools;
|
||||
private readonly Memory<MemoryPoolInfo> _memoryPools;
|
||||
|
||||
/// <summary>
|
||||
/// If set to true, this will try to force map memory pool even if their state are considered invalid.
|
||||
@@ -67,7 +67,7 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
{
|
||||
_processHandle = processHandle;
|
||||
_isForceMapEnabled = isForceMapEnabled;
|
||||
_memoryPools = Memory<MemoryPoolState>.Empty;
|
||||
_memoryPools = Memory<MemoryPoolInfo>.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -76,7 +76,7 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
/// <param name="processHandle">The handle of the process owning the CPU memory manipulated.</param>
|
||||
/// <param name="memoryPool">The user memory pools.</param>
|
||||
/// <param name="isForceMapEnabled">If set to true, this will try to force map memory pool even if their state are considered invalid.</param>
|
||||
public PoolMapper(uint processHandle, Memory<MemoryPoolState> memoryPool, bool isForceMapEnabled)
|
||||
public PoolMapper(uint processHandle, Memory<MemoryPoolInfo> memoryPool, bool isForceMapEnabled)
|
||||
{
|
||||
_processHandle = processHandle;
|
||||
_memoryPools = memoryPool;
|
||||
@@ -84,15 +84,15 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initialize the <see cref="MemoryPoolState"/> for system use.
|
||||
/// Initialize the <see cref="MemoryPoolInfo"/> for system use.
|
||||
/// </summary>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolState"/> for system use.</param>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolInfo"/> for system use.</param>
|
||||
/// <param name="cpuAddress">The <see cref="CpuAddress"/> to assign.</param>
|
||||
/// <param name="size">The size to assign.</param>
|
||||
/// <returns>Returns true if mapping on the <see cref="Dsp.AudioProcessor"/> succeeded.</returns>
|
||||
public bool InitializeSystemPool(ref MemoryPoolState memoryPool, CpuAddress cpuAddress, ulong size)
|
||||
public bool InitializeSystemPool(ref MemoryPoolInfo memoryPool, CpuAddress cpuAddress, ulong size)
|
||||
{
|
||||
if (memoryPool.Location != MemoryPoolState.LocationType.Dsp)
|
||||
if (memoryPool.Location != MemoryPoolInfo.LocationType.Dsp)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -101,13 +101,13 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initialize the <see cref="MemoryPoolState"/>.
|
||||
/// Initialize the <see cref="MemoryPoolInfo"/>.
|
||||
/// </summary>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolState"/>.</param>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolInfo"/>.</param>
|
||||
/// <param name="cpuAddress">The <see cref="CpuAddress"/> to assign.</param>
|
||||
/// <param name="size">The size to assign.</param>
|
||||
/// <returns>Returns true if mapping on the <see cref="Dsp.AudioProcessor"/> succeeded.</returns>
|
||||
public bool InitializePool(ref MemoryPoolState memoryPool, CpuAddress cpuAddress, ulong size)
|
||||
public bool InitializePool(ref MemoryPoolInfo memoryPool, CpuAddress cpuAddress, ulong size)
|
||||
{
|
||||
memoryPool.SetCpuAddress(cpuAddress, size);
|
||||
|
||||
@@ -115,18 +115,18 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the process handle associated to the <see cref="MemoryPoolState"/>.
|
||||
/// Get the process handle associated to the <see cref="MemoryPoolInfo"/>.
|
||||
/// </summary>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolState"/>.</param>
|
||||
/// <returns>Returns the process handle associated to the <see cref="MemoryPoolState"/>.</returns>
|
||||
public uint GetProcessHandle(ref MemoryPoolState memoryPool)
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolInfo"/>.</param>
|
||||
/// <returns>Returns the process handle associated to the <see cref="MemoryPoolInfo"/>.</returns>
|
||||
public uint GetProcessHandle(ref MemoryPoolInfo memoryPool)
|
||||
{
|
||||
if (memoryPool.Location == MemoryPoolState.LocationType.Cpu)
|
||||
if (memoryPool.Location == MemoryPoolInfo.LocationType.Cpu)
|
||||
{
|
||||
return CurrentProcessPseudoHandle;
|
||||
}
|
||||
|
||||
if (memoryPool.Location == MemoryPoolState.LocationType.Dsp)
|
||||
if (memoryPool.Location == MemoryPoolInfo.LocationType.Dsp)
|
||||
{
|
||||
return _processHandle;
|
||||
}
|
||||
@@ -135,11 +135,11 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Map the <see cref="MemoryPoolState"/> on the <see cref="Dsp.AudioProcessor"/>.
|
||||
/// Map the <see cref="MemoryPoolInfo"/> on the <see cref="Dsp.AudioProcessor"/>.
|
||||
/// </summary>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolState"/> to map.</param>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolInfo"/> to map.</param>
|
||||
/// <returns>Returns the DSP address mapped.</returns>
|
||||
public DspAddress Map(ref MemoryPoolState memoryPool)
|
||||
public DspAddress Map(ref MemoryPoolInfo memoryPool)
|
||||
{
|
||||
DspAddress result = AudioProcessorMemoryManager.Map(GetProcessHandle(ref memoryPool), memoryPool.CpuAddress, memoryPool.Size);
|
||||
|
||||
@@ -152,11 +152,11 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Unmap the <see cref="MemoryPoolState"/> from the <see cref="Dsp.AudioProcessor"/>.
|
||||
/// Unmap the <see cref="MemoryPoolInfo"/> from the <see cref="Dsp.AudioProcessor"/>.
|
||||
/// </summary>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolState"/> to unmap.</param>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolInfo"/> to unmap.</param>
|
||||
/// <returns>Returns true if unmapped.</returns>
|
||||
public bool Unmap(ref MemoryPoolState memoryPool)
|
||||
public bool Unmap(ref MemoryPoolInfo memoryPool)
|
||||
{
|
||||
if (memoryPool.IsUsed)
|
||||
{
|
||||
@@ -172,12 +172,12 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Find a <see cref="MemoryPoolState"/> associated to the region given.
|
||||
/// Find a <see cref="MemoryPoolInfo"/> associated to the region given.
|
||||
/// </summary>
|
||||
/// <param name="cpuAddress">The region <see cref="CpuAddress"/>.</param>
|
||||
/// <param name="size">The region size.</param>
|
||||
/// <returns>Returns the <see cref="MemoryPoolState"/> found or <see cref="Memory{MemoryPoolState}.Empty"/> if not found.</returns>
|
||||
private Span<MemoryPoolState> FindMemoryPool(CpuAddress cpuAddress, ulong size)
|
||||
/// <returns>Returns the <see cref="MemoryPoolInfo"/> found or <see cref="Memory{MemoryPoolInfo}.Empty"/> if not found.</returns>
|
||||
private Span<MemoryPoolInfo> FindMemoryPool(CpuAddress cpuAddress, ulong size)
|
||||
{
|
||||
if (!_memoryPools.IsEmpty && _memoryPools.Length > 0)
|
||||
{
|
||||
@@ -190,7 +190,7 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
}
|
||||
|
||||
return Span<MemoryPoolState>.Empty;
|
||||
return Span<MemoryPoolInfo>.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -201,7 +201,7 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
{
|
||||
if (_isForceMapEnabled)
|
||||
{
|
||||
Span<MemoryPoolState> memoryPool = FindMemoryPool(addressInfo.CpuAddress, addressInfo.Size);
|
||||
Span<MemoryPoolInfo> memoryPool = FindMemoryPool(addressInfo.CpuAddress, addressInfo.Size);
|
||||
|
||||
if (!memoryPool.IsEmpty)
|
||||
{
|
||||
@@ -243,13 +243,13 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update a <see cref="MemoryPoolState"/> using user parameters.
|
||||
/// Update a <see cref="MemoryPoolInfo"/> using user parameters.
|
||||
/// </summary>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolState"/> to update.</param>
|
||||
/// <param name="memoryPool">The <see cref="MemoryPoolInfo"/> to update.</param>
|
||||
/// <param name="inParameter">Input user parameter.</param>
|
||||
/// <param name="outStatus">Output user parameter.</param>
|
||||
/// <returns>Returns the <see cref="UpdateResult"/> of the operations performed.</returns>
|
||||
public UpdateResult Update(ref MemoryPoolState memoryPool, in MemoryPoolInParameter inParameter, ref MemoryPoolOutStatus outStatus)
|
||||
public UpdateResult Update(ref MemoryPoolInfo memoryPool, in MemoryPoolInParameter inParameter, ref MemoryPoolOutStatus outStatus)
|
||||
{
|
||||
MemoryPoolUserState inputState = inParameter.State;
|
||||
|
||||
@@ -321,7 +321,7 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
|
||||
if (_memoryPools.Length > 0)
|
||||
{
|
||||
Span<MemoryPoolState> memoryPool = FindMemoryPool(addressInfo.CpuAddress, addressInfo.Size);
|
||||
Span<MemoryPoolInfo> memoryPool = FindMemoryPool(addressInfo.CpuAddress, addressInfo.Size);
|
||||
|
||||
if (!memoryPool.IsEmpty)
|
||||
{
|
||||
@@ -343,7 +343,7 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
{
|
||||
unsafe
|
||||
{
|
||||
addressInfo.SetupMemoryPool(MemoryPoolState.Null);
|
||||
addressInfo.SetupMemoryPool(MemoryPoolInfo.Null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -351,12 +351,12 @@ namespace Ryujinx.Audio.Renderer.Server.MemoryPool
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Remove the usage flag from all the <see cref="MemoryPoolState"/>.
|
||||
/// Remove the usage flag from all the <see cref="MemoryPoolInfo"/>.
|
||||
/// </summary>
|
||||
/// <param name="memoryPool">The <see cref="Memory{MemoryPoolState}"/> to reset.</param>
|
||||
public static void ClearUsageState(Memory<MemoryPoolState> memoryPool)
|
||||
/// <param name="memoryPool">The <see cref="Memory{MemoryPoolInfo}"/> to reset.</param>
|
||||
public static void ClearUsageState(Memory<MemoryPoolInfo> memoryPool)
|
||||
{
|
||||
foreach (ref MemoryPoolState info in memoryPool.Span)
|
||||
foreach (ref MemoryPoolInfo info in memoryPool.Span)
|
||||
{
|
||||
info.IsUsed = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user