NvGpu.cs 979 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using Ryujinx.Graphics.Gal;
  2. using System.Threading;
  3. namespace Ryujinx.Core.Gpu
  4. {
  5. public class NvGpu
  6. {
  7. public IGalRenderer Renderer { get; private set; }
  8. public NvGpuFifo Fifo { get; private set; }
  9. public NvGpuEngine2d Engine2d { get; private set; }
  10. public NvGpuEngine3d Engine3d { get; private set; }
  11. private Thread FifoProcessing;
  12. private bool KeepRunning;
  13. public NvGpu(IGalRenderer Renderer)
  14. {
  15. this.Renderer = Renderer;
  16. Fifo = new NvGpuFifo(this);
  17. Engine2d = new NvGpuEngine2d(this);
  18. Engine3d = new NvGpuEngine3d(this);
  19. KeepRunning = true;
  20. FifoProcessing = new Thread(ProcessFifo);
  21. FifoProcessing.Start();
  22. }
  23. private void ProcessFifo()
  24. {
  25. while (KeepRunning)
  26. {
  27. Fifo.DispatchCalls();
  28. Thread.Yield();
  29. }
  30. }
  31. }
  32. }