XII Release 0.1.0
Loading...
Searching...
No Matches
xiiGALCommandList Class Referenceabstract

Interface that defines methods to manipulate a command list object. More...

#include <CommandList.h>

Inheritance diagram for xiiGALCommandList:
[legend]

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 ()

Detailed Description

Interface that defines methods to manipulate a command list object.

Member Enumeration Documentation

◆ RecordingState

enum class xiiGALCommandList::RecordingState : xiiUInt8
strong

Enum class representing the state of a command list recording.

Enumerator
Reset 

The command list has been reset and is ready to be recorded again.

Recording 

The command list is currently being recorded.

Ended 

The recording of the command list has ended.

Member Function Documentation

◆ Begin()

void xiiGALCommandList::Begin ( )

Begins the command list for recording commands. This method should be called before any command is issued.

Remarks
This method is called automatically when using xiiGALCommandQueue::BeginCommandList to request a command list.

◆ BeginDebugGroup()

void xiiGALCommandList::BeginDebugGroup ( xiiStringView sName,
const xiiColor & color = xiiColor::White )

Begins a new debug group with a specified name and color.

Parameters
sName- The name of the debug group.
color- The color associated with the debug group.

◆ BeginQuery()

void xiiGALCommandList::BeginQuery ( xiiGALQuery * pQuery)

Begins a query.

Parameters
pQuery- The handle to the query object.

◆ BeginRenderPass()

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.

Parameters
beginRenderPass- The description of the render pass. See xiiGALBeginRenderPassDescription for more information.

◆ ClearDepthStencilView()

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.

Parameters
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.

◆ ClearRenderTargetView()

void xiiGALCommandList::ClearRenderTargetView ( xiiGALTextureView * pRenderTargetView,
const xiiColor & clearColor )

This clears the specified render target view to the specified color.

Parameters
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.

◆ CommitShaderResources()

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.

Parameters
mode- The state transition mode. The default is xiiGALStateTransitionMode::Transition.

◆ CopyBuffer()

void xiiGALCommandList::CopyBuffer ( xiiGALBuffer * pSourceBuffer,
xiiGALBuffer * pDestinationBuffer )

Copies the entire contents of the source buffer to the destination buffer.

Parameters
pSourceBuffer- The handle to the source buffer object.
pDestinationBuffer- The handle to the destination buffer object.

◆ CopyBufferRegion()

void xiiGALCommandList::CopyBufferRegion ( xiiGALBuffer * pSourceBuffer,
xiiUInt64 uiSourceOffset,
xiiGALBuffer * pDestinationBuffer,
xiiUInt64 uiDestinationOffset,
xiiUInt64 uiSize )

Copies a region from the source buffer to the destination buffer.

Parameters
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.

◆ CopyTexture()

void xiiGALCommandList::CopyTexture ( xiiGALTexture * pSourceTexture,
xiiGALTexture * pDestinationTexture )

Copies the entire contents of the source texture to the destination texture.

Parameters
pSourceTexture- The handle to the source texture object.
pDestinationTexture- The handle to the destination texture object.

◆ CopyTextureRegion()

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.

Parameters
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.

◆ DeviceWaitForFence()

void xiiGALCommandList::DeviceWaitForFence ( xiiGALFence * pFence,
xiiUInt64 uiValue )

Waits until the specified fence reaches or exceeds the specified value, on the device.

Parameters
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.
Note
If NativeFence feature is not enabled (see xiiGALDeviceFeatures), then uiValue must be less than or equal to the last signalled or pending value. uiValue becomes pending when the command list is submitted. Waiting for a value that is greater than any pending value will cause a deadlock.
If NativeFence feature is enabled (see xiiGALDeviceFeatures), then waiting for a value that is greater than any pending value will cause a GPU stall.

◆ DispatchCompute()

void xiiGALCommandList::DispatchCompute ( const xiiGALDispatchComputeDescription & description)

Dispatches a compute workload using the specified thread group dimensions.

Synchronously encodes compute workload dimensions per axis.

