namespace Ghost.Graphics.RHI;
///
/// D3D12-style command queue interface
///
public interface ICommandQueue : IDisposable
{
///
/// Type of commands this queue can execute
///
CommandQueueType Type { get; }
///
/// Submits a single command buffer for execution
///
/// Command buffer to submit
void Submit(ICommandBuffer commandBuffer);
///
/// Submits multiple command buffers for execution
///
/// Command buffers to submit
void Submit(ICommandBuffer[] commandBuffers);
///
/// Signals a fence with the specified value
///
/// Value to signal
/// The fence value that was signaled
ulong Signal(ulong value);
///
/// Waits for the fence to reach the specified value
///
/// Value to wait for
void WaitForValue(ulong value);
///
/// Gets the last completed fence value
///
/// Last completed fence value
ulong GetCompletedValue();
}
///
/// Command queue types matching D3D12
///
public enum CommandQueueType
{
Graphics,
Compute,
Copy
}