| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- using SharpMetal.Metal;
- using System;
- using System.Runtime.Versioning;
- namespace Ryujinx.Graphics.Metal
- {
- [SupportedOSPlatform("macos")]
- readonly struct CommandBufferScoped : IDisposable
- {
- private readonly CommandBufferPool _pool;
- public MTLCommandBuffer CommandBuffer { get; }
- public CommandBufferEncoder Encoders { get; }
- public int CommandBufferIndex { get; }
- public CommandBufferScoped(CommandBufferPool pool, MTLCommandBuffer commandBuffer, CommandBufferEncoder encoders, int commandBufferIndex)
- {
- _pool = pool;
- CommandBuffer = commandBuffer;
- Encoders = encoders;
- CommandBufferIndex = commandBufferIndex;
- }
- public void AddDependant(IAuto dependant)
- {
- _pool.AddDependant(CommandBufferIndex, dependant);
- }
- public void AddWaitable(MultiFenceHolder waitable)
- {
- _pool.AddWaitable(CommandBufferIndex, waitable);
- }
- public FenceHolder GetFence()
- {
- return _pool.GetFence(CommandBufferIndex);
- }
- public void Dispose()
- {
- _pool?.Return(this);
- }
- }
- }
|