Parameters
description- Thread group count and Metal overrides (if any).
See also
xiiGALDispatchComputeDescription

◆ DispatchComputeIndirect()

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.

Parameters
description- Buffer containing dispatch dimensions and optional Metal overrides.
See also
xiiGALDispatchComputeIndirectDescription

◆ Draw()

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.

Parameters
description- Vertex and instance counts, and vertex offsets.
See also
xiiGALDrawDescription

◆ DrawIndexed()

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.

Parameters
description- Index type, counts, and offset information.
See also
xiiGALDrawIndexedDescription

◆ DrawIndexedIndirect()

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.

Parameters
description- Index type, buffer handles, offsets, and draw count.
See also
xiiGALDrawIndexedIndirectDescription

◆ DrawIndirect()

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.

Parameters
description- Buffer handles, offsets, draw count, and flags.
See also
xiiGALDrawIndirectDescription

◆ DrawMesh()

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.

Parameters
description- Thread group dimensions and flags.
See also
xiiGALDrawMeshDescription

◆ DrawMeshIndirect()

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.

Parameters
description- Buffer handles, offsets, draw count, and flags.
See also
xiiGALDrawMeshIndirectDescription

◆ End()

void xiiGALCommandList::End ( )

Ends the command list. This method should be called after all commands are issued.

Remarks
This method is called automatically when using xiiGALCommandQueue::Submit execute a command list.

◆ EndQuery()

void xiiGALCommandList::EndQuery ( xiiGALQuery * pQuery)

Ends a query.

Parameters
pQuery- The handle to the query object.

◆ EnqueueSignal()

void xiiGALCommandList::EnqueueSignal ( xiiGALFence * pFence,
xiiUInt64 uiValue )

Tells the GPU to set a fence to a specified value after all previous work has completed.

Parameters
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.
Note
The fence will be signalled when the command list is submitted. If an application needs to wait for the fence in a loop, it must submit the command list after signalling the fence.

◆ GenerateMips()

void xiiGALCommandList::GenerateMips ( xiiGALTextureView * pTextureView)

Generates mipmap levels for a texture.

Parameters
pTextureView- The handle to the texture view object. The texture view must be of type xiiGALTextureViewType::ShaderResource.
Remarks
This method must only be called on a shader resource view. The texture must be created with xiiGALMiscTextureFlags::GenerateMips.

◆ InsertDebugLabel()

void xiiGALCommandList::InsertDebugLabel ( xiiStringView sName,
const xiiColor & color = xiiColor::White )

Inserts a debug label into the command list.

Parameters
sName- The name of the debug label.
color- The color associated with the debug label.

◆ MapBuffer()

xiiResult xiiGALCommandList::MapBuffer ( xiiGALBuffer * pBuffer,
xiiEnum< xiiGALMapType > mapType,
xiiBitflags< xiiGALMapFlags > mapFlags,
void *& pMappedData )

Maps a buffer into the CPU's address space.

Parameters
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.

◆ MapTextureSubresource()

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.

Parameters
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.

◆ MultiDraw()

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.

Parameters
description- Array of draw items and instance parameters.
See also
xiiGALMultiDrawDescription

◆ MultiDrawIndexed()

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.

Parameters
description- Array of indexed draw items and instance parameters.
See also
xiiGALMultiDrawIndexedDescription

◆ PushConstants()

void xiiGALCommandList::PushConstants ( xiiUInt32 uiOffset,
xiiArrayPtr< xiiUInt8 > pData )

Writes push constant data to the command list.

Parameters
uiOffset- Byte offset into the push constant block.
pData- Pointer to the source data.

◆ Reset()

void xiiGALCommandList::Reset ( )

Resets the command list. This method is used to clear all commands that have been recorded in the command list.

Remarks
This method can be called only if the command list has not yet been submitted for execution.

◆ ResolveAndSetAccelerationStructure()

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.

Parameters
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).

◆ ResolveAndSetConstantBuffer()

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.

Parameters
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).

◆ ResolveAndSetSampler()

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.

Parameters
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).

◆ ResolveAndSetShaderResourceBufferView()

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.

