![]() |
XII Release 0.1.0
|
Interface that defines methods to manipulate a command list object. More...
#include <CommandList.h>
Classes | |
struct | VertexStreamDescription |
Public Types | |
enum class | RecordingState { Recording , Ended , Reset , Submitted } |
Enum class representing the state of a command list recording. More... | |
Public Member Functions | |
XII_ALWAYS_INLINE const xiiGALCommandListCreationDescription & | GetDescription () const |
This returns the creation description for this object. | |
XII_ALWAYS_INLINE xiiGALCommandQueue * | GetCommandQueue () const |
This returns the command queue for this object. | |
XII_ALWAYS_INLINE xiiSharedPtr< xiiGALPipelineState > | GetPipelineState () const |
This returns the active pipeline state handle for this object. | |
XII_ALWAYS_INLINE xiiSharedPtr< xiiGALPipelineResourceSignature > | GetPipelineResourceSignature () const |
This returns the active pipeline resource signature handle for this object. | |
XII_ALWAYS_INLINE xiiSharedPtr< xiiGALRenderPass > | GetRenderPass () const |
This returns the active render pass handle for this object. | |
XII_ALWAYS_INLINE xiiSharedPtr< xiiGALFramebuffer > | GetFramebuffer () const |
This returns the active frame buffer handle for this object. | |
XII_ALWAYS_INLINE const xiiGALCommandListStatistics & | GetCommandListStatistics () const |
This returns the command list statistics. | |
xiiUInt64 | Submit () |
Submits a command list to the command queue for execution. The command list is reset after the execution on the command queue. | |
void | SetPipelineState (xiiSharedPtr< xiiGALPipelineState > pPipelineState) |
Sets the pipeline state object for the command list. | |
void | SetStencilRef (xiiUInt32 uiStencilRef) |
Sets the stencil reference value used in the stencil test. | |
void | SetBlendFactor (const xiiColor &blendFactor) |
Sets the blend factors used in the blend state. | |
void | SetViewports (xiiArrayPtr< const xiiGALViewport > pViewports) |
Sets the viewports used in the rasterizer stage. This defines the area of the render target to which the rasterizer will clip. | |
XII_ALWAYS_INLINE void | SetViewport (const xiiGALViewport &viewport) |
Sets a single viewport for the rasterizer stage. This simplifies the process when only one viewport is needed. | |
void | SetScissorRects (xiiArrayPtr< const xiiRectU32 > pRects) |
Sets the scissor rectangles used in the rasterizer stage. This defines the area of the render target to which the rasterizer will clip. | |
XII_ALWAYS_INLINE void | SetScissorRect (const xiiRectU32 &rect) |
Sets a single scissor rectangle for the rasterizer stage. This simplifies the process when only one scissor rectangle is needed. | |
void | SetIndexBuffer (xiiSharedPtr< xiiGALBuffer > pIndexBuffer, xiiUInt64 uiByteOffset=0U, xiiEnum< xiiGALStateTransitionMode > transitionMode=xiiGALStateTransitionMode::Transition) |
Sets the index buffer for the input-assembler stage of the pipeline. This contains the indices into the vertex buffers. | |
void | SetVertexBuffers (xiiUInt32 uiStartSlot, xiiArrayPtr< xiiSharedPtr< xiiGALBuffer > > pVertexBuffers, xiiArrayPtr< xiiUInt64 > pByteOffsets, xiiBitflags< xiiGALSetVertexBufferFlags > flags=xiiGALSetVertexBufferFlags::None, xiiEnum< xiiGALStateTransitionMode > transitionMode=xiiGALStateTransitionMode::Transition) |
Sets the vertex buffers for the input-assembler stage of the pipeline. This contains the vertex data. | |
void | SetConstantBuffer (const xiiGALPipelineResourceDescription &bindingInformation, xiiSharedPtr< xiiGALBuffer > pConstantBuffer) |
This is used to set the constant (uniform) buffer for a shader resource. | |
void | SetShaderResourceBufferView (const xiiGALPipelineResourceDescription &bindingInformation, xiiSharedPtr< xiiGALBufferView > pBufferView) |
This is used to set the buffer view for a shader resource. | |
void | SetShaderResourceTextureView (const xiiGALPipelineResourceDescription &bindingInformation, xiiSharedPtr< xiiGALTextureView > pTextureView) |
This is used to set the texture view for a shader resource. | |
void | SetUnorderedAccessBufferView (const xiiGALPipelineResourceDescription &bindingInformation, xiiSharedPtr< xiiGALBufferView > pBufferView) |
void | SetUnorderedAccessTextureView (const xiiGALPipelineResourceDescription &bindingInformation, xiiSharedPtr< xiiGALTextureView > pTextureView) |
This is used to set the texture view for an unordered access. | |
void | SetSampler (const xiiGALPipelineResourceDescription &bindingInformation, xiiSharedPtr< xiiGALSampler > pSampler) |
This is used to set the sampler for a sampler resource. | |
void | ResolveAndSetConstantBuffer (const xiiTempHashedString &sResourceName, xiiSharedPtr< xiiGALBuffer > pConstantBuffer, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
Resolves and sets a constant buffer for the given resource name. | |
void | ResolveAndSetShaderResourceBufferView (const xiiTempHashedString &sResourceName, xiiSharedPtr< xiiGALBufferView > pBufferView, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
Resolves and sets a shader resource buffer view for the given resource name. | |
void | ResolveAndSetShaderResourceTextureView (const xiiTempHashedString &sResourceName, xiiSharedPtr< xiiGALTextureView > pTextureView, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
Resolves and sets a shader resource texture view for the given resource name. | |
void | ResolveAndSetUnorderedAccessBufferView (const xiiTempHashedString &sResourceName, xiiSharedPtr< xiiGALBufferView > pBufferView, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
Resolves and sets an unordered access buffer view for the given resource name. | |
void | ResolveAndSetUnorderedAccessTextureView (const xiiTempHashedString &sResourceName, xiiSharedPtr< xiiGALTextureView > pTextureView, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
Resolves and sets an unordered access texture view for the given resource name. | |
void | ResolveAndSetSampler (const xiiTempHashedString &sResourceName, xiiSharedPtr< xiiGALSampler > pSampler, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
Resolves and sets a sampler for the given resource name. | |
xiiResult | CommitShaderResources (xiiEnum< xiiGALStateTransitionMode > mode=xiiGALStateTransitionMode::Transition) |
This commits the pipeline shader resources to the GPU, and ensures that all necessary state transitions are performed. | |
void | ClearRenderTargetView (xiiSharedPtr< xiiGALTextureView > pRenderTargetView, const xiiColor &clearColor) |
This clears the specified render target view to the specified color. | |
void | ClearDepthStencilView (xiiSharedPtr< xiiGALTextureView > pDepthStencilView, bool bClearDepth, bool bClearStencil, float fDepthClear, xiiUInt8 uiStencilClear) |
This clears the specified depth stencil view to the specified depth and stencil values. | |
void | BeginRenderPass (const xiiGALBeginRenderPassDescription &beginRenderPass) |
This begins a render pass, which contains a collection of attachments, subpasses, and dependencies between the subpasses, and describes how the attachments are used over the course of the subpasses. | |
void | NextSubpass () |
This transitions to the next subpass of the begun render pass. | |
void | EndRenderPass () |
This ends a render pass that has already begun. | |
void | Draw (const xiiGALDrawDescription &description) |
Issues a non-indexed draw call using the specified parameters. | |
void | DrawIndexed (const xiiGALDrawIndexedDescription &description) |
Issues an indexed draw call using the specified parameters. | |
void | DrawIndirect (const xiiGALDrawIndirectDescription &description) |
Issues an indirect draw call based on arguments stored in a GPU buffer. | |
void | DrawIndexedIndirect (const xiiGALDrawIndexedIndirectDescription &description) |
Issues an indexed indirect draw call based on arguments stored in a GPU buffer. | |
void | DrawMesh (const xiiGALDrawMeshDescription &description) |
Issues a draw call that dispatches GPU mesh shaders directly. | |
void | DrawMeshIndirect (const xiiGALDrawMeshIndirectDescription &description) |
Issues an indirect mesh shader draw using arguments stored in a GPU buffer. | |
void | MultiDraw (const xiiGALMultiDrawDescription &description) |
Executes a batch of non-indexed draw calls using an array of parameters. | |
void | MultiDrawIndexed (const xiiGALMultiDrawIndexedDescription &description) |
Executes a batch of indexed draw calls using an array of parameters. | |
void | DispatchCompute (const xiiGALDispatchComputeDescription &description) |
Dispatches a compute workload using the specified thread group dimensions. | |
void | DispatchComputeIndirect (const xiiGALDispatchComputeIndirectDescription &description) |
Dispatches a compute workload using arguments stored in a GPU buffer. | |
void | BeginQuery (xiiSharedPtr< xiiGALQuery > pQuery) |
Begins a query. | |
void | EndQuery (xiiSharedPtr< xiiGALQuery > pQuery) |
Ends a query. | |
void | UpdateBuffer (xiiSharedPtr< xiiGALBuffer > pBuffer, xiiUInt32 uiDestinationOffset, xiiArrayPtr< const xiiUInt8 > pSourceData) |
Updates a buffer. | |
void | CopyBuffer (xiiSharedPtr< xiiGALBuffer > pSourceBuffer, xiiSharedPtr< xiiGALBuffer > pDestinationBuffer) |
Copies the entire contents of the source buffer to the destination buffer. | |
void | CopyBufferRegion (xiiSharedPtr< xiiGALBuffer > pSourceBuffer, xiiUInt64 uiSourceOffset, xiiSharedPtr< xiiGALBuffer > pDestinationBuffer, xiiUInt64 uiDestinationOffset, xiiUInt64 uiSize) |
Copies a region from the source buffer to the destination buffer. | |
xiiResult | MapBuffer (xiiSharedPtr< xiiGALBuffer > pBuffer, xiiEnum< xiiGALMapType > mapType, xiiBitflags< xiiGALMapFlags > mapFlags, void *&pMappedData) |
Maps a buffer into the CPU's address space. | |
xiiResult | UnmapBuffer (xiiSharedPtr< xiiGALBuffer > pBuffer, xiiEnum< xiiGALMapType > mapType) |
Unmaps a buffer from the CPU's address space. | |
void | UpdateTexture (xiiSharedPtr< xiiGALTexture > pTexture, const xiiGALTextureMipLevelData &textureMiplevelData, const xiiBoundingBoxU32 &textureBox, const xiiGALTextureSubResourceData &subresourceData) |
Updates a texture. | |
void | CopyTexture (xiiSharedPtr< xiiGALTexture > pSourceTexture, xiiSharedPtr< xiiGALTexture > pDestinationTexture) |
Copies the entire contents of the source texture to the destination texture. | |
void | CopyTextureRegion (xiiSharedPtr< xiiGALTexture > pSourceTexture, const xiiGALTextureMipLevelData &sourceMipLevelData, const xiiBoundingBoxU32 &box, xiiSharedPtr< xiiGALTexture > pDestinationTexture, const xiiGALTextureMipLevelData &destinationMipLevelData, const xiiVec3U32 &vDestinationPoint) |
Copies a region from the source texture to the destination texture. | |
void | ResolveTextureSubResource (xiiSharedPtr< xiiGALTexture > pSourceTexture, xiiSharedPtr< xiiGALTexture > pDestinationTexture, const xiiGALResolveTextureSubresourceDescription &description) |
Resolves a multisampled source texture into a non-multisampled destination texture. | |
void | GenerateMips (xiiSharedPtr< xiiGALTextureView > pTextureView) |
Generates mipmap levels for a texture. | |
xiiResult | MapTextureSubresource (xiiSharedPtr< xiiGALTexture > pTexture, xiiGALTextureMipLevelData textureMipLevelData, xiiEnum< xiiGALMapType > mapType, xiiBitflags< xiiGALMapFlags > mapFlags, xiiBoundingBoxU32 *pTextureBox, xiiGALMappedTextureSubresource &mappedData) |
Maps a texture subresource into the address space of the command list. | |
xiiResult | UnmapTextureSubresource (xiiSharedPtr< xiiGALTexture > pTexture, xiiGALTextureMipLevelData textureMipLevelData) |
Unmaps a texture subresource from the address space of the command list. | |
void | TransitionResourceStates (xiiArrayPtr< xiiGALStateTransitionDescription > pResourceBarriers) |
Transitions the resource states. | |
void | EnqueueSignal (xiiSharedPtr< xiiGALFence > pFence, xiiUInt64 uiValue) |
Tells the GPU to set a fence to a specified value after all previous work has completed. | |
void | DeviceWaitForFence (xiiSharedPtr< xiiGALFence > pFence, xiiUInt64 uiValue) |
Waits until the specified fence reaches or exceeds the specified value, on the device. | |
void | BeginDebugGroup (xiiStringView sName, const xiiColor &color=xiiColor::Black) |
Begins a new debug group with a specified name and color. | |
void | EndDebugGroup () |
Ends the current debug group. | |
void | InsertDebugLabel (xiiStringView sName, const xiiColor &color=xiiColor::Black) |
Inserts a debug label into the command list. | |
void | InvalidateState () |
Invalidates the current state of the command list. It is typically called when the command list is reset or when the pipeline state is changed. | |
XII_ALWAYS_INLINE void | AssertRenderingThread () const |
XII_ALWAYS_INLINE RecordingState | GetRecordingState () const |
This returns the command list recording state. | |
XII_ALWAYS_INLINE const xiiGALCommandListStatistics & | GetStatistics () const |
This returns the command list statistics. | |
![]() | |
XII_ALWAYS_INLINE xiiSharedPtr< xiiGALDevice > | GetDevice () const |
Returns the xiiGALDevice that created this resource. | |
![]() | |
XII_ALWAYS_INLINE xiiStringView | GetDebugName () const |
Returns the debug name of this resource. | |
void | SetDebugName (xiiStringView sDebugName) const |
Sets the debug name for this resource. | |
![]() | |
virtual const xiiRTTI * | GetDynamicRTTI () const |
bool | IsInstanceOf (const xiiRTTI *pType) const |
Returns whether the type of this instance is of the given type or derived from it. | |
template<typename T> | |
XII_ALWAYS_INLINE bool | IsInstanceOf () const |
Returns whether the type of this instance is of the given type or derived from it. | |
![]() | |
virtual | ~xiiRefCounted ()=default |
Adds a virtual destructor. | |
![]() | |
xiiRefCountingImpl ()=default | |
Constructor. | |
xiiRefCountingImpl (const xiiRefCountingImpl &rhs) | |
void | operator= (const xiiRefCountingImpl &rhs) |
xiiUInt32 | AddRef () const |
Increments the reference counter. Returns the new reference count. | |
xiiUInt32 | ReleaseRef () const |
Decrements the reference counter. Returns the new reference count. | |
bool | IsReferenced () const |
Returns true if the reference count is greater than 0, false otherwise. | |
xiiUInt32 | GetRefCount () const |
Returns the current reference count. | |
Protected Member Functions | |
xiiGALCommandList (xiiSharedPtr< xiiGALDevice > pDevice, xiiGALCommandQueue *pCommandQueue, const xiiGALCommandListCreationDescription &creationDescription) | |
void | Begin () |
Begins the command list for recording commands. This method should be called before any command is issued. | |
void | End () |
Ends the command list. This method should be called after all commands are issued. | |
void | Reset () |
Resets the command list. This method is used to clear all commands that have been recorded in the command list. | |
void | ValidateTextureRegion (const xiiGALTextureCreationDescription &textureDescription, xiiUInt32 uiMipLevel, xiiUInt32 uiSlice, const xiiBoundingBoxU32 &box) |
void | ValidateTextureUpdateRegion (const xiiGALTextureCreationDescription &textureDescription, xiiUInt32 uiMipLevel, xiiUInt32 uiSlice, const xiiBoundingBoxU32 &destinationBox, const xiiGALTextureSubResourceData &subresourceData) |
bool | VerifyResourceState (xiiBitflags< xiiGALResourceStateFlags > stateFlags, xiiBitflags< xiiGALCommandQueueType > queueType, const char *szParameterName) const |
bool | VerifyResourceStates (xiiBitflags< xiiGALResourceStateFlags > stateFlags, bool bIsTexture) const |
void | VerifyBufferState (xiiGALBuffer *pBuffer, xiiBitflags< xiiGALResourceStateFlags > requiredState, const char *szOperationName) |
void | VerifyTextureState (xiiGALTexture *pTexture, xiiBitflags< xiiGALResourceStateFlags > requiredState, const char *szOperationName) |
void | VerifyBottomLevelASState (xiiGALBottomLevelAS *pBottomLevelAS, xiiBitflags< xiiGALResourceStateFlags > requiredState, const char *szOperationName) |
void | VerifyTopLevelASState (xiiGALTopLevelAS *pTopLevelAS, xiiBitflags< xiiGALResourceStateFlags > requiredState, const char *szOperationName) |
![]() | |
xiiGALDeviceObject (xiiSharedPtr< xiiGALDevice > pDevice) | |
![]() | |
virtual XII_ALWAYS_INLINE void | SetDebugNamePlatform (xiiStringView sName) const |
Protected Attributes | |
xiiGALCommandListCreationDescription | m_Description |
xiiGALCommandQueue * | m_pCommandQueue |
RecordingState | m_RecordingState = RecordingState::Reset |
const bool | m_bNativeMultiDrawSupported |
xiiSharedPtr< xiiGALPipelineState > | m_pPipelineState |
xiiSharedPtr< xiiGALPipelineResourceSignature > | m_pPipelineResourceSignature |
xiiHybridArray< VertexStreamDescription, 2U > | m_VertexStreams |
xiiSharedPtr< xiiGALBuffer > | m_pIndexBuffer |
xiiUInt64 | m_uiIndexDataOffset = 0ULL |
xiiSharedPtr< xiiGALRenderPass > | m_pRenderPass |
xiiSharedPtr< xiiGALFramebuffer > | m_pFramebuffer |
xiiColor | m_BlendFactors = xiiColor::Black |
xiiUInt32 | m_uiStencilRef = 0U |
xiiHybridArray< xiiGALViewport, 2U > | m_Viewports |
xiiHybridArray< xiiRectU32, 2U > | m_ScissorRects |
![]() | |
xiiSharedPtr< xiiGALDevice > | m_pDevice |
Static Protected Attributes | |
static constexpr xiiUInt32 | s_uiDrawMeshIndirectCommandStride = sizeof(xiiUInt32) * 3 |
Friends | |
class | xiiGALDevice |
class | xiiMemoryUtils |
Additional Inherited Members | |
![]() | |
static const xiiRTTI * | GetStaticRTTI () |
Interface that defines methods to manipulate a command list object.
|
strong |
Enum class representing the state of a command list recording.
|
protected |
Begins the command list for recording commands. This method should be called before any command is issued.
void xiiGALCommandList::BeginDebugGroup | ( | xiiStringView | sName, |
const xiiColor & | color = xiiColor::Black ) |
Begins a new debug group with a specified name and color.
sName | - The name of the debug group. |
color | - The color associated with the debug group. |
void xiiGALCommandList::BeginQuery | ( | xiiSharedPtr< xiiGALQuery > | pQuery | ) |
Begins a query.
pQuery | - The handle to the query object. |
void xiiGALCommandList::BeginRenderPass | ( | const xiiGALBeginRenderPassDescription & | beginRenderPass | ) |
This begins a render pass, which contains a collection of attachments, subpasses, and dependencies between the subpasses, and describes how the attachments are used over the course of the subpasses.
beginRenderPass | - The description of the render pass. See xiiGALBeginRenderPassDescription for more information. |
void xiiGALCommandList::ClearDepthStencilView | ( | xiiSharedPtr< xiiGALTextureView > | pDepthStencilView, |
bool | bClearDepth, | ||
bool | bClearStencil, | ||
float | fDepthClear, | ||
xiiUInt8 | uiStencilClear ) |
This clears the specified depth stencil view to the specified depth and stencil values.
pDepthStencilView | - The handle to the depth stencil view object. The view must be a xiiGALTextureViewType::DepthStencil. |
bClearDepth | - Whether to clear the depth portion of the buffer. |
bClearStencil | - Whether to clear the stencil portion of the buffer. |
fDepthClear | - The value to which to clear the depth portion of the buffer with. |
uiStencilClear | - The value to which to clear the stencil portion of the buffer with. |
void xiiGALCommandList::ClearRenderTargetView | ( | xiiSharedPtr< xiiGALTextureView > | pRenderTargetView, |
const xiiColor & | clearColor ) |
This clears the specified render target view to the specified color.
pRenderTargetView | - The handle to the render target view object. The view must be a xiiGALTextureViewType::RenderTarget. |
clearColor | - The color to which to clear the render target view. |
xiiResult xiiGALCommandList::CommitShaderResources | ( | xiiEnum< xiiGALStateTransitionMode > | mode = xiiGALStateTransitionMode::Transition | ) |
This commits the pipeline shader resources to the GPU, and ensures that all necessary state transitions are performed.
mode | - The state transition mode. The default is xiiGALStateTransitionMode::Transition. |
void xiiGALCommandList::CopyBuffer | ( | xiiSharedPtr< xiiGALBuffer > | pSourceBuffer, |
xiiSharedPtr< xiiGALBuffer > | pDestinationBuffer ) |
Copies the entire contents of the source buffer to the destination buffer.
pSourceBuffer | - The handle to the source buffer object. |
pDestinationBuffer | - The handle to the destination buffer object. |
void xiiGALCommandList::CopyBufferRegion | ( | xiiSharedPtr< xiiGALBuffer > | pSourceBuffer, |
xiiUInt64 | uiSourceOffset, | ||
xiiSharedPtr< xiiGALBuffer > | pDestinationBuffer, | ||
xiiUInt64 | uiDestinationOffset, | ||
xiiUInt64 | uiSize ) |
Copies a region from the source buffer to the destination buffer.
pSourceBuffer | - The handle to the source buffer object. |
uiSourceOffset | - Byte offset into the source buffer where the copy should start. |
pDestinationBuffer | - The handle to the destination buffer object. |
uiDestinationOffset | - Byte offset into the destination buffer where the copy should start. |
uiSize | - Size in bytes of the region to copy. |
void xiiGALCommandList::CopyTexture | ( | xiiSharedPtr< xiiGALTexture > | pSourceTexture, |
xiiSharedPtr< xiiGALTexture > | pDestinationTexture ) |
Copies the entire contents of the source texture to the destination texture.
pSourceTexture | - The handle to the source texture object. |
pDestinationTexture | - The handle to the destination texture object. |
void xiiGALCommandList::CopyTextureRegion | ( | xiiSharedPtr< xiiGALTexture > | pSourceTexture, |
const xiiGALTextureMipLevelData & | sourceMipLevelData, | ||
const xiiBoundingBoxU32 & | box, | ||
xiiSharedPtr< xiiGALTexture > | pDestinationTexture, | ||
const xiiGALTextureMipLevelData & | destinationMipLevelData, | ||
const xiiVec3U32 & | vDestinationPoint ) |
Copies a region from the source texture to the destination texture.
pSourceTexture | - The handle to the source texture object. |
sourceMipLevelData | - Specifies the subresource in the source texture. See xiiGALTextureMipLevelData for details. |
box | - Specifies the region within the source subresource to copy. |
pDestinationTexture | - The handle to the destination texture object. |
destinationMipLevelData | - Specifies the subresource in the destination texture. See xiiGALTextureMipLevelData for details. |
vDestinationPoint | - Specifies the point within the destination subresource where the region should be copied to. |
void xiiGALCommandList::DeviceWaitForFence | ( | xiiSharedPtr< xiiGALFence > | pFence, |
xiiUInt64 | uiValue ) |
Waits until the specified fence reaches or exceeds the specified value, on the device.
pFence | - The fence to wait. The fence must be created with type xiiGALFenceType::General. |
uiValue | - The value that the command list is waiting for the fence to reach. |
void xiiGALCommandList::DispatchCompute | ( | const xiiGALDispatchComputeDescription & | description | ) |
Dispatches a compute workload using the specified thread group dimensions.
Synchronously encodes compute workload dimensions per axis.
description | - Thread group count and Metal overrides (if any). |
void xiiGALCommandList::DispatchComputeIndirect | ( | const xiiGALDispatchComputeIndirectDescription & | description | ) |
Dispatches a compute workload using arguments stored in a GPU buffer.
Enables GPU-controlled compute invocation for async workloads or culling passes.
description | - Buffer containing dispatch dimensions and optional Metal overrides. |
void xiiGALCommandList::Draw | ( | const xiiGALDrawDescription & | description | ) |
Issues a non-indexed draw call using the specified parameters.
Executes a basic draw using vertex buffers without indexing.
description | - Vertex and instance counts, and vertex offsets. |
void xiiGALCommandList::DrawIndexed | ( | const xiiGALDrawIndexedDescription & | description | ) |
Issues an indexed draw call using the specified parameters.
Uses an index buffer to reference geometry vertices and enables instancing.
description | - Index type, counts, and offset information. |
void xiiGALCommandList::DrawIndexedIndirect | ( | const xiiGALDrawIndexedIndirectDescription & | description | ) |
Issues an indexed indirect draw call based on arguments stored in a GPU buffer.
Uses index data and indirect arguments pulled from a structured GPU buffer.
description | - Index type, buffer handles, offsets, and draw count. |
void xiiGALCommandList::DrawIndirect | ( | const xiiGALDrawIndirectDescription & | description | ) |
Issues an indirect draw call based on arguments stored in a GPU buffer.
Supports multi-draw and optional counter buffer for dynamic draw count.
description | - Buffer handles, offsets, draw count, and flags. |
void xiiGALCommandList::DrawMesh | ( | const xiiGALDrawMeshDescription & | description | ) |
Issues a draw call that dispatches GPU mesh shaders directly.
Typically used when mesh shading pipelines are active and task amplification is desired.
description | - Thread group dimensions and flags. |
void xiiGALCommandList::DrawMeshIndirect | ( | const xiiGALDrawMeshIndirectDescription & | description | ) |
Issues an indirect mesh shader draw using arguments stored in a GPU buffer.
Supports GPU-driven workflows for meshlets with optional counter buffer.
description | - Buffer handles, offsets, draw count, and flags. |
|
protected |
Ends the command list. This method should be called after all commands are issued.
void xiiGALCommandList::EndQuery | ( | xiiSharedPtr< xiiGALQuery > | pQuery | ) |
Ends a query.
pQuery | - The handle to the query object. |
void xiiGALCommandList::EnqueueSignal | ( | xiiSharedPtr< xiiGALFence > | pFence, |
xiiUInt64 | uiValue ) |
Tells the GPU to set a fence to a specified value after all previous work has completed.
pFence | - The fence to signal. |
uiValue | - The value to set the fence to. This value must be greater than the previously signalled value on the same fence. |
void xiiGALCommandList::GenerateMips | ( | xiiSharedPtr< xiiGALTextureView > | pTextureView | ) |
Generates mipmap levels for a texture.
pTextureView | - The handle to the texture view object. The texture view must be of type xiiGALTextureViewType::ShaderResource. |
void xiiGALCommandList::InsertDebugLabel | ( | xiiStringView | sName, |
const xiiColor & | color = xiiColor::Black ) |
Inserts a debug label into the command list.
sName | - The name of the debug label. |
color | - The color associated with the debug label. |
xiiResult xiiGALCommandList::MapBuffer | ( | xiiSharedPtr< xiiGALBuffer > | pBuffer, |
xiiEnum< xiiGALMapType > | mapType, | ||
xiiBitflags< xiiGALMapFlags > | mapFlags, | ||
void *& | pMappedData ) |
Maps a buffer into the CPU's address space.
pBuffer | - The handle to the buffer object. |
mapType | - Specifies the CPU's access pattern for the map operation. See xiiGALMapType for details. |
mapFlags | - Flags specifying how the buffer should be mapped. See xiiGALMapFlags for details. |
pMappedData | - Pointer to the mapped data. |
xiiResult xiiGALCommandList::MapTextureSubresource | ( | xiiSharedPtr< xiiGALTexture > | pTexture, |
xiiGALTextureMipLevelData | textureMipLevelData, | ||
xiiEnum< xiiGALMapType > | mapType, | ||
xiiBitflags< xiiGALMapFlags > | mapFlags, | ||
xiiBoundingBoxU32 * | pTextureBox, | ||
xiiGALMappedTextureSubresource & | mappedData ) |
Maps a texture subresource into the address space of the command list.
pTexture | - The handle to the texture object. This is the texture that contains the subresource to map. |
textureMipLevelData | - Specifies the subresource to map. This is the mipmap level of the texture to map. |
mapType | - Specifies the CPU's read and write access to a resource. |
mapFlags | - Specifies the behavior of the map operation. |
pTextureBox | - Specifies the region of the resource to map. If this parameter is null, the entire resource is mapped. |
mappedData | - Receives information about the resource data when the function returns. |
void xiiGALCommandList::MultiDraw | ( | const xiiGALMultiDrawDescription & | description | ) |
Executes a batch of non-indexed draw calls using an array of parameters.
Enables multi-draw submission without index buffers, with per-draw configurations.
description | - Array of draw items and instance parameters. |
void xiiGALCommandList::MultiDrawIndexed | ( | const xiiGALMultiDrawIndexedDescription & | description | ) |
Executes a batch of indexed draw calls using an array of parameters.
Supports per-item base vertex and index range offsets across draws.
description | - Array of indexed draw items and instance parameters. |
|
protected |
Resets the command list. This method is used to clear all commands that have been recorded in the command list.
void xiiGALCommandList::ResolveAndSetConstantBuffer | ( | const xiiTempHashedString & | sResourceName, |
xiiSharedPtr< xiiGALBuffer > | pConstantBuffer, | ||
xiiBitflags< xiiGALShaderType > | shaderStages = xiiGALShaderType::Unknown ) |
Resolves and sets a constant buffer for the given resource name.
If shaderStages
is left as xiiGALShaderType::Unknown
, the function resolves the resource based on whatever shader stage is found. Otherwise, it attempts to find a resource description that includes all the specified shader stages.
sResourceName | - The hashed name of the resource to resolve. |
pConstantBuffer | - Shared pointer to the constant buffer to set. |
shaderStages | - Bitflags specifying applicable shader stages (defaults to unknown). |
void xiiGALCommandList::ResolveAndSetSampler | ( | const xiiTempHashedString & | sResourceName, |
xiiSharedPtr< xiiGALSampler > | pSampler, | ||
xiiBitflags< xiiGALShaderType > | shaderStages = xiiGALShaderType::Unknown ) |
Resolves and sets a sampler for the given resource name.
If shaderStages
is left as xiiGALShaderType::Unknown
, the function resolves the resource based on whatever shader stage is found. Otherwise, it attempts to find a resource description that includes all the specified shader stages.
sResourceName | - The hashed name of the resource to resolve. |
pSampler | - Shared pointer to the sampler to set. |
shaderStages | - Bitflags specifying applicable shader stages (defaults to unknown). |
void xiiGALCommandList::ResolveAndSetShaderResourceBufferView | ( | const xiiTempHashedString & | sResourceName, |
xiiSharedPtr< xiiGALBufferView > | pBufferView, | ||
xiiBitflags< xiiGALShaderType > | shaderStages = xiiGALShaderType::Unknown ) |
Resolves and sets a shader resource buffer view for the given resource name.
If shaderStages
is left as xiiGALShaderType::Unknown
, the function resolves the resource based on whatever shader stage is found. Otherwise, it attempts to find a resource description that includes all the specified shader stages.
sResourceName | - The hashed name of the resource to resolve. |
pBufferView | - Shared pointer to the buffer view to set. |
shaderStages | - Bitflags specifying applicable shader stages (defaults to unknown). |
void xiiGALCommandList::ResolveAndSetShaderResourceTextureView | ( | const xiiTempHashedString & | sResourceName, |
xiiSharedPtr< xiiGALTextureView > | pTextureView, | ||
xiiBitflags< xiiGALShaderType > | shaderStages = xiiGALShaderType::Unknown ) |
Resolves and sets a shader resource texture view for the given resource name.
If shaderStages
is left as xiiGALShaderType::Unknown
, the function resolves the resource based on whatever shader stage is found. Otherwise, it attempts to find a resource description that includes all the specified shader stages.
sResourceName | - The hashed name of the resource to resolve. |
pTextureView | - Shared pointer to the texture view to set. |
shaderStages | - Bitflags specifying applicable shader stages (defaults to unknown). |
void xiiGALCommandList::ResolveAndSetUnorderedAccessBufferView | ( | const xiiTempHashedString & | sResourceName, |
xiiSharedPtr< xiiGALBufferView > | pBufferView, | ||
xiiBitflags< xiiGALShaderType > | shaderStages = xiiGALShaderType::Unknown ) |
Resolves and sets an unordered access buffer view for the given resource name.
If shaderStages
is left as xiiGALShaderType::Unknown
, the function resolves the resource based on whatever shader stage is found. Otherwise, it attempts to find a resource description that includes all the specified shader stages.
sResourceName | - The hashed name of the resource to resolve. |
pBufferView | - Shared pointer to the unordered access buffer view to set. |
shaderStages | - Bitflags specifying applicable shader stages (defaults to unknown). |
void xiiGALCommandList::ResolveAndSetUnorderedAccessTextureView | ( | const xiiTempHashedString & | sResourceName, |
xiiSharedPtr< xiiGALTextureView > | pTextureView, | ||
xiiBitflags< xiiGALShaderType > | shaderStages = xiiGALShaderType::Unknown ) |
Resolves and sets an unordered access texture view for the given resource name.
If shaderStages
is left as xiiGALShaderType::Unknown
, the function resolves the resource based on whatever shader stage is found. Otherwise, it attempts to find a resource description that includes all the specified shader stages.
sResourceName | - The hashed name of the resource to resolve. |
pTextureView | - Shared pointer to the unordered access texture view to set. |
shaderStages | - Bitflags specifying applicable shader stages (defaults to unknown). |
void xiiGALCommandList::ResolveTextureSubResource | ( | xiiSharedPtr< xiiGALTexture > | pSourceTexture, |
xiiSharedPtr< xiiGALTexture > | pDestinationTexture, | ||
const xiiGALResolveTextureSubresourceDescription & | description ) |
Resolves a multisampled source texture into a non-multisampled destination texture.
This operation performs a resolve from a multi-sampled texture (typically used for anti-aliasing) into a non-multi-sampled texture, commonly used for presenting or further processing.
pSourceTexture | - Handle to the multi-sampled source texture. |
pDestinationTexture | - Handle to the destination texture which must not be multi-sampled. |
description | - Structure that specifies the source and destination subresources, including mip levels, array slices, resource formats, and texture state transitions. See xiiGALResolveTextureSubresourceDescription for details. |
void xiiGALCommandList::SetBlendFactor | ( | const xiiColor & | blendFactor | ) |
Sets the blend factors used in the blend state.
blendFactor - The blend factors represented by a xiiColor.
void xiiGALCommandList::SetConstantBuffer | ( | const xiiGALPipelineResourceDescription & | bindingInformation, |
xiiSharedPtr< xiiGALBuffer > | pConstantBuffer ) |
This is used to set the constant (uniform) buffer for a shader resource.
bindingInformation | - This describes the binding information for the shader resource, see xiiGALPipelineResourceDescription for details. |
pConstantBuffer | - The handle to the constant (uniform) buffer object to set. |
void xiiGALCommandList::SetIndexBuffer | ( | xiiSharedPtr< xiiGALBuffer > | pIndexBuffer, |
xiiUInt64 | uiByteOffset = 0U, | ||
xiiEnum< xiiGALStateTransitionMode > | transitionMode = xiiGALStateTransitionMode::Transition ) |
Sets the index buffer for the input-assembler stage of the pipeline. This contains the indices into the vertex buffers.
pIndexBuffer | - The handle to the index buffer object. The index buffer must be created with the xiiGALBindFlags::IndexBuffer bind flag. |
uiByteOffset | - The byte offset into the index buffer. That is, from the beginning of the buffer to the start of the index data. |
transitionMode | - Resource state transition mode. Specifies whether the buffer state should be transitioned to the required state automatically. |
void xiiGALCommandList::SetPipelineState | ( | xiiSharedPtr< xiiGALPipelineState > | pPipelineState | ) |
Sets the pipeline state object for the command list.
pPipelineState | - The handle to the pipeline state object. |
void xiiGALCommandList::SetSampler | ( | const xiiGALPipelineResourceDescription & | bindingInformation, |
xiiSharedPtr< xiiGALSampler > | pSampler ) |
This is used to set the sampler for a sampler resource.
bindingInformation | - This describes the binding information for the sampler resource, see xiiGALPipelineResourceDescription for details. |
pSampler | - The handle to the sampler object to set. |
|
inline |
Sets a single scissor rectangle for the rasterizer stage. This simplifies the process when only one scissor rectangle is needed.
rect | - The rectangle describing the area to bind. |
void xiiGALCommandList::SetScissorRects | ( | xiiArrayPtr< const xiiRectU32 > | pRects | ) |
Sets the scissor rectangles used in the rasterizer stage. This defines the area of the render target to which the rasterizer will clip.
pRects | - The array of rectangle structures, describing the scissor rectangles to bind. |
void xiiGALCommandList::SetShaderResourceBufferView | ( | const xiiGALPipelineResourceDescription & | bindingInformation, |
xiiSharedPtr< xiiGALBufferView > | pBufferView ) |
This is used to set the buffer view for a shader resource.
bindingInformation | - This describes the binding information for the shader resource, see xiiGALPipelineResourceDescription for details. |
pBufferView | - The handle to the buffer view object to set. |
void xiiGALCommandList::SetShaderResourceTextureView | ( | const xiiGALPipelineResourceDescription & | bindingInformation, |
xiiSharedPtr< xiiGALTextureView > | pTextureView ) |
This is used to set the texture view for a shader resource.
bindingInformation | - This describes the binding information for the shader resource, see xiiGALPipelineResourceDescription for details. |
pTextureView | - The handle to the texture view object to set. |
void xiiGALCommandList::SetStencilRef | ( | xiiUInt32 | uiStencilRef | ) |
Sets the stencil reference value used in the stencil test.
uiStencilRef | - Stencil reference value. |
void xiiGALCommandList::SetUnorderedAccessBufferView | ( | const xiiGALPipelineResourceDescription & | bindingInformation, |
xiiSharedPtr< xiiGALBufferView > | pBufferView ) |
This is used to set the buffer view for an unordered access.
bindingInformation | - This describes the binding information for the shader resource, see xiiGALPipelineResourceDescription for details. |
pBufferView | - The handle to the buffer view object to set. |
void xiiGALCommandList::SetUnorderedAccessTextureView | ( | const xiiGALPipelineResourceDescription & | bindingInformation, |
xiiSharedPtr< xiiGALTextureView > | pTextureView ) |
This is used to set the texture view for an unordered access.
bindingInformation | - This describes the binding information for the shader resource, see xiiGALPipelineResourceDescription for details. |
pTextureView | - The handle to the texture view object to set. |
void xiiGALCommandList::SetVertexBuffers | ( | xiiUInt32 | uiStartSlot, |
xiiArrayPtr< xiiSharedPtr< xiiGALBuffer > > | pVertexBuffers, | ||
xiiArrayPtr< xiiUInt64 > | pByteOffsets, | ||
xiiBitflags< xiiGALSetVertexBufferFlags > | flags = xiiGALSetVertexBufferFlags::None, | ||
xiiEnum< xiiGALStateTransitionMode > | transitionMode = xiiGALStateTransitionMode::Transition ) |
Sets the vertex buffers for the input-assembler stage of the pipeline. This contains the vertex data.
uiStartSlot | - The starting slot for the vertex buffers, which is the first input slot for binding. The first vertex buffer is explicitly bound to the start slot; each additional vertex buffer in the array is implicitly bound to each subsequent input slot. |
pVertexBuffers | - The array of handles to the vertex buffer objects. The vertex buffers must be created with the xiiGALBindFlags::VertexBuffer bind flag. |
pByteOffsets | - The array of offset values; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used. If this parameter is an empty array, zero offsets for all buffers will be used. |
flags | - Additional flags for setting vertex buffers. See xiiGALSetVertexBufferFlags for more information. |
transitionMode | - Resource state transition mode. Specifies whether the buffer state should be transitioned to the required state automatically. |
|
inline |
Sets a single viewport for the rasterizer stage. This simplifies the process when only one viewport is needed.
viewport | - The viewport structure describing the area to bind. |
void xiiGALCommandList::SetViewports | ( | xiiArrayPtr< const xiiGALViewport > | pViewports | ) |
Sets the viewports used in the rasterizer stage. This defines the area of the render target to which the rasterizer will clip.
pViewports | - The array of viewports structures, describing the viewports to bind. |
xiiUInt64 xiiGALCommandList::Submit | ( | ) |
Submits a command list to the command queue for execution. The command list is reset after the execution on the command queue.
void xiiGALCommandList::TransitionResourceStates | ( | xiiArrayPtr< xiiGALStateTransitionDescription > | pResourceBarriers | ) |
Transitions the resource states.
pResourceBarriers | - Pointer to the array of resource barriers. |
There are two main usage scenarios for this method: 1. An application knows specifics of resource state transitions not available to the GAL. For example, only single mip level needs to be transitioned. 2. An application manages resource states in multiple threads in parallel. The method always reads the states of all resources to transition. If the state of a resource is managed by multiple threads in parallel, the resource must first be transitioned to unknown state (xiiGALResourceState::Unknown) to disable automatic state management in the GAL. When xiiGALStateTransitionFlags::UpdateState is set, the method may update the state of the corresponding resource which is not thread safe. No other threads should read or write the state of that resource.
xiiResult xiiGALCommandList::UnmapBuffer | ( | xiiSharedPtr< xiiGALBuffer > | pBuffer, |
xiiEnum< xiiGALMapType > | mapType ) |
Unmaps a buffer from the CPU's address space.
pBuffer | - The handle to the buffer object. |
mapType | - Specifies the CPU's access pattern for the map operation. See xiiGALMapType for details. |
xiiResult xiiGALCommandList::UnmapTextureSubresource | ( | xiiSharedPtr< xiiGALTexture > | pTexture, |
xiiGALTextureMipLevelData | textureMipLevelData ) |
Unmaps a texture subresource from the address space of the command list.
pTexture | - The handle to the texture object. |
textureMipLevelData | - Specifies the subresource to unmap. |
void xiiGALCommandList::UpdateBuffer | ( | xiiSharedPtr< xiiGALBuffer > | pBuffer, |
xiiUInt32 | uiDestinationOffset, | ||
xiiArrayPtr< const xiiUInt8 > | pSourceData ) |
Updates a buffer.
pBuffer | - The handle to the buffer object. |
uiDestinationOffset | - Byte offset into the buffer where the update should start. |
pSourceData | - Pointer to the source data. |
void xiiGALCommandList::UpdateTexture | ( | xiiSharedPtr< xiiGALTexture > | pTexture, |
const xiiGALTextureMipLevelData & | textureMiplevelData, | ||
const xiiBoundingBoxU32 & | textureBox, | ||
const xiiGALTextureSubResourceData & | subresourceData ) |
Updates a texture.
pTexture | - The handle to the texture object. |
textureMiplevelData | - Specifies the subresource to update. See xiiGALTextureMipLevelData for details. |
textureBox | - Specifies the region within the subresource to update. |
subresourceData | - Specifies the new data. See xiiGALTextureSubResourceData for details. |