diff options
author | gdkchan <gab.dark.100@gmail.com> | 2018-05-07 15:53:23 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-07 15:53:23 -0300 |
commit | 34037701c708cb70bbf44dea71ee0912f7b4102b (patch) | |
tree | ca4cf2bde85dea48af12033b8d0446f17b611f4f /Ryujinx.Core/Gpu/NvGpu.cs | |
parent | 4419e8d6b43432eae94a3a9304f7df22b34738a8 (diff) |
NvServices refactoring (#120)
* Initial implementation of NvMap/NvHostCtrl
* More work on NvHostCtrl
* Refactoring of nvservices, move GPU Vmm, make Vmm per-process, refactor most gpu devices, move Gpu to Core, fix CbBind
* Implement GetGpuTime, support CancelSynchronization, fix issue on InsertWaitingMutex, proper double buffering support (again, not working properly for commercial games, only hb)
* Try to fix perf regression reading/writing textures, moved syncpts and events to a UserCtx class, delete global state when the process exits, other minor tweaks
* Remove now unused code, add comment about probably wrong result codes
Diffstat (limited to 'Ryujinx.Core/Gpu/NvGpu.cs')
-rw-r--r-- | Ryujinx.Core/Gpu/NvGpu.cs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Ryujinx.Core/Gpu/NvGpu.cs b/Ryujinx.Core/Gpu/NvGpu.cs new file mode 100644 index 00000000..71df76ff --- /dev/null +++ b/Ryujinx.Core/Gpu/NvGpu.cs @@ -0,0 +1,45 @@ +using Ryujinx.Graphics.Gal; +using System.Threading; + +namespace Ryujinx.Core.Gpu +{ + public class NvGpu + { + public IGalRenderer Renderer { get; private set; } + + public NvGpuFifo Fifo { get; private set; } + + public NvGpuEngine2d Engine2d { get; private set; } + public NvGpuEngine3d Engine3d { get; private set; } + + private Thread FifoProcessing; + + private bool KeepRunning; + + public NvGpu(IGalRenderer Renderer) + { + this.Renderer = Renderer; + + Fifo = new NvGpuFifo(this); + + Engine2d = new NvGpuEngine2d(this); + Engine3d = new NvGpuEngine3d(this); + + KeepRunning = true; + + FifoProcessing = new Thread(ProcessFifo); + + FifoProcessing.Start(); + } + + private void ProcessFifo() + { + while (KeepRunning) + { + Fifo.DispatchCalls(); + + Thread.Yield(); + } + } + } +}
\ No newline at end of file |