GpuContext.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Ryujinx.Graphics.GAL;
  2. using Ryujinx.Graphics.Gpu.Engine;
  3. using Ryujinx.Graphics.Gpu.Memory;
  4. using System;
  5. namespace Ryujinx.Graphics.Gpu
  6. {
  7. public class GpuContext
  8. {
  9. public IRenderer Renderer { get; }
  10. internal IPhysicalMemory PhysicalMemory { get; private set; }
  11. public MemoryManager MemoryManager { get; }
  12. internal MemoryAccessor MemoryAccessor { get; }
  13. internal Methods Methods { get; }
  14. internal NvGpuFifo Fifo { get; }
  15. public DmaPusher DmaPusher { get; }
  16. public Window Window { get; }
  17. internal int SequenceNumber { get; private set; }
  18. private Lazy<Capabilities> _caps;
  19. internal Capabilities Capabilities => _caps.Value;
  20. public GpuContext(IRenderer renderer)
  21. {
  22. Renderer = renderer;
  23. MemoryManager = new MemoryManager();
  24. MemoryAccessor = new MemoryAccessor(this);
  25. Methods = new Methods(this);
  26. Fifo = new NvGpuFifo(this);
  27. DmaPusher = new DmaPusher(this);
  28. Window = new Window(this);
  29. _caps = new Lazy<Capabilities>(Renderer.GetCapabilities);
  30. }
  31. internal void AdvanceSequence()
  32. {
  33. SequenceNumber++;
  34. }
  35. public void SetVmm(IPhysicalMemory mm)
  36. {
  37. PhysicalMemory = mm;
  38. }
  39. }
  40. }