 e7559f128f
			
		
	
	
		e7559f128f
		
			
		
	
	
	
	
		
			
			* Call OpenGL functions directly, remove the pfifo thread, some refactoring * Fix PerformanceStatistics calculating the wrong host fps, remove wait event on PFIFO as this wasn't exactly was causing the freezes (may replace with an exception later) * Organized the Gpu folder a bit more, renamed a few things, address PR feedback * Make PerformanceStatistics thread safe * Remove unused constant * Use unlimited update rate for better pref
		
			
				
	
	
		
			98 lines
		
	
	
		
			No EOL
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			No EOL
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Ryujinx.Audio;
 | |
| using Ryujinx.Graphics.Gal;
 | |
| using Ryujinx.HLE.Gpu;
 | |
| using Ryujinx.HLE.Input;
 | |
| using Ryujinx.HLE.Logging;
 | |
| using Ryujinx.HLE.OsHle;
 | |
| using Ryujinx.HLE.Settings;
 | |
| using System;
 | |
| 
 | |
| namespace Ryujinx.HLE
 | |
| {
 | |
|     public class Switch : IDisposable
 | |
|     {
 | |
|         internal IAalOutput AudioOut { get; private set; }
 | |
| 
 | |
|         public Logger Log { get; private set; }
 | |
| 
 | |
|         internal NvGpu Gpu { get; private set; }
 | |
| 
 | |
|         internal VirtualFileSystem VFs { get; private set; }
 | |
| 
 | |
|         public Horizon Os { get; private set; }
 | |
| 
 | |
|         public SystemSettings Settings { get; private set; }
 | |
| 
 | |
|         public PerformanceStatistics Statistics { get; private set; }
 | |
| 
 | |
|         public Hid Hid { get; private set; }
 | |
| 
 | |
|         public event EventHandler Finish;
 | |
| 
 | |
|         public Switch(IGalRenderer Renderer, IAalOutput AudioOut)
 | |
|         {
 | |
|             if (Renderer == null)
 | |
|             {
 | |
|                 throw new ArgumentNullException(nameof(Renderer));
 | |
|             }
 | |
| 
 | |
|             if (AudioOut == null)
 | |
|             {
 | |
|                 throw new ArgumentNullException(nameof(AudioOut));
 | |
|             }
 | |
| 
 | |
|             this.AudioOut = AudioOut;
 | |
| 
 | |
|             Log = new Logger();
 | |
| 
 | |
|             Gpu = new NvGpu(Renderer);
 | |
| 
 | |
|             VFs = new VirtualFileSystem();
 | |
| 
 | |
|             Os = new Horizon(this);
 | |
| 
 | |
|             Settings = new SystemSettings();
 | |
| 
 | |
|             Statistics = new PerformanceStatistics();
 | |
| 
 | |
|             Hid = new Hid(Log);
 | |
| 
 | |
|             Os.HidSharedMem.MemoryMapped   += Hid.ShMemMap;
 | |
|             Os.HidSharedMem.MemoryUnmapped += Hid.ShMemUnmap;
 | |
|         }
 | |
| 
 | |
|         public void LoadCart(string ExeFsDir, string RomFsFile = null)
 | |
|         {
 | |
|             Os.LoadCart(ExeFsDir, RomFsFile);
 | |
|         }
 | |
| 
 | |
|         public void LoadProgram(string FileName)
 | |
|         {
 | |
|             Os.LoadProgram(FileName);
 | |
|         }
 | |
| 
 | |
|         public void ProcessFrame()
 | |
|         {
 | |
|             Gpu.Fifo.DispatchCalls();
 | |
|         }
 | |
| 
 | |
|         internal virtual void OnFinish(EventArgs e)
 | |
|         {
 | |
|             Finish?.Invoke(this, e);
 | |
|         }
 | |
| 
 | |
|         public void Dispose()
 | |
|         {
 | |
|             Dispose(true);
 | |
|         }
 | |
| 
 | |
|         protected virtual void Dispose(bool Disposing)
 | |
|         {
 | |
|             if (Disposing)
 | |
|             {
 | |
|                 Os.Dispose();
 | |
|                 VFs.Dispose();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| } |