aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2018-07-12 14:03:52 -0300
committergdkchan <gab.dark.100@gmail.com>2018-07-12 14:03:52 -0300
commitcd18ab29dfacd1f7a3218d4ec73ce664bccc3887 (patch)
treec8bbe1c269e0cda16edfa3be0a061a90609abc57 /Ryujinx.HLE
parent37071285bcf14ef96b16b55cb6ed7c8c003489e0 (diff)
Loop GLScreen with custom method (#244)
* Loop GLScreen with custom method * Fix deadlocks * Fix screen resizing * Change event to bool * Try to fix quitting error * Set title from main thread * Queue max 1 vsync, fix high FPS after a slowdown
Diffstat (limited to 'Ryujinx.HLE')
-rw-r--r--Ryujinx.HLE/Gpu/Engines/NvGpuFifo.cs7
-rw-r--r--Ryujinx.HLE/Switch.cs5
2 files changed, 12 insertions, 0 deletions
diff --git a/Ryujinx.HLE/Gpu/Engines/NvGpuFifo.cs b/Ryujinx.HLE/Gpu/Engines/NvGpuFifo.cs
index 0bc682a7..7b999eae 100644
--- a/Ryujinx.HLE/Gpu/Engines/NvGpuFifo.cs
+++ b/Ryujinx.HLE/Gpu/Engines/NvGpuFifo.cs
@@ -1,5 +1,6 @@
using Ryujinx.HLE.Gpu.Memory;
using System.Collections.Concurrent;
+using System.Threading;
namespace Ryujinx.HLE.Gpu.Engines
{
@@ -18,6 +19,8 @@ namespace Ryujinx.HLE.Gpu.Engines
private NvGpuEngine[] SubChannels;
+ public AutoResetEvent Event { get; private set; }
+
private struct CachedMacro
{
public int Position { get; private set; }
@@ -60,6 +63,8 @@ namespace Ryujinx.HLE.Gpu.Engines
Macros = new CachedMacro[MacrosCount];
Mme = new int[MmeWords];
+
+ Event = new AutoResetEvent(false);
}
public void PushBuffer(NvGpuVmm Vmm, NvGpuPBEntry[] Buffer)
@@ -68,6 +73,8 @@ namespace Ryujinx.HLE.Gpu.Engines
{
BufferQueue.Enqueue((Vmm, PBEntry));
}
+
+ Event.Set();
}
public void DispatchCalls()
diff --git a/Ryujinx.HLE/Switch.cs b/Ryujinx.HLE/Switch.cs
index f7b263cd..1946b187 100644
--- a/Ryujinx.HLE/Switch.cs
+++ b/Ryujinx.HLE/Switch.cs
@@ -71,6 +71,11 @@ namespace Ryujinx.HLE
Os.LoadProgram(FileName);
}
+ public bool WaitFifo()
+ {
+ return Gpu.Fifo.Event.WaitOne(8);
+ }
+
public void ProcessFrame()
{
Gpu.Fifo.DispatchCalls();