namespace Ghost.Graphics.RHI;
///
/// D3D12-native render device interface for creating graphics resources
///
public interface IRenderDevice : IDisposable
{
///
/// Graphics command queue for rendering operations
///
ICommandQueue GraphicsQueue
{
get;
}
///
/// Compute command queue for compute shader operations
///
ICommandQueue ComputeQueue
{
get;
}
///
/// Copy command queue for data transfer operations
///
ICommandQueue CopyQueue
{
get;
}
///
/// Gets the descriptor allocator for managing descriptors
///
IDescriptorAllocator DescriptorAllocator
{
get;
}
///
/// Creates a command buffer for recording rendering commands
///
/// Type of command buffer to create
/// A new command buffer instance
ICommandBuffer CreateCommandBuffer(CommandBufferType type = CommandBufferType.Graphics);
///
/// Creates a swap chain for presentation
///
/// Swap chain description
/// A new swap chain instance
ISwapChain CreateSwapChain(SwapChainDesc desc);
}
///
/// Command buffer types matching D3D12 command list types
///
public enum CommandBufferType
{
Graphics,
Compute,
Copy
}