CreateBufferSparseCommand.cs 991 B

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