diff options
| author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2018-07-12 14:03:52 -0300 |
|---|---|---|
| committer | gdkchan <gab.dark.100@gmail.com> | 2018-07-12 14:03:52 -0300 |
| commit | cd18ab29dfacd1f7a3218d4ec73ce664bccc3887 (patch) | |
| tree | c8bbe1c269e0cda16edfa3be0a061a90609abc57 /Ryujinx.HLE | |
| parent | 37071285bcf14ef96b16b55cb6ed7c8c003489e0 (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.cs | 7 | ||||
| -rw-r--r-- | Ryujinx.HLE/Switch.cs | 5 |
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(); |
