CreateBufferSparseCommand.cs
1 using Ryujinx.Graphics.GAL.Multithreading.Model; 2 using System; 3 4 namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer 5 { 6 struct CreateBufferSparseCommand : IGALCommand, IGALCommand<CreateBufferSparseCommand> 7 { 8 public readonly CommandType CommandType => CommandType.CreateBufferSparse; 9 private BufferHandle _threadedHandle; 10 private SpanRef<BufferRange> _buffers; 11 12 public void Set(BufferHandle threadedHandle, SpanRef<BufferRange> buffers) 13 { 14 _threadedHandle = threadedHandle; 15 _buffers = buffers; 16 } 17 18 public static void Run(ref CreateBufferSparseCommand command, ThreadedRenderer threaded, IRenderer renderer) 19 { 20 Span<BufferRange> buffers = command._buffers.Get(threaded); 21 threaded.Buffers.AssignBuffer(command._threadedHandle, renderer.CreateBufferSparse(threaded.Buffers.MapBufferRanges(buffers))); 22 command._buffers.Dispose(threaded); 23 } 24 } 25 }