aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Core/Gpu/NvGpu.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-05-07 15:53:23 -0300
committerGitHub <noreply@github.com>2018-05-07 15:53:23 -0300
commit34037701c708cb70bbf44dea71ee0912f7b4102b (patch)
treeca4cf2bde85dea48af12033b8d0446f17b611f4f /Ryujinx.Core/Gpu/NvGpu.cs
parent4419e8d6b43432eae94a3a9304f7df22b34738a8 (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.cs45
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