| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using Ryujinx.Graphics.Gal;
- using System.Threading;
- namespace Ryujinx.Graphics.Gpu
- {
- public class NsGpu
- {
- public IGalRenderer Renderer { get; private set; }
- public NsGpuMemoryMgr MemoryMgr { get; private set; }
- public NvGpuFifo Fifo { get; private set; }
- public NvGpuEngine2d Engine2d { get; private set; }
- public NvGpuEngine3d Engine3d { get; private set; }
- private Thread FifoProcessing;
- private bool KeepRunning;
- public NsGpu(IGalRenderer Renderer)
- {
- this.Renderer = Renderer;
- MemoryMgr = new NsGpuMemoryMgr();
- Fifo = new NvGpuFifo(this);
- Engine2d = new NvGpuEngine2d(this);
- Engine3d = new NvGpuEngine3d(this);
- KeepRunning = true;
- FifoProcessing = new Thread(ProcessFifo);
- FifoProcessing.Start();
- }
- public long GetCpuAddr(long Position)
- {
- return MemoryMgr.GetCpuAddr(Position);
- }
- public long MapMemory(long CpuAddr, long Size)
- {
- return MemoryMgr.Map(CpuAddr, Size);
- }
- public long MapMemory(long CpuAddr, long GpuAddr, long Size)
- {
- return MemoryMgr.Map(CpuAddr, GpuAddr, Size);
- }
- public long ReserveMemory(long Size, long Align)
- {
- return MemoryMgr.Reserve(Size, Align);
- }
- public long ReserveMemory(long GpuAddr, long Size, long Align)
- {
- return MemoryMgr.Reserve(GpuAddr, Size, Align);
- }
- private void ProcessFifo()
- {
- while (KeepRunning)
- {
- Fifo.DispatchCalls();
- Thread.Yield();
- }
- }
- }
- }
|