MultiDrawIndexedIndirectCountCommand.cs 1.1 KB

1234567891011121314151617181920212223242526272829
  1. namespace Ryujinx.Graphics.GAL.Multithreading.Commands
  2. {
  3. struct MultiDrawIndexedIndirectCountCommand : IGALCommand
  4. {
  5. public CommandType CommandType => CommandType.MultiDrawIndexedIndirectCount;
  6. private BufferRange _indirectBuffer;
  7. private BufferRange _parameterBuffer;
  8. private int _maxDrawCount;
  9. private int _stride;
  10. public void Set(BufferRange indirectBuffer, BufferRange parameterBuffer, int maxDrawCount, int stride)
  11. {
  12. _indirectBuffer = indirectBuffer;
  13. _parameterBuffer = parameterBuffer;
  14. _maxDrawCount = maxDrawCount;
  15. _stride = stride;
  16. }
  17. public static void Run(ref MultiDrawIndexedIndirectCountCommand command, ThreadedRenderer threaded, IRenderer renderer)
  18. {
  19. renderer.Pipeline.MultiDrawIndexedIndirectCount(
  20. threaded.Buffers.MapBufferRange(command._indirectBuffer),
  21. threaded.Buffers.MapBufferRange(command._parameterBuffer),
  22. command._maxDrawCount,
  23. command._stride
  24. );
  25. }
  26. }
  27. }