![]() |
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 : xiiUInt8 { Reset = 0U , Recording , Ended , ENUM_COUNT } |
| 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 const xiiGALCommandListStatistics & | GetCommandListStatistics () const |
| This returns the command list statistics. | |
| void | Begin () |
| void | End () |
| void | Reset () |
| void | Submit (xiiGALCommandList *pSecondaryCommandList) |
| Submits a secondary command list to a primary command list for execution. | |
| void | SetPipelineState (xiiGALPipelineState *pPipelineState) |
| void | PushConstants (xiiUInt32 uiOffset, xiiArrayPtr< xiiUInt8 > pData) |
| void | SetStencilRef (xiiUInt32 uiStencilRef) |
| void | SetBlendFactor (const xiiColor &blendFactor) |
| void | SetViewports (xiiArrayPtr< const xiiGALViewport > pViewports) |
| XII_ALWAYS_INLINE void | SetViewport (const xiiGALViewport &viewport) |
| void | SetScissorRects (xiiArrayPtr< const xiiRectU32 > pRects) |
| XII_ALWAYS_INLINE void | SetScissorRect (const xiiRectU32 &rect) |
| void | SetIndexBuffer (xiiGALBuffer *pIndexBuffer, xiiUInt64 uiByteOffset=0U, xiiEnum< xiiGALStateTransitionMode > transitionMode=xiiGALStateTransitionMode::Transition) |
| void | SetVertexBuffers (xiiUInt32 uiStartSlot, xiiArrayPtr< xiiGALBuffer * > pVertexBuffers, xiiArrayPtr< xiiUInt64 > pByteOffsets={}, xiiBitflags< xiiGALSetVertexBufferFlags > flags=xiiGALSetVertexBufferFlags::None, xiiEnum< xiiGALStateTransitionMode > transitionMode=xiiGALStateTransitionMode::Transition) |
| void | SetConstantBuffer (const xiiGALPipelineResourceDescription &bindingInformation, xiiGALBuffer *pConstantBuffer) |
| void | SetShaderResourceBufferView (const xiiGALPipelineResourceDescription &bindingInformation, xiiGALBufferView *pBufferView) |
| void | SetShaderResourceBufferViews (const xiiGALPipelineResourceDescription &bindingInformation, xiiUInt32 uiFirstElement, xiiArrayPtr< xiiGALBufferView * > pBufferViews) |
| Updates a range in a fixed or runtime-sized buffer SRV descriptor array. | |
| void | SetShaderResourceTextureView (const xiiGALPipelineResourceDescription &bindingInformation, xiiGALTextureView *pTextureView) |
| void | SetShaderResourceTextureViews (const xiiGALPipelineResourceDescription &bindingInformation, xiiUInt32 uiFirstElement, xiiArrayPtr< xiiGALTextureView * > pTextureViews) |
| Updates a range in a fixed or runtime-sized texture SRV descriptor array. | |
| void | SetUnorderedAccessBufferView (const xiiGALPipelineResourceDescription &bindingInformation, xiiGALBufferView *pBufferView) |
| void | SetUnorderedAccessBufferViews (const xiiGALPipelineResourceDescription &bindingInformation, xiiUInt32 uiFirstElement, xiiArrayPtr< xiiGALBufferView * > pBufferViews) |
| Updates a range in a fixed or runtime-sized buffer UAV descriptor array. | |
| void | SetUnorderedAccessTextureView (const xiiGALPipelineResourceDescription &bindingInformation, xiiGALTextureView *pTextureView) |
| void | SetUnorderedAccessTextureViews (const xiiGALPipelineResourceDescription &bindingInformation, xiiUInt32 uiFirstElement, xiiArrayPtr< xiiGALTextureView * > pTextureViews) |
| Updates a range in a fixed or runtime-sized texture UAV descriptor array. | |
| void | SetSampler (const xiiGALPipelineResourceDescription &bindingInformation, xiiGALSampler *pSampler) |
| void | SetSamplers (const xiiGALPipelineResourceDescription &bindingInformation, xiiUInt32 uiFirstElement, xiiArrayPtr< xiiGALSampler * > pSamplers) |
| Updates a range in a fixed or runtime-sized sampler descriptor array. | |
| void | SetAccelerationStructure (const xiiGALPipelineResourceDescription &bindingInformation, xiiGALTopLevelAS *pTopLevelAS) |
| void | ResolveAndSetConstantBuffer (const xiiTempHashedString &sResourceName, xiiGALBuffer *pConstantBuffer, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetShaderResourceBufferView (const xiiTempHashedString &sResourceName, xiiGALBufferView *pBufferView, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetShaderResourceBufferViews (const xiiTempHashedString &sResourceName, xiiUInt32 uiFirstElement, xiiArrayPtr< xiiGALBufferView * > pBufferViews, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetShaderResourceTextureView (const xiiTempHashedString &sResourceName, xiiGALTextureView *pTextureView, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetShaderResourceTextureViews (const xiiTempHashedString &sResourceName, xiiUInt32 uiFirstElement, xiiArrayPtr< xiiGALTextureView * > pTextureViews, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetUnorderedAccessBufferView (const xiiTempHashedString &sResourceName, xiiGALBufferView *pBufferView, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetUnorderedAccessBufferViews (const xiiTempHashedString &sResourceName, xiiUInt32 uiFirstElement, xiiArrayPtr< xiiGALBufferView * > pBufferViews, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetUnorderedAccessTextureView (const xiiTempHashedString &sResourceName, xiiGALTextureView *pTextureView, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetUnorderedAccessTextureViews (const xiiTempHashedString &sResourceName, xiiUInt32 uiFirstElement, xiiArrayPtr< xiiGALTextureView * > pTextureViews, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetSampler (const xiiTempHashedString &sResourceName, xiiGALSampler *pSampler, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetSamplers (const xiiTempHashedString &sResourceName, xiiUInt32 uiFirstElement, xiiArrayPtr< xiiGALSampler * > pSamplers, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| void | ResolveAndSetAccelerationStructure (const xiiTempHashedString &sResourceName, xiiGALTopLevelAS *pTopLevelAS, xiiBitflags< xiiGALShaderType > shaderStages=xiiGALShaderType::Unknown) |
| xiiResult | CommitShaderResources (xiiEnum< xiiGALStateTransitionMode > mode=xiiGALStateTransitionMode::Transition) |
| void | ClearRenderTargetView (xiiGALTextureView *pRenderTargetView, const xiiColor &clearColor) |
| void | ClearDepthStencilView (xiiGALTextureView *pDepthStencilView, bool bClearDepth, bool bClearStencil, float fDepthClear, xiiUInt8 uiStencilClear) |
| void | BeginRenderPass (const xiiGALBeginRenderPassDescription &beginRenderPass) |
| 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) |
| void | DrawIndexed (const xiiGALDrawIndexedDescription &description) |
| void | DrawIndirect (const xiiGALDrawIndirectDescription &description) |
| void | DrawIndexedIndirect (const xiiGALDrawIndexedIndirectDescription &description) |
| void | DrawMesh (const xiiGALDrawMeshDescription &description) |
| void | DrawMeshIndirect (const xiiGALDrawMeshIndirectDescription &description) |
| void | MultiDraw (const xiiGALMultiDrawDescription &description) |
| void | MultiDrawIndexed (const xiiGALMultiDrawIndexedDescription &description) |
| void | DispatchCompute (const xiiGALDispatchComputeDescription &description) |
| void | DispatchComputeIndirect (const xiiGALDispatchComputeIndirectDescription &description) |
| void | TraceRays (const xiiGALTraceRaysDescription &description) |
| Dispatches rays using the currently bound ray tracing pipeline. | |
| void | TraceRaysIndirect (const xiiGALTraceRaysIndirectDescription &description) |
| Dispatches rays indirectly using dimensions sourced from a GPU buffer. | |
| void | UpdateSBT (const xiiGALUpdateSBTDescription &description) |
| Updates SBT records from ray tracing shader group handles. | |
| void | BuildBLAS (const xiiGALBuildBLASDescription &description) |
| Builds or updates a BLAS. | |
| void | BuildTLAS (const xiiGALBuildTLASDescription &description) |
| Builds or updates a TLAS. | |
| void | CopyBLAS (const xiiGALCopyBLASDescription &description) |
| Copies a BLAS (clone or compact). | |
| void | CopyTLAS (const xiiGALCopyTLASDescription &description) |
| Copies a TLAS (clone or compact). | |
| void | WriteBLASCompactedSize (const xiiGALWriteBLASCompactedSizeDescription &description) |
| Writes BLAS compacted size into a destination buffer. | |
| void | WriteTLASCompactedSize (const xiiGALWriteTLASCompactedSizeDescription &description) |
| Writes TLAS compacted size into a destination buffer. | |
| void | BeginQuery (xiiGALQuery *pQuery) |
| void | EndQuery (xiiGALQuery *pQuery) |
| void | UpdateBuffer (xiiGALBuffer *pBuffer, xiiUInt32 uiDestinationOffset, xiiArrayPtr< const xiiUInt8 > pSourceData) |
| void | UpdateTLASInstanceBuffer (xiiGALBuffer *pBuffer, xiiUInt32 uiDestinationOffset, xiiArrayPtr< const xiiGALTLASInstanceData > pInstances) |
| void | CopyBuffer (xiiGALBuffer *pSourceBuffer, xiiGALBuffer *pDestinationBuffer) |
| void | CopyBufferRegion (xiiGALBuffer *pSourceBuffer, xiiUInt64 uiSourceOffset, xiiGALBuffer *pDestinationBuffer, xiiUInt64 uiDestinationOffset, xiiUInt64 uiSize) |
| xiiResult | MapBuffer (xiiGALBuffer *pBuffer, xiiEnum< xiiGALMapType > mapType, xiiBitflags< xiiGALMapFlags > mapFlags, void *&pMappedData) |
| xiiResult | UnmapBuffer (xiiGALBuffer *pBuffer, xiiEnum< xiiGALMapType > mapType) |
| void | UpdateTexture (xiiGALTexture *pTexture, const xiiGALTextureMipLevelData &textureMiplevelData, const xiiBoundingBoxU32 &textureBox, const xiiGALTextureSubResourceData &subresourceData) |
| void | CopyTexture (xiiGALTexture *pSourceTexture, xiiGALTexture *pDestinationTexture) |
| void | CopyTextureRegion (xiiGALTexture *pSourceTexture, const xiiGALTextureMipLevelData &sourceMipLevelData, const xiiBoundingBoxU32 &box, xiiGALTexture *pDestinationTexture, const xiiGALTextureMipLevelData &destinationMipLevelData, const xiiVec3U32 &vDestinationPoint) |
| void | ResolveTextureSubResource (xiiGALTexture *pSourceTexture, xiiGALTexture *pDestinationTexture, const xiiGALResolveTextureSubresourceDescription &description) |
| void | GenerateMips (xiiGALTextureView *pTextureView) |
| xiiResult | MapTextureSubresource (xiiGALTexture *pTexture, xiiGALTextureMipLevelData textureMipLevelData, xiiEnum< xiiGALMapType > mapType, xiiBitflags< xiiGALMapFlags > mapFlags, xiiBoundingBoxU32 *pTextureBox, xiiGALMappedTextureSubresource &mappedData) |
| xiiResult | UnmapTextureSubresource (xiiGALTexture *pTexture, xiiGALTextureMipLevelData textureMipLevelData) |
| void | SetShadingRate (xiiBitflags< xiiGALShadingRateFlags > baseRateFlags, xiiBitflags< xiiGALShadingRateCombinerFlags > primitiveCombinerFlags, xiiBitflags< xiiGALShadingRateCombinerFlags > textureCombinerFlags) |
| void | TransitionResourceStates (xiiArrayPtr< xiiGALStateTransitionDescription > pResourceBarriers) |
| void | EnqueueSignal (xiiGALFence *pFence, xiiUInt64 uiValue) |
| void | DeviceWaitForFence (xiiGALFence *pFence, xiiUInt64 uiValue) |
| void | BeginDebugGroup (xiiStringView sName, const xiiColor &color=xiiColor::White) |
| void | EndDebugGroup () |
| Ends the current debug group. | |
| void | InsertDebugLabel (xiiStringView sName, const xiiColor &color=xiiColor::White) |
| 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. | |
| Public Member Functions inherited from xiiGALDeviceObject | |
| XII_ALWAYS_INLINE xiiSharedPtr< xiiGALDevice > | GetDevice () const |
| Public Member Functions inherited from xiiGALObject | |
| 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. | |
| Public Member Functions inherited from xiiReflectedClass | |
| 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. | |
| Public Member Functions inherited from xiiRefCounted | |
| virtual | ~xiiRefCounted ()=default |
| Adds a virtual destructor. | |
| Public Member Functions inherited from xiiRefCountingImpl | |
| xiiRefCountingImpl ()=default | |
| Constructor. | |
| xiiRefCountingImpl (const xiiRefCountingImpl &rhs) | |
| void | operator= (const xiiRefCountingImpl &rhs) |
| xiiUInt32 | AddRef () const |
| Increments the reference counter. Returns the new reference count. | |
| bool | TryAddRef () const |
| xiiUInt32 | ReleaseRef () const |
| Decrements the reference counter. Returns the new reference count.ywat. | |
| 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, const xiiGALCommandListCreationDescription &creationDescription) | |
| virtual xiiResult | InitPlatform ()=0 |
| void | ValidateTextureRegion (const xiiGALTextureCreationDescription &textureDescription, xiiUInt32 uiMipLevel, xiiUInt32 uiSlice, const xiiBoundingBoxU32 &box) const |
| void | ValidateTextureUpdateRegion (const xiiGALTextureCreationDescription &textureDescription, xiiUInt32 uiMipLevel, xiiUInt32 uiSlice, const xiiBoundingBoxU32 &destinationBox, const xiiGALTextureSubResourceData &subresourceData) const |
| bool | VerifyResourceState (xiiBitflags< xiiGALResourceStateFlags > stateFlags, xiiBitflags< xiiGALCommandQueueFlags > queueFlags, const char *szParameterName) const |
| bool | VerifyResourceStates (xiiBitflags< xiiGALResourceStateFlags > stateFlags, bool bIsTexture) const |
| void | VerifyBufferState (const xiiGALBuffer *pBuffer, xiiBitflags< xiiGALResourceStateFlags > requiredState, const char *szOperationName) const |
| void | VerifyTextureState (const xiiGALTexture *pTexture, xiiBitflags< xiiGALResourceStateFlags > requiredState, const char *szOperationName) const |
| void | VerifyBottomLevelASState (const xiiGALBottomLevelAS *pBottomLevelAS, xiiBitflags< xiiGALResourceStateFlags > requiredState, const char *szOperationName) const |
| void | VerifyTopLevelASState (const xiiGALTopLevelAS *pTopLevelAS, xiiBitflags< xiiGALResourceStateFlags > requiredState, const char *szOperationName) const |
| Protected Member Functions inherited from xiiGALDeviceObject | |
| xiiGALDeviceObject (xiiSharedPtr< xiiGALDevice > pDevice) | |
| Copyright (c) Theophilus Eriata. All Rights Reserved. | |
| Protected Member Functions inherited from xiiGALObject | |
| xiiGALObject () | |
| Copyright (c) Theophilus Eriata. All Rights Reserved. | |
| virtual XII_ALWAYS_INLINE void | SetDebugNamePlatform (xiiStringView sName) const |
Protected Attributes | |
| xiiGALCommandListCreationDescription | m_Description |
| RecordingState | m_RecordingState = RecordingState::Reset |
| const bool | m_bNativeMultiDrawSupported |
| xiiGALPipelineState * | m_pPipelineState = nullptr |
| xiiGALPipelineResourceSignature * | m_pPipelineResourceSignature = nullptr |
| xiiStaticArray< xiiUInt8, 256U > | m_PushConstantStaging |
| xiiHybridArray< VertexStreamDescription, 2U > | m_VertexStreams |
| xiiGALBuffer * | m_pIndexBuffer = nullptr |
| xiiUInt64 | m_uiIndexDataOffset = 0ULL |
| xiiGALRenderPass * | m_pRenderPass = nullptr |
| xiiGALFramebuffer * | m_pFramebuffer = nullptr |
| xiiColor | m_BlendFactors = xiiColor::Black |
| xiiUInt32 | m_uiStencilRef = 0U |
| xiiHybridArray< xiiGALViewport, 2U > | m_Viewports |
| xiiHybridArray< xiiRectU32, 2U > | m_ScissorRects |
| Protected Attributes inherited from xiiGALDeviceObject | |
| xiiSharedPtr< xiiGALDevice > | m_pDevice |
Static Protected Attributes | |
| static constexpr xiiUInt32 | s_uiDrawMeshIndirectCommandStride = sizeof(xiiUInt32) * 3 |
Friends | |
| class | xiiGALDevice |
| class | xiiMemoryUtils |
Additional Inherited Members | |
| Static Public Member Functions inherited from xiiNoBase | |
| static const xiiRTTI * | GetStaticRTTI () |
Interface that defines methods to manipulate a command list object.
|
strong |
| void xiiGALCommandList::Begin | ( | ) |
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::White ) |
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 | ( | 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 | ( | 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 | ( | 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 | ( | xiiGALBuffer * | pSourceBuffer, |
| 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 | ( | xiiGALBuffer * | pSourceBuffer, |
| xiiUInt64 | uiSourceOffset, | ||
| 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 | ( | xiiGALTexture * | pSourceTexture, |
| 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 | ( | xiiGALTexture * | pSourceTexture, |
| const xiiGALTextureMipLevelData & | sourceMipLevelData, | ||
| const xiiBoundingBoxU32 & | box, | ||
| 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 | ( | 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. |
| void xiiGALCommandList::End | ( | ) |
Ends the command list. This method should be called after all commands are issued.
| void xiiGALCommandList::EndQuery | ( | xiiGALQuery * | pQuery | ) |
Ends a query.
| pQuery | - The handle to the query object. |
| void xiiGALCommandList::EnqueueSignal | ( | 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 | ( | 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::White ) |
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 | ( | 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 | ( | 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. |
| void xiiGALCommandList::PushConstants | ( | xiiUInt32 | uiOffset, |
| xiiArrayPtr< xiiUInt8 > | pData ) |
Writes push constant data to the command list.
| uiOffset | - Byte offset into the push constant block. |
| pData | - Pointer to the source data. |
| void xiiGALCommandList::Reset | ( | ) |
Resets the command list. This method is used to clear all commands that have been recorded in the command list.
| void xiiGALCommandList::ResolveAndSetAccelerationStructure | ( | const xiiTempHashedString & | sResourceName, |
| xiiGALTopLevelAS * | pTopLevelAS, | ||
| xiiBitflags< xiiGALShaderType > | shaderStages = xiiGALShaderType::Unknown ) |
Resolves and sets a top-level acceleration structure 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. |
| pTopLevelAS | - Shared pointer to the top-level acceleration structure to set. |
| shaderStages | - Bitflags specifying applicable shader stages (defaults to unknown). |
| void xiiGALCommandList::ResolveAndSetConstantBuffer | ( | const xiiTempHashedString & | sResourceName, |
| 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, |
| 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, |
| 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, |
| 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, |
| 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, |
| 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 | ( | xiiGALTexture * | pSourceTexture, |
| 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::SetAccelerationStructure | ( | const xiiGALPipelineResourceDescription & | bindingInformation, |
| xiiGALTopLevelAS * | pTopLevelAS ) |
Binds a top-level acceleration structure to a shader resource slot.
| bindingInformation | - Resource binding metadata from pipeline resource signature. |
| pTopLevelAS | - The top-level acceleration structure to bind. |
| 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, |
| 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 | ( | 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 | ( | 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, |
| 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, |
| 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, |
| 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::SetShadingRate | ( | xiiBitflags< xiiGALShadingRateFlags > | baseRateFlags, |
| xiiBitflags< xiiGALShadingRateCombinerFlags > | primitiveCombinerFlags, | ||
| xiiBitflags< xiiGALShadingRateCombinerFlags > | textureCombinerFlags ) |
Sets the fragment shading rate for subsequent draw calls.
Configures the base shading rate and combiner logic used to resolve per-primitive and screen-space (texture-based) shading rates. This allows dynamic control over rendering performance and visual fidelity by adjusting the number of pixels shaded per fragment.
| baseRateFlags | - The default shading rate to apply if no overrides are present (e.g., 1x1, 2x2). |
| primitiveCombinerFlags | - The combiner logic used when both base and primitive rates are specified. |
| textureCombinerFlags | - The combiner logic used when both primitive and texture rates are applied. |
| 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, |
| 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, |
| 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< 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. |
| 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 | ( | 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 | ( | 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 | ( | 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 | ( | 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. |
| void xiiGALCommandList::UpdateTLASInstanceBuffer | ( | xiiGALBuffer * | pBuffer, |
| xiiUInt32 | uiDestinationOffset, | ||
| xiiArrayPtr< const xiiGALTLASInstanceData > | pInstances ) |
Converts portable TLAS instance records to the native backend representation and uploads them to an instance buffer.
| pBuffer | - The ray tracing instance buffer to update. |
| uiDestinationOffset | - Byte offset into the instance buffer. Must satisfy the device instance-buffer alignment. |
| pInstances | - Portable TLAS instance records to encode and upload. |