NvGpu.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Ryujinx.Graphics.Gal;
  2. using Ryujinx.Graphics.Graphics3d;
  3. using Ryujinx.Graphics.Memory;
  4. using Ryujinx.Graphics.VDec;
  5. using Ryujinx.Graphics.Vic;
  6. namespace Ryujinx.Graphics
  7. {
  8. public class NvGpu
  9. {
  10. public IGalRenderer Renderer { get; private set; }
  11. public GpuResourceManager ResourceManager { get; private set; }
  12. public DmaPusher Pusher { get; private set; }
  13. internal NvGpuFifo Fifo { get; private set; }
  14. internal NvGpuEngine2d Engine2d { get; private set; }
  15. internal NvGpuEngine3d Engine3d { get; private set; }
  16. internal NvGpuEngineM2mf EngineM2mf { get; private set; }
  17. internal NvGpuEngineP2mf EngineP2mf { get; private set; }
  18. private CdmaProcessor CdmaProcessor;
  19. internal VideoDecoder VideoDecoder { get; private set; }
  20. internal VideoImageComposer VideoImageComposer { get; private set; }
  21. public NvGpu(IGalRenderer Renderer)
  22. {
  23. this.Renderer = Renderer;
  24. ResourceManager = new GpuResourceManager(this);
  25. Pusher = new DmaPusher(this);
  26. Fifo = new NvGpuFifo(this);
  27. Engine2d = new NvGpuEngine2d(this);
  28. Engine3d = new NvGpuEngine3d(this);
  29. EngineM2mf = new NvGpuEngineM2mf(this);
  30. EngineP2mf = new NvGpuEngineP2mf(this);
  31. CdmaProcessor = new CdmaProcessor(this);
  32. VideoDecoder = new VideoDecoder(this);
  33. VideoImageComposer = new VideoImageComposer(this);
  34. }
  35. public void PushCommandBuffer(NvGpuVmm Vmm, int[] CmdBuffer)
  36. {
  37. lock (CdmaProcessor)
  38. {
  39. CdmaProcessor.PushCommands(Vmm, CmdBuffer);
  40. }
  41. }
  42. public void UninitializeVideoDecoder()
  43. {
  44. lock (CdmaProcessor)
  45. {
  46. FFmpegWrapper.Uninitialize();
  47. }
  48. }
  49. }
  50. }