Parameters
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).

◆ ResolveAndSetShaderResourceTextureView()

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.

Parameters
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).

◆ ResolveAndSetUnorderedAccessBufferView()

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.

Parameters
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).

◆ ResolveAndSetUnorderedAccessTextureView()

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.

Parameters
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).

◆ ResolveTextureSubResource()

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.

Parameters
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.

◆ SetAccelerationStructure()

void xiiGALCommandList::SetAccelerationStructure ( const xiiGALPipelineResourceDescription & bindingInformation,
xiiGALTopLevelAS * pTopLevelAS )

Binds a top-level acceleration structure to a shader resource slot.

Parameters
bindingInformation- Resource binding metadata from pipeline resource signature.
pTopLevelAS- The top-level acceleration structure to bind.

◆ SetBlendFactor()

void xiiGALCommandList::SetBlendFactor ( const xiiColor & blendFactor)

Sets the blend factors used in the blend state.

Parameters
blendFactor- The blend factors represented by a xiiColor.

◆ SetConstantBuffer()

void xiiGALCommandList::SetConstantBuffer ( const xiiGALPipelineResourceDescription & bindingInformation,
xiiGALBuffer * pConstantBuffer )

This is used to set the constant (uniform) buffer for a shader resource.

Parameters
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.

◆ SetIndexBuffer()

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.

Parameters
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.

◆ SetPipelineState()

void xiiGALCommandList::SetPipelineState ( xiiGALPipelineState * pPipelineState)

Sets the pipeline state object for the command list.

Parameters
pPipelineState- The handle to the pipeline state object.

◆ SetSampler()

void xiiGALCommandList::SetSampler ( const xiiGALPipelineResourceDescription & bindingInformation,
xiiGALSampler * pSampler )

This is used to set the sampler for a sampler resource.

Parameters
bindingInformation- This describes the binding information for the sampler resource, see xiiGALPipelineResourceDescription for details.
pSampler- The handle to the sampler object to set.

◆ SetScissorRect()

XII_ALWAYS_INLINE void xiiGALCommandList::SetScissorRect ( const xiiRectU32 & rect)
inline

Sets a single scissor rectangle for the rasterizer stage. This simplifies the process when only one scissor rectangle is needed.

Parameters
rect- The rectangle describing the area to bind.

◆ SetScissorRects()

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.

Parameters
pRects- The array of rectangle structures, describing the scissor rectangles to bind.

◆ SetShaderResourceBufferView()

void xiiGALCommandList::SetShaderResourceBufferView ( const xiiGALPipelineResourceDescription & bindingInformation,
xiiGALBufferView * pBufferView )

This is used to set the buffer view for a shader resource.

Parameters
bindingInformation- This describes the binding information for the shader resource, see xiiGALPipelineResourceDescription for details.
pBufferView- The handle to the buffer view object to set.

◆ SetShaderResourceTextureView()

void xiiGALCommandList::SetShaderResourceTextureView ( const xiiGALPipelineResourceDescription & bindingInformation,
xiiGALTextureView * pTextureView )

This is used to set the texture view for a shader resource.

Parameters
bindingInformation- This describes the binding information for the shader resource, see xiiGALPipelineResourceDescription for details.
pTextureView- The handle to the texture view object to set.

◆ SetShadingRate()

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.

Parameters
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.
Note
Requires graphics backend support for Variable Rate Shading (VRS), see xiiGALDeviceFeatures.
See also
xiiGALShadingRateFlags, xiiGALShadingRateCombinerFlags

◆ SetStencilRef()

void xiiGALCommandList::SetStencilRef ( xiiUInt32 uiStencilRef)

Sets the stencil reference value used in the stencil test.

Parameters
uiStencilRef- Stencil reference value.

◆ SetUnorderedAccessBufferView()

void xiiGALCommandList::SetUnorderedAccessBufferView ( const xiiGALPipelineResourceDescription & bindingInformation,
xiiGALBufferView * pBufferView )

This is used to set the buffer view for an unordered access.

Parameters
bindingInformation- This describes the binding information for the shader resource, see xiiGALPipelineResourceDescription for details.
pBufferView- The handle to the buffer view object to set.

◆ SetUnorderedAccessTextureView()

void xiiGALCommandList::SetUnorderedAccessTextureView ( const xiiGALPipelineResourceDescription & bindingInformation,
xiiGALTextureView * pTextureView )

This is used to set the texture view for an unordered access.

Parameters
bindingInformation- This describes the binding information for the shader resource, see xiiGALPipelineResourceDescription for details.
pTextureView- The handle to the texture view object to set.

◆ SetVertexBuffers()

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.

Parameters
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.

◆ SetViewport()

XII_ALWAYS_INLINE void xiiGALCommandList::SetViewport ( const xiiGALViewport & viewport)
inline

Sets a single viewport for the rasterizer stage. This simplifies the process when only one viewport is needed.

Parameters
viewport- The viewport structure describing the area to bind.

◆ SetViewports()

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.

Parameters
pViewports- The array of viewports structures, describing the viewports to bind.

◆ TransitionResourceStates()

void xiiGALCommandList::TransitionResourceStates ( xiiArrayPtr< xiiGALStateTransitionDescription > pResourceBarriers)

Transitions the resource states.

Parameters
pResourceBarriers- Pointer to the array of resource barriers.
Remarks
When both old and new states are xiiGALResourceState::UnorderedAccess, the GAL executes UAV barrier on the resource. The barrier makes sure that all UAV accesses (reads or writes) are complete before any future UAV accesses (read or write) can begin.
     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.
Note
Resource states for shader access (e.g. xiiGALResourceState::ConstantBuffer, xiiGALResourceState::UnorderedAccess, xiiGALResourceState::ShaderResource) may map to different native state depending on what command queue type is used (see xiiGALCommandListCreationDescription). To synchronize write access in compute shader in a compute queue with a pixel shader read in graphics queue, an application should call TransitionResourceStates() in graphics queue. Using TransitionResourceStates() with NewState = xiiGALResourceState::ShaderResource will not invalidate cache in graphics shaders and may cause undefined behaviour.

◆ UnmapBuffer()

xiiResult xiiGALCommandList::UnmapBuffer ( xiiGALBuffer * pBuffer,
xiiEnum< xiiGALMapType > mapType )

Unmaps a buffer from the CPU's address space.

Parameters
pBuffer- The handle to the buffer object.
mapType- Specifies the CPU's access pattern for the map operation. See xiiGALMapType for details.

◆ UnmapTextureSubresource()

xiiResult xiiGALCommandList::UnmapTextureSubresource ( xiiGALTexture * pTexture,
xiiGALTextureMipLevelData textureMipLevelData )

Unmaps a texture subresource from the address space of the command list.

Parameters
pTexture- The handle to the texture object.
textureMipLevelData- Specifies the subresource to unmap.

◆ UpdateBuffer()

void xiiGALCommandList::UpdateBuffer ( xiiGALBuffer * pBuffer,
xiiUInt32 uiDestinationOffset,
xiiArrayPtr< const xiiUInt8 > pSourceData )

Updates a buffer.

Parameters
pBuffer- The handle to the buffer object.
uiDestinationOffset- Byte offset into the buffer where the update should start.
pSourceData- Pointer to the source data.

◆ UpdateTexture()

void xiiGALCommandList::UpdateTexture ( xiiGALTexture * pTexture,
const xiiGALTextureMipLevelData & textureMiplevelData,
const xiiBoundingBoxU32 & textureBox,
const xiiGALTextureSubResourceData & subresourceData )

Updates a texture.

Parameters
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.

◆ UpdateTLASInstanceBuffer()

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.

Parameters
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.

The documentation for this class was generated from the following files:
  • /home/runner/work/XII/XII/Source/Engine/GraphicsFoundation/CommandEncoder/CommandList.h
  • /home/runner/work/XII/XII/Source/Engine/GraphicsFoundation/CommandEncoder/Implementation/CommandList.cpp