/ src / Ryujinx.Graphics.GAL / Multithreading / Commands / Renderer / CreateBufferSparseCommand.cs
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  }