BufferSetDataCommand.cs 897 B

123456789101112131415161718192021222324252627
  1. using Ryujinx.Graphics.GAL.Multithreading.Model;
  2. using System;
  3. namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Buffer
  4. {
  5. struct BufferSetDataCommand : IGALCommand
  6. {
  7. public CommandType CommandType => CommandType.BufferSetData;
  8. private BufferHandle _buffer;
  9. private int _offset;
  10. private SpanRef<byte> _data;
  11. public void Set(BufferHandle buffer, int offset, SpanRef<byte> data)
  12. {
  13. _buffer = buffer;
  14. _offset = offset;
  15. _data = data;
  16. }
  17. public static void Run(ref BufferSetDataCommand command, ThreadedRenderer threaded, IRenderer renderer)
  18. {
  19. ReadOnlySpan<byte> data = command._data.Get(threaded);
  20. renderer.SetBufferData(threaded.Buffers.MapBuffer(command._buffer), command._offset, data);
  21. command._data.Dispose(threaded);
  22. }
  23. }
  24. }