diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2021-06-29 14:32:02 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-29 19:32:02 +0200 |
| commit | fbb4019ed5c12c4a888c7b09db648ac595366896 (patch) | |
| tree | a8be6bf5fc4f8b844683f1ef2ade588f3bb9bb0a /Ryujinx.HLE/HOS/ArmProcessContextFactory.cs | |
| parent | 8cc872fb60ec1b825655ba8dba06cc978fcd7e66 (diff) | |
Initial support for separate GPU address spaces (#2394)
* Make GPU memory manager a member of GPU channel
* Move physical memory instance to the memory manager, and the caches to the physical memory
* PR feedback
Diffstat (limited to 'Ryujinx.HLE/HOS/ArmProcessContextFactory.cs')
| -rw-r--r-- | Ryujinx.HLE/HOS/ArmProcessContextFactory.cs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs b/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs index 04d06e1f..50dbd843 100644 --- a/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs +++ b/Ryujinx.HLE/HOS/ArmProcessContextFactory.cs @@ -1,5 +1,6 @@ using Ryujinx.Common.Configuration; using Ryujinx.Cpu; +using Ryujinx.Graphics.Gpu; using Ryujinx.HLE.HOS.Kernel; using Ryujinx.HLE.HOS.Kernel.Process; using Ryujinx.Memory; @@ -9,19 +10,26 @@ namespace Ryujinx.HLE.HOS { class ArmProcessContextFactory : IProcessContextFactory { - public IProcessContext Create(KernelContext context, ulong addressSpaceSize, InvalidAccessHandler invalidAccessHandler, bool for64Bit) + private readonly GpuContext _gpu; + + public ArmProcessContextFactory(GpuContext gpu) + { + _gpu = gpu; + } + + public IProcessContext Create(KernelContext context, long pid, ulong addressSpaceSize, InvalidAccessHandler invalidAccessHandler, bool for64Bit) { MemoryManagerMode mode = context.Device.Configuration.MemoryManagerMode; switch (mode) { case MemoryManagerMode.SoftwarePageTable: - return new ArmProcessContext<MemoryManager>(new MemoryManager(addressSpaceSize, invalidAccessHandler), for64Bit); + return new ArmProcessContext<MemoryManager>(pid, _gpu, new MemoryManager(addressSpaceSize, invalidAccessHandler), for64Bit); case MemoryManagerMode.HostMapped: case MemoryManagerMode.HostMappedUnsafe: bool unsafeMode = mode == MemoryManagerMode.HostMappedUnsafe; - return new ArmProcessContext<MemoryManagerHostMapped>(new MemoryManagerHostMapped(addressSpaceSize, unsafeMode, invalidAccessHandler), for64Bit); + return new ArmProcessContext<MemoryManagerHostMapped>(pid, _gpu, new MemoryManagerHostMapped(addressSpaceSize, unsafeMode, invalidAccessHandler), for64Bit); default: throw new ArgumentOutOfRangeException(); |
