EncoderResources.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using SharpMetal.Metal;
  2. using System.Collections.Generic;
  3. namespace Ryujinx.Graphics.Metal
  4. {
  5. public struct RenderEncoderBindings
  6. {
  7. public List<Resource> Resources = [];
  8. public List<BufferResource> VertexBuffers = [];
  9. public List<BufferResource> FragmentBuffers = [];
  10. public RenderEncoderBindings() { }
  11. public readonly void Clear()
  12. {
  13. Resources.Clear();
  14. VertexBuffers.Clear();
  15. FragmentBuffers.Clear();
  16. }
  17. }
  18. public struct ComputeEncoderBindings
  19. {
  20. public List<Resource> Resources = [];
  21. public List<BufferResource> Buffers = [];
  22. public ComputeEncoderBindings() { }
  23. public readonly void Clear()
  24. {
  25. Resources.Clear();
  26. Buffers.Clear();
  27. }
  28. }
  29. public struct BufferResource
  30. {
  31. public MTLBuffer Buffer;
  32. public ulong Offset;
  33. public ulong Binding;
  34. public BufferResource(MTLBuffer buffer, ulong offset, ulong binding)
  35. {
  36. Buffer = buffer;
  37. Offset = offset;
  38. Binding = binding;
  39. }
  40. }
  41. public struct Resource
  42. {
  43. public MTLResource MtlResource;
  44. public MTLResourceUsage ResourceUsage;
  45. public MTLRenderStages Stages;
  46. public Resource(MTLResource resource, MTLResourceUsage resourceUsage, MTLRenderStages stages)
  47. {
  48. MtlResource = resource;
  49. ResourceUsage = resourceUsage;
  50. Stages = stages;
  51. }
  52. }
  53. }