NvGpu.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 const int MaxViewportSize = 0x3FFF;
  11. public IGalRenderer Renderer { get; private set; }
  12. public GpuResourceManager ResourceManager { get; private set; }
  13. public DmaPusher Pusher { get; private set; }
  14. internal NvGpuFifo Fifo { get; private set; }
  15. internal NvGpuEngine2d Engine2d { get; private set; }
  16. internal NvGpuEngine3d Engine3d { get; private set; }
  17. internal NvGpuEngineM2mf EngineM2mf { get; private set; }
  18. internal NvGpuEngineP2mf EngineP2mf { get; private set; }
  19. private CdmaProcessor _cdmaProcessor;
  20. internal VideoDecoder VideoDecoder { get; private set; }
  21. internal VideoImageComposer VideoImageComposer { get; private set; }
  22. public NvGpu(IGalRenderer renderer)
  23. {
  24. Renderer = renderer;
  25. ResourceManager = new GpuResourceManager(this);
  26. Pusher = new DmaPusher(this);
  27. Fifo = new NvGpuFifo(this);
  28. Engine2d = new NvGpuEngine2d(this);
  29. Engine3d = new NvGpuEngine3d(this);
  30. EngineM2mf = new NvGpuEngineM2mf(this);
  31. EngineP2mf = new NvGpuEngineP2mf(this);
  32. _cdmaProcessor = new CdmaProcessor(this);
  33. VideoDecoder = new VideoDecoder(this);
  34. VideoImageComposer = new VideoImageComposer(this);
  35. }
  36. public void PushCommandBuffer(NvGpuVmm vmm, int[] cmdBuffer)
  37. {
  38. lock (_cdmaProcessor)
  39. {
  40. _cdmaProcessor.PushCommands(vmm, cmdBuffer);
  41. }
  42. }
  43. public void UninitializeVideoDecoder()
  44. {
  45. lock (_cdmaProcessor)
  46. {
  47. FFmpegWrapper.Uninitialize();
  48. }
  49. }
  50. }
  51. }