aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Audio.Renderer/Server/MemoryPool/MemoryPoolState.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Audio.Renderer/Server/MemoryPool/MemoryPoolState.cs')
-rw-r--r--Ryujinx.Audio.Renderer/Server/MemoryPool/MemoryPoolState.cs148
1 files changed, 0 insertions, 148 deletions
diff --git a/Ryujinx.Audio.Renderer/Server/MemoryPool/MemoryPoolState.cs b/Ryujinx.Audio.Renderer/Server/MemoryPool/MemoryPoolState.cs
deleted file mode 100644
index ebde1403..00000000
--- a/Ryujinx.Audio.Renderer/Server/MemoryPool/MemoryPoolState.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-//
-// Copyright (c) 2019-2021 Ryujinx
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-using DspAddress = System.UInt64;
-using CpuAddress = System.UInt64;
-
-namespace Ryujinx.Audio.Renderer.Server.MemoryPool
-{
- /// <summary>
- /// Server state for a memory pool.
- /// </summary>
- [StructLayout(LayoutKind.Sequential, Size = 0x20, Pack = Alignment)]
- public struct MemoryPoolState
- {
- public const int Alignment = 0x10;
-
- /// <summary>
- /// The location of the <see cref="MemoryPoolState"/>.
- /// </summary>
- public enum LocationType : uint
- {
- /// <summary>
- /// <see cref="MemoryPoolState"/> located on the CPU side for user use.
- /// </summary>
- Cpu,
-
- /// <summary>
- /// <see cref="MemoryPoolState"/> located on the DSP side for system use.
- /// </summary>
- Dsp
- }
-
- /// <summary>
- /// The CPU address associated to the <see cref="MemoryPoolState"/>.
- /// </summary>
- public CpuAddress CpuAddress;
-
- /// <summary>
- /// The DSP address associated to the <see cref="MemoryPoolState"/>.
- /// </summary>
- public DspAddress DspAddress;
-
- /// <summary>
- /// The size associated to the <see cref="MemoryPoolState"/>.
- /// </summary>
- public ulong Size;
-
- /// <summary>
- /// The <see cref="LocationType"/> associated to the <see cref="MemoryPoolState"/>.
- /// </summary>
- public LocationType Location;
-
- /// <summary>
- /// Set to true if the <see cref="MemoryPoolState"/> is used.
- /// </summary>
- [MarshalAs(UnmanagedType.I1)]
- public bool IsUsed;
-
- public static unsafe MemoryPoolState* Null => (MemoryPoolState*)IntPtr.Zero.ToPointer();
-
- /// <summary>
- /// Create a new <see cref="MemoryPoolState"/> 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)
- {
- return new MemoryPoolState
- {
- CpuAddress = 0,
- DspAddress = 0,
- Size = 0,
- Location = location
- };
- }
-
- /// <summary>
- /// Set the <see cref="CpuAddress"/> and size of the <see cref="MemoryPoolState"/>.
- /// </summary>
- /// <param name="cpuAddress">The <see cref="CpuAddress"/>.</param>
- /// <param name="size">The size.</param>
- public void SetCpuAddress(CpuAddress cpuAddress, ulong size)
- {
- CpuAddress = cpuAddress;
- Size = size;
- }
-
- /// <summary>
- /// Check if the given <see cref="CpuAddress"/> and size is contains in the <see cref="MemoryPoolState"/>.
- /// </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>
- public bool Contains(CpuAddress targetCpuAddress, ulong size)
- {
- if (CpuAddress <= targetCpuAddress && size + targetCpuAddress <= Size + CpuAddress)
- {
- return true;
- }
-
- return false;
- }
-
- /// <summary>
- /// Translate the given CPU address to a DSP address.
- /// </summary>
- /// <param name="targetCpuAddress">The <see cref="CpuAddress"/>.</param>
- /// <param name="size">The size.</param>
- /// <returns>the target DSP address.</returns>
- public DspAddress Translate(CpuAddress targetCpuAddress, ulong size)
- {
- if (Contains(targetCpuAddress, size) && IsMapped())
- {
- ulong offset = targetCpuAddress - CpuAddress;
-
- return DspAddress + offset;
- }
-
- return 0;
- }
-
- /// <summary>
- /// Is the <see cref="MemoryPoolState"/> mapped on the DSP?
- /// </summary>
- /// <returns>Returns true if the <see cref="MemoryPoolState"/> is mapped on the DSP.</returns>
- public bool IsMapped()
- {
- return DspAddress != 0;
- }
- }
-}