UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FMetalRHICommandContext Class Reference

#include <MetalRHIContext.h>

+ Inheritance diagram for FMetalRHICommandContext:

Public Types

enum class  EPhase { Wait , Execute , Signal }
 

Public Member Functions

 FMetalRHICommandContext (FMetalDevice &Device, class FMetalProfiler *InProfiler)
 
virtual ~FMetalRHICommandContext ()
 
void ResetContext ()
 
void BeginComputeEncoder ()
 
void EndComputeEncoder ()
 
void BeginBlitEncoder ()
 
void EndBlitEncoder ()
 
class FMetalProfilerGetProfiler () const
 
virtual void RHISetComputePipelineState (FRHIComputePipelineState *ComputePipelineState) override
 
virtual void RHIDispatchComputeShader (uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ) final override
 
virtual void RHIDispatchIndirectComputeShader (FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
 
virtual void RHISetMultipleViewports (uint32 Count, const FViewportBounds *Data) final override
 
virtual void RHIClearUAVFloat (FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FVector4f &Values) final override
 
virtual void RHIClearUAVUint (FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FUintVector4 &Values) final override
 
virtual void RHICopyTexture (FRHITexture *SourceTextureRHI, FRHITexture *DestTextureRHI, const FRHICopyTextureInfo &CopyInfo) final override
 
virtual void RHICopyBufferRegion (FRHIBuffer *DstBufferRHI, uint64 DstOffset, FRHIBuffer *SrcBufferRHI, uint64 SrcOffset, uint64 NumBytes) final override
 
virtual void RHICalibrateTimers (FRHITimestampCalibrationQuery *CalibrationQuery) final override
 
virtual void RHIBeginRenderQuery (FRHIRenderQuery *RenderQuery) final override
 
virtual void RHIEndRenderQuery (FRHIRenderQuery *RenderQuery) final override
 
virtual void RHIEndDrawingViewport (FRHIViewport *Viewport, bool bPresent, bool bLockToVsync) override
 
virtual void RHISetStreamSource (uint32 StreamIndex, FRHIBuffer *VertexBuffer, uint32 Offset) final override
 
virtual void RHISetViewport (float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ) final override
 
virtual void RHISetStereoViewport (float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ) final override
 
virtual void RHISetScissorRect (bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY) final override
 
virtual void RHISetGraphicsPipelineState (FRHIGraphicsPipelineState *GraphicsState, uint32 StencilRef, bool bApplyAdditionalState) final override
 
virtual void RHISetStaticUniformBuffers (const FUniformBufferStaticBindings &InUniformBuffers) final override
 
virtual void RHISetStaticUniformBuffer (FUniformBufferStaticSlot Slot, FRHIUniformBuffer *Buffer) final override
 
virtual void RHISetShaderParameters (FRHIGraphicsShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
 
virtual void RHISetShaderParameters (FRHIComputeShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters) final override
 
virtual void RHISetStencilRef (uint32 StencilRef) final override
 
virtual void RHISetBlendFactor (const FLinearColor &BlendFactor) final override
 
void SetRenderTargets (uint32 NumSimultaneousRenderTargets, const FRHIRenderTargetView *NewRenderTargets, const FRHIDepthRenderTargetView *NewDepthStencilTarget)
 
void SetRenderTargetsAndClear (const FRHISetRenderTargetsInfo &RenderTargetsInfo)
 
virtual void RHIDrawPrimitive (uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances) final override
 
virtual void RHIDrawPrimitiveIndirect (FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
 
virtual void RHIDrawIndexedIndirect (FRHIBuffer *IndexBufferRHI, FRHIBuffer *ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances) final override
 
virtual void RHIDrawIndexedPrimitive (FRHIBuffer *IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances) final override
 
virtual void RHIDrawIndexedPrimitiveIndirect (FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset) final override
 
virtual void RHISetDepthBounds (float MinDepth, float MaxDepth) final override
 
virtual void RHICopyToStagingBuffer (FRHIBuffer *SourceBufferRHI, FRHIStagingBuffer *DestinationStagingBufferRHI, uint32 Offset, uint32 NumBytes) final override
 
virtual void RHIWriteGPUFence (FRHIGPUFence *FenceRHI) final override
 
virtual void RHIBeginTransitions (TArrayView< const FRHITransition * > Transitions)
 
virtual void RHIEndTransitions (TArrayView< const FRHITransition * > Transitions)
 
virtual void RHIBeginParallelRenderPass (TSharedPtr< FRHIParallelRenderPassInfo > InInfo, const TCHAR *InName) final override
 
virtual void RHIEndParallelRenderPass () final override
 
virtual void RHIBeginRenderPass (const FRHIRenderPassInfo &InInfo, const TCHAR *InName) final override
 
virtual void RHIEndRenderPass () final override
 
virtual void RHINextSubpass () final override
 
void FillBuffer (MTL::Buffer *Buffer, NS::Range Range, uint8 Value)
 
void CopyFromTextureToBuffer (MTL::Texture *Texture, uint32 sourceSlice, uint32 sourceLevel, MTL::Origin sourceOrigin, MTL::Size sourceSize, FMetalBufferPtr toBuffer, uint32 destinationOffset, uint32 destinationBytesPerRow, uint32 destinationBytesPerImage, MTL::BlitOption options)
 
void CopyFromBufferToTexture (FMetalBufferPtr Buffer, uint32 sourceOffset, uint32 sourceBytesPerRow, uint32 sourceBytesPerImage, MTL::Size sourceSize, MTL::Texture *toTexture, uint32 destinationSlice, uint32 destinationLevel, MTL::Origin destinationOrigin, MTL::BlitOption options)
 
void CopyFromTextureToTexture (MTL::Texture *Texture, uint32 sourceSlice, uint32 sourceLevel, MTL::Origin sourceOrigin, MTL::Size sourceSize, MTL::Texture *toTexture, uint32 destinationSlice, uint32 destinationLevel, MTL::Origin destinationOrigin)
 
void CopyFromBufferToBuffer (FMetalBufferPtr SourceBuffer, NS::UInteger SourceOffset, FMetalBufferPtr DestinationBuffer, NS::UInteger DestinationOffset, NS::UInteger Size)
 
void CommitRenderResourceTables (void)
 
void PrepareToRender (uint32 PrimitiveType)
 
bool PrepareToDraw (uint32 PrimitiveType)
 
void PrepareToDispatch ()
 
void SetupParallelContext (const FRHIParallelRenderPassInfo *ParallelRenderPassInfo)
 
void Finalize (TArray< FMetalPayload * > &OutPayloads)
 
void PushDescriptorUpdates ()
 
void InsertComputeMemoryBarrier ()
 
FMetalPayloadGetPayload (EPhase Phase)
 
void NewPayload ()
 
FMetalSyncPointGetContextSyncPoint ()
 
void SignalSyncPoint (FMetalSyncPoint *SyncPoint)
 
void WaitSyncPoint (FMetalSyncPoint *SyncPoint)
 
void StartTiming (class FMetalEventNode *EventNode)
 
void EndTiming (class FMetalEventNode *EventNode)
 
void SynchronizeResource (MTL::Resource *Resource)
 
void SynchronizeTexture (MTL::Texture *Texture, uint32 Slice, uint32 Level)
 
void SignalEvent (MTLEventPtr Event, uint32_t SignalCount)
 
void WaitForEvent (MTLEventPtr Event, uint32_t SignalCount)
 
void SetCustomPresentViewport (FRHIViewport *Viewport)
 
FMetalCommandBufferGetCurrentCommandBuffer ()
 
void BeginRecursiveCommand ()
 
const TArray< FRHIUniformBuffer * > & GetStaticUniformBuffers () const
 
void SetProfiler (FMetalProfiler *InProfiler)
 
FMetalProfilerGetProfiler ()
 
TSharedRef< FMetalQueryBufferPool, ESPMode::ThreadSafeGetQueryBufferPool ()
 
FMetalStateCacheGetStateCache ()
 
FMetalCommandQueueGetCommandQueue ()
 
FMetalDeviceGetDevice ()
 
bool IsInsideRenderPass () const
 
void StartCommandBuffer ()
 
void EndCommandBuffer ()
 
void FlushCommands (EMetalFlushFlags Flags)
 
- Public Member Functions inherited from IRHICommandContext
virtual ~IRHICommandContext ()
 
virtual ERHIPipeline GetPipeline () const override
 
virtual void RHIResummarizeHTile (FRHITexture *DepthTexture)
 
void RHISetBatchedShaderParameters (FRHIGraphicsShader *InShader, FRHIBatchedShaderParameters &InBatchedParameters)
 
virtual void RHISetShaderUnbinds (FRHIGraphicsShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds)
 
virtual void RHIMultiDrawIndexedPrimitiveIndirect (FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset, FRHIBuffer *CountBuffer, uint32 CountBuffeOffset, uint32 MaxDrawArguments)
 
virtual void RHIDispatchMeshShader (uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ)
 
virtual void RHIDispatchIndirectMeshShader (FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)
 
virtual void RHIGpuHangCommandListCorruption ()
 
virtual void RHISetShadingRate (EVRSShadingRate ShadingRate, EVRSRateCombiner Combiner)
 
virtual void RHIClearShaderBindingTable (FRHIShaderBindingTable *SBT)
 
virtual void RHISetBindingsOnShaderBindingTable (FRHIShaderBindingTable *SBT, FRHIRayTracingPipelineState *Pipeline, uint32 NumBindings, const FRayTracingLocalShaderBindings *Bindings, ERayTracingBindingType BindingType)
 
virtual void RHICommitShaderBindingTable (FRHIShaderBindingTable *SBT, FRHIBuffer *InlineBindingDataBuffer)
 
virtual void RHISetShaderParameters (FRHIComputeShader *ComputeShader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters)=0
 
void RHISetBatchedShaderParameters (FRHIComputeShader *InShader, FRHIBatchedShaderParameters &InBatchedParameters)
 
virtual void RHISetShaderUnbinds (FRHIComputeShader *ComputeShader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds)
 
- Public Member Functions inherited from IRHIComputeContext
virtual ~IRHIComputeContext ()
 
virtual void RHIRayTraceDispatch (FRHIRayTracingPipelineState *RayTracingPipelineState, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, uint32 Width, uint32 Height)
 
virtual void RHIRayTraceDispatchIndirect (FRHIRayTracingPipelineState *RayTracingPipelineState, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)
 
virtual void RHISetAsyncComputeBudget (EAsyncComputeBudget Budget)
 
virtual void RHISetComputeBudget (ESyncComputeBudget Budget)
 
virtual void RHISetShaderRootConstants (const FUint32Vector4 &Constants)
 
virtual void RHIDispatchComputeShaderBundle (FRHIShaderBundle *ShaderBundle, FRHIBuffer *RecordArgBuffer, TConstArrayView< FRHIShaderParameterResource > SharedBindlessParameters, TConstArrayView< FRHIShaderBundleComputeDispatch > Dispatches, bool bEmulated)
 
virtual void RHIDispatchGraphicsShaderBundle (FRHIShaderBundle *ShaderBundle, FRHIBuffer *RecordArgBuffer, const FRHIShaderBundleGraphicsState &BundleState, TConstArrayView< FRHIShaderParameterResource > SharedBindlessParameters, TConstArrayView< FRHIShaderBundleGraphicsDispatch > Dispatches, bool bEmulated)
 
virtual void RHIBeginUAVOverlap ()
 
virtual void RHIEndUAVOverlap ()
 
virtual void RHIBeginUAVOverlap (TConstArrayView< FRHIUnorderedAccessView * > UAVs)
 
virtual void RHIEndUAVOverlap (TConstArrayView< FRHIUnorderedAccessView * > UAVs)
 
void RHISetBatchedShaderParameters (FRHIComputeShader *InShader, FRHIBatchedShaderParameters &InBatchedParameters)
 
virtual void RHISetUniformBufferDynamicOffset (FUniformBufferStaticSlot Slot, uint32 Offset)
 
virtual void RHISetGPUMask (FRHIGPUMask GPUMask)
 
virtual FRHIGPUMask RHIGetGPUMask () const
 
virtual void RHIExecuteMultiIndirectClusterOperation (const FRayTracingClusterOperationParams &Params)
 
virtual void RHIBuildAccelerationStructures (TConstArrayView< FRayTracingGeometryBuildParams > Params, const FRHIBufferRange &ScratchBufferRange)
 
virtual void RHIBuildAccelerationStructures (TConstArrayView< FRayTracingSceneBuildParams > Params)
 
virtual void RHIBindAccelerationStructureMemory (FRHIRayTracingScene *Scene, FRHIBuffer *Buffer, uint32 BufferOffset)
 
IRHIComputeContextGetLowestLevelContext ()
 
IRHIComputeContext const & GetHighestLevelContext () const
 
IRHIComputeContextGetHighestLevelContext ()
 
void SetTrackedAccess (const FRHITrackedAccessInfo &Info)
 
ERHIAccess GetTrackedAccess (const FRHIViewableResource *Resource) const
 
ERHIPipeline GetTrackedPipelines (const FRHIViewableResource *Resource) const
 
virtual voidRHIGetNativeCommandBuffer ()
 
virtual void RHIPostExternalCommandsReset ()
 
FRHICommandListBaseGetExecutingCommandList () const
 
virtual void SetExecutingCommandList (FRHICommandListBase *InCmdList)
 

Static Public Member Functions

static FMetalRHICommandContextGet (FRHICommandListBase &CmdList)
 

Public Attributes

enum FMetalRHICommandContext::EPhase CurrentPhase = EPhase::Wait
 
struct { 
 
   TArray< FMetalSyncPointRef >   ToWait 
 
   TArray< FMetalSyncPointRef >   ToSignal 
 
BatchedSyncPoints 
 
FRHIViewportCustomPresentViewport = nullptr
 

Protected Member Functions

void ResolveTexture (UE::RHICore::FResolveTextureInfo Info)
 

Protected Attributes

FMetalDeviceDevice
 
FMetalCommandQueueCommandQueue
 
FMetalCommandList CommandList
 
FMetalCommandEncoder CurrentEncoder
 
FMetalStateCache StateCache
 
TSharedPtr< FMetalQueryBufferPool, ESPMode::ThreadSafeQueryBuffer
 
MTL::RenderPassDescriptor * RenderPassDesc = nullptr
 
class FMetalProfilerProfiler = nullptr
 
TRefCountPtr< FMetalFenceCurrentEncoderFence
 
uint64_t UploadSyncCounter = 0
 
bool bWithinRenderPass = false
 
bool bIsParallelContext = false
 
TArray< FRHIUniformBuffer * > GlobalUniformBuffers
 
TArray< FMetalPayload * > Payloads
 
FMetalSyncPointRef ContextSyncPoint
 
FMetalParallelRenderPassInfoParallelRenderPassInfo
 
- Protected Attributes inherited from IRHICommandContext
FRHIRenderPassInfo RenderPassInfo
 
- Protected Attributes inherited from IRHIComputeContext
UE::RHI::GPUProfiler::FEvent::FStats StatEvent {}
 

Detailed Description

The interface RHI command context.

Member Enumeration Documentation

◆ EPhase

Enumerator
Wait 
Execute 
Signal 

Constructor & Destructor Documentation

◆ FMetalRHICommandContext()

FMetalRHICommandContext::FMetalRHICommandContext ( FMetalDevice Device,
class FMetalProfiler InProfiler 
)

◆ ~FMetalRHICommandContext()

FMetalRHICommandContext::~FMetalRHICommandContext ( )
virtual

Member Function Documentation

◆ BeginBlitEncoder()

void FMetalRHICommandContext::BeginBlitEncoder ( )

◆ BeginComputeEncoder()

void FMetalRHICommandContext::BeginComputeEncoder ( )

◆ BeginRecursiveCommand()

void FMetalRHICommandContext::BeginRecursiveCommand ( )
inline

◆ CommitRenderResourceTables()

void FMetalRHICommandContext::CommitRenderResourceTables ( void  )

◆ CopyFromBufferToBuffer()

void FMetalRHICommandContext::CopyFromBufferToBuffer ( FMetalBufferPtr  SourceBuffer,
NS::UInteger  SourceOffset,
FMetalBufferPtr  DestinationBuffer,
NS::UInteger  DestinationOffset,
NS::UInteger  Size 
)

◆ CopyFromBufferToTexture()

void FMetalRHICommandContext::CopyFromBufferToTexture ( FMetalBufferPtr  Buffer,
uint32  sourceOffset,
uint32  sourceBytesPerRow,
uint32  sourceBytesPerImage,
MTL::Size  sourceSize,
MTL::Texture *  toTexture,
uint32  destinationSlice,
uint32  destinationLevel,
MTL::Origin  destinationOrigin,
MTL::BlitOption  options 
)

◆ CopyFromTextureToBuffer()

void FMetalRHICommandContext::CopyFromTextureToBuffer ( MTL::Texture *  Texture,
uint32  sourceSlice,
uint32  sourceLevel,
MTL::Origin  sourceOrigin,
MTL::Size  sourceSize,
FMetalBufferPtr  toBuffer,
uint32  destinationOffset,
uint32  destinationBytesPerRow,
uint32  destinationBytesPerImage,
MTL::BlitOption  options 
)

◆ CopyFromTextureToTexture()

void FMetalRHICommandContext::CopyFromTextureToTexture ( MTL::Texture *  Texture,
uint32  sourceSlice,
uint32  sourceLevel,
MTL::Origin  sourceOrigin,
MTL::Size  sourceSize,
MTL::Texture *  toTexture,
uint32  destinationSlice,
uint32  destinationLevel,
MTL::Origin  destinationOrigin 
)

◆ EndBlitEncoder()

void FMetalRHICommandContext::EndBlitEncoder ( )

◆ EndCommandBuffer()

void FMetalRHICommandContext::EndCommandBuffer ( )

◆ EndComputeEncoder()

void FMetalRHICommandContext::EndComputeEncoder ( )

◆ EndTiming()

void FMetalRHICommandContext::EndTiming ( class FMetalEventNode EventNode)

◆ FillBuffer()

void FMetalRHICommandContext::FillBuffer ( MTL::Buffer *  Buffer,
NS::Range  Range,
uint8  Value 
)

◆ Finalize()

void FMetalRHICommandContext::Finalize ( TArray< FMetalPayload * > &  OutPayloads)

◆ FlushCommands()

void FMetalRHICommandContext::FlushCommands ( EMetalFlushFlags  Flags)

◆ Get()

static FMetalRHICommandContext & FMetalRHICommandContext::Get ( FRHICommandListBase CmdList)
inlinestatic

◆ GetCommandQueue()

FMetalCommandQueue & FMetalRHICommandContext::GetCommandQueue ( )
inline

◆ GetContextSyncPoint()

FMetalSyncPoint * FMetalRHICommandContext::GetContextSyncPoint ( )
inline

◆ GetCurrentCommandBuffer()

FMetalCommandBuffer * FMetalRHICommandContext::GetCurrentCommandBuffer ( )

◆ GetDevice()

FMetalDevice & FMetalRHICommandContext::GetDevice ( )
inline

◆ GetPayload()

FMetalPayload * FMetalRHICommandContext::GetPayload ( EPhase  Phase)
inline

◆ GetProfiler() [1/2]

FMetalProfiler * FMetalRHICommandContext::GetProfiler ( )
inline

◆ GetProfiler() [2/2]

class FMetalProfiler * FMetalRHICommandContext::GetProfiler ( ) const
inline

Get the profiler pointer

◆ GetQueryBufferPool()

TSharedRef< FMetalQueryBufferPool, ESPMode::ThreadSafe > FMetalRHICommandContext::GetQueryBufferPool ( )
inline

◆ GetStateCache()

FMetalStateCache & FMetalRHICommandContext::GetStateCache ( )
inline

◆ GetStaticUniformBuffers()

const TArray< FRHIUniformBuffer * > & FMetalRHICommandContext::GetStaticUniformBuffers ( ) const
inline

◆ InsertComputeMemoryBarrier()

void FMetalRHICommandContext::InsertComputeMemoryBarrier ( )

◆ IsInsideRenderPass()

bool FMetalRHICommandContext::IsInsideRenderPass ( ) const
inline

◆ NewPayload()

void FMetalRHICommandContext::NewPayload ( )
inline

◆ PrepareToDispatch()

void FMetalRHICommandContext::PrepareToDispatch ( )

◆ PrepareToDraw()

bool FMetalRHICommandContext::PrepareToDraw ( uint32  PrimitiveType)

◆ PrepareToRender()

void FMetalRHICommandContext::PrepareToRender ( uint32  PrimitiveType)

◆ PushDescriptorUpdates()

void FMetalRHICommandContext::PushDescriptorUpdates ( )

◆ ResetContext()

void FMetalRHICommandContext::ResetContext ( )

◆ ResolveTexture()

void FMetalRHICommandContext::ResolveTexture ( UE::RHICore::FResolveTextureInfo  Info)
protected

◆ RHIBeginParallelRenderPass()

void FMetalRHICommandContext::RHIBeginParallelRenderPass ( TSharedPtr< FRHIParallelRenderPassInfo InInfo,
const TCHAR InName 
)
finaloverridevirtual

Reimplemented from IRHICommandContext.

◆ RHIBeginRenderPass()

void FMetalRHICommandContext::RHIBeginRenderPass ( const FRHIRenderPassInfo InInfo,
const TCHAR InName 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIBeginRenderQuery()

void FMetalRHICommandContext::RHIBeginRenderQuery ( FRHIRenderQuery RenderQuery)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIBeginTransitions()

void FMetalRHICommandContext::RHIBeginTransitions ( TArrayView< const FRHITransition * >  Transitions)
virtual

Implements IRHIComputeContext.

◆ RHICalibrateTimers()

void FMetalRHICommandContext::RHICalibrateTimers ( FRHITimestampCalibrationQuery CalibrationQuery)
finaloverridevirtual

◆ RHIClearUAVFloat()

void FMetalRHICommandContext::RHIClearUAVFloat ( FRHIUnorderedAccessView UnorderedAccessViewRHI,
const FVector4f Values 
)
finaloverridevirtual

Clears a UAV to the multi-component value provided.

Implements IRHIComputeContext.

◆ RHIClearUAVUint()

void FMetalRHICommandContext::RHIClearUAVUint ( FRHIUnorderedAccessView UnorderedAccessViewRHI,
const FUintVector4 Values 
)
finaloverridevirtual

Clears a UAV to the multi-component unsigned integer value provided. Should only be called on UAVs with an integer format, or on structured buffers. Structured buffers are treated as a regular R32_UINT buffer during the clear operation, and the Values.X component is copied directly into the buffer without any format conversion. (Y,Z,W) of Values is ignored. Typed integer buffers undergo standard format conversion during the write operation. The conversion is determined by the format of the UAV.

Parameters
UnorderedAccessViewRHIThe UAV to clear.
ValuesThe values to clear the UAV to, one component per channel (XYZW = RGBA). Channels not supported by the UAV are ignored.

Implements IRHIComputeContext.

◆ RHICopyBufferRegion()

void FMetalRHICommandContext::RHICopyBufferRegion ( FRHIBuffer DstBufferRHI,
uint64  DstOffset,
FRHIBuffer SrcBufferRHI,
uint64  SrcOffset,
uint64  NumBytes 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHICopyTexture()

void FMetalRHICommandContext::RHICopyTexture ( FRHITexture SourceTextureRHI,
FRHITexture DestTextureRHI,
const FRHICopyTextureInfo CopyInfo 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHICopyToStagingBuffer()

void FMetalRHICommandContext::RHICopyToStagingBuffer ( FRHIBuffer SourceBufferRHI,
FRHIStagingBuffer DestinationStagingBufferRHI,
uint32  InOffset,
uint32  InNumBytes 
)
finaloverridevirtual

Performs a copy of the data in 'SourceBuffer' to 'DestinationStagingBuffer.' This will occur inline on the GPU timeline. This is a mechanism to perform nonblocking readback of a buffer at a point in time.

Parameters
SourceBufferThe source vertex buffer that will be inlined copied.
DestinationStagingBufferThe the host-visible destination buffer
OffsetThe start of the data in 'SourceBuffer'
NumBytesThe number of bytes to copy out of 'SourceBuffer'

Reimplemented from IRHIComputeContext.

◆ RHIDispatchComputeShader()

void FMetalRHICommandContext::RHIDispatchComputeShader ( uint32  ThreadGroupCountX,
uint32  ThreadGroupCountY,
uint32  ThreadGroupCountZ 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIDispatchIndirectComputeShader()

void FMetalRHICommandContext::RHIDispatchIndirectComputeShader ( FRHIBuffer ArgumentBuffer,
uint32  ArgumentOffset 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIDrawIndexedIndirect()

void FMetalRHICommandContext::RHIDrawIndexedIndirect ( FRHIBuffer IndexBufferRHI,
FRHIBuffer ArgumentsBufferRHI,
int32  DrawArgumentsIndex,
uint32  NumInstances 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIDrawIndexedPrimitive()

void FMetalRHICommandContext::RHIDrawIndexedPrimitive ( FRHIBuffer IndexBuffer,
int32  BaseVertexIndex,
uint32  FirstInstance,
uint32  NumVertices,
uint32  StartIndex,
uint32  NumPrimitives,
uint32  NumInstances 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIDrawIndexedPrimitiveIndirect()

void FMetalRHICommandContext::RHIDrawIndexedPrimitiveIndirect ( FRHIBuffer IndexBuffer,
FRHIBuffer ArgumentBuffer,
uint32  ArgumentOffset 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIDrawPrimitive()

void FMetalRHICommandContext::RHIDrawPrimitive ( uint32  BaseVertexIndex,
uint32  NumPrimitives,
uint32  NumInstances 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIDrawPrimitiveIndirect()

void FMetalRHICommandContext::RHIDrawPrimitiveIndirect ( FRHIBuffer ArgumentBuffer,
uint32  ArgumentOffset 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIEndDrawingViewport()

void FMetalRHICommandContext::RHIEndDrawingViewport ( FRHIViewport Viewport,
bool  bPresent,
bool  bLockToVsync 
)
overridevirtual

Implements IRHICommandContext.

◆ RHIEndParallelRenderPass()

void FMetalRHICommandContext::RHIEndParallelRenderPass ( )
finaloverridevirtual

Reimplemented from IRHICommandContext.

◆ RHIEndRenderPass()

void FMetalRHICommandContext::RHIEndRenderPass ( )
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIEndRenderQuery()

void FMetalRHICommandContext::RHIEndRenderQuery ( FRHIRenderQuery RenderQuery)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIEndTransitions()

void FMetalRHICommandContext::RHIEndTransitions ( TArrayView< const FRHITransition * >  Transitions)
virtual

Implements IRHIComputeContext.

◆ RHINextSubpass()

void FMetalRHICommandContext::RHINextSubpass ( )
finaloverridevirtual

Reimplemented from IRHICommandContext.

◆ RHISetBlendFactor()

void FMetalRHICommandContext::RHISetBlendFactor ( const FLinearColor BlendFactor)
finaloverridevirtual

Reimplemented from IRHICommandContext.

◆ RHISetComputePipelineState()

void FMetalRHICommandContext::RHISetComputePipelineState ( FRHIComputePipelineState ComputePipelineState)
overridevirtual

Implements IRHIComputeContext.

◆ RHISetDepthBounds()

void FMetalRHICommandContext::RHISetDepthBounds ( float  MinDepth,
float  MaxDepth 
)
finaloverridevirtual

Sets Depth Bounds Testing with the given min/max depth.

Parameters
MinDepthThe minimum depth for depth bounds test
MaxDepthThe maximum depth for depth bounds test. The valid values for fMinDepth and fMaxDepth are such that 0 <= fMinDepth <= fMaxDepth <= 1

Implements IRHICommandContext.

◆ RHISetGraphicsPipelineState()

void FMetalRHICommandContext::RHISetGraphicsPipelineState ( FRHIGraphicsPipelineState GraphicsState,
uint32  StencilRef,
bool  bApplyAdditionalState 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHISetMultipleViewports()

void FMetalRHICommandContext::RHISetMultipleViewports ( uint32  Count,
const FViewportBounds Data 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHISetScissorRect()

void FMetalRHICommandContext::RHISetScissorRect ( bool  bEnable,
uint32  MinX,
uint32  MinY,
uint32  MaxX,
uint32  MaxY 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHISetShaderParameters() [1/2]

void FMetalRHICommandContext::RHISetShaderParameters ( FRHIComputeShader Shader,
TConstArrayView< uint8 InParametersData,
TConstArrayView< FRHIShaderParameter InParameters,
TConstArrayView< FRHIShaderParameterResource InResourceParameters,
TConstArrayView< FRHIShaderParameterResource InBindlessParameters 
)
finaloverridevirtual

Implements IRHIComputeContext.

◆ RHISetShaderParameters() [2/2]

void FMetalRHICommandContext::RHISetShaderParameters ( FRHIGraphicsShader Shader,
TConstArrayView< uint8 InParametersData,
TConstArrayView< FRHIShaderParameter InParameters,
TConstArrayView< FRHIShaderParameterResource InResourceParameters,
TConstArrayView< FRHIShaderParameterResource InBindlessParameters 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHISetStaticUniformBuffer()

void FMetalRHICommandContext::RHISetStaticUniformBuffer ( FUniformBufferStaticSlot  Slot,
FRHIUniformBuffer Buffer 
)
finaloverridevirtual

Implements IRHIComputeContext.

◆ RHISetStaticUniformBuffers()

void FMetalRHICommandContext::RHISetStaticUniformBuffers ( const FUniformBufferStaticBindings InUniformBuffers)
finaloverridevirtual

Implements IRHIComputeContext.

◆ RHISetStencilRef()

void FMetalRHICommandContext::RHISetStencilRef ( uint32  StencilRef)
finaloverridevirtual

Reimplemented from IRHICommandContext.

◆ RHISetStereoViewport()

void FMetalRHICommandContext::RHISetStereoViewport ( float  LeftMinX,
float  RightMinX,
float  LeftMinY,
float  RightMinY,
float  MinZ,
float  LeftMaxX,
float  RightMaxX,
float  LeftMaxY,
float  RightMaxY,
float  MaxZ 
)
finaloverridevirtual

Reimplemented from IRHICommandContext.

◆ RHISetStreamSource()

void FMetalRHICommandContext::RHISetStreamSource ( uint32  StreamIndex,
FRHIBuffer VertexBuffer,
uint32  Offset 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHISetViewport()

void FMetalRHICommandContext::RHISetViewport ( float  MinX,
float  MinY,
float  MinZ,
float  MaxX,
float  MaxY,
float  MaxZ 
)
finaloverridevirtual

Implements IRHICommandContext.

◆ RHIWriteGPUFence()

void FMetalRHICommandContext::RHIWriteGPUFence ( FRHIGPUFence FenceRHI)
finaloverridevirtual

Write the fence in the GPU timeline. The fence can then be tested on the CPU to know if the previous GPU commands are completed.

Parameters
Fence

Reimplemented from IRHIComputeContext.

◆ SetCustomPresentViewport()

void FMetalRHICommandContext::SetCustomPresentViewport ( FRHIViewport Viewport)
inline

◆ SetProfiler()

void FMetalRHICommandContext::SetProfiler ( FMetalProfiler InProfiler)
inline

◆ SetRenderTargets()

void FMetalRHICommandContext::SetRenderTargets ( uint32  NumSimultaneousRenderTargets,
const FRHIRenderTargetView NewRenderTargets,
const FRHIDepthRenderTargetView NewDepthStencilTarget 
)

◆ SetRenderTargetsAndClear()

void FMetalRHICommandContext::SetRenderTargetsAndClear ( const FRHISetRenderTargetsInfo RenderTargetsInfo)

◆ SetupParallelContext()

void FMetalRHICommandContext::SetupParallelContext ( const FRHIParallelRenderPassInfo ParallelRenderPassInfo)

◆ SignalEvent()

void FMetalRHICommandContext::SignalEvent ( MTLEventPtr  Event,
uint32_t  SignalCount 
)

Update the event to capture all GPU work so far enqueued by this encoder.

◆ SignalSyncPoint()

void FMetalRHICommandContext::SignalSyncPoint ( FMetalSyncPoint SyncPoint)

◆ StartCommandBuffer()

void FMetalRHICommandContext::StartCommandBuffer ( )

◆ StartTiming()

void FMetalRHICommandContext::StartTiming ( class FMetalEventNode EventNode)

◆ SynchronizeResource()

void FMetalRHICommandContext::SynchronizeResource ( MTL::Resource *  Resource)

◆ SynchronizeTexture()

void FMetalRHICommandContext::SynchronizeTexture ( MTL::Texture *  Texture,
uint32  Slice,
uint32  Level 
)

◆ WaitForEvent()

void FMetalRHICommandContext::WaitForEvent ( MTLEventPtr  Event,
uint32_t  SignalCount 
)

Prevent further GPU work until the event is reached.

◆ WaitSyncPoint()

void FMetalRHICommandContext::WaitSyncPoint ( FMetalSyncPoint SyncPoint)

Member Data Documentation

◆ [struct]

struct { ... } FMetalRHICommandContext::BatchedSyncPoints

◆ bIsParallelContext

bool FMetalRHICommandContext::bIsParallelContext = false
protected

◆ bWithinRenderPass

bool FMetalRHICommandContext::bWithinRenderPass = false
protected

◆ CommandList

FMetalCommandList FMetalRHICommandContext::CommandList
protected

The wrapper around command buffers for ensuring correct parallel execution order

◆ CommandQueue

FMetalCommandQueue& FMetalRHICommandContext::CommandQueue
protected

The wrapper around the device command-queue for creating & committing command buffers to

◆ ContextSyncPoint

FMetalSyncPointRef FMetalRHICommandContext::ContextSyncPoint
protected

◆ CurrentEncoder

FMetalCommandEncoder FMetalRHICommandContext::CurrentEncoder
protected

◆ CurrentEncoderFence

TRefCountPtr<FMetalFence> FMetalRHICommandContext::CurrentEncoderFence
protected

◆ CurrentPhase

enum FMetalRHICommandContext::EPhase FMetalRHICommandContext::CurrentPhase = EPhase::Wait

◆ CustomPresentViewport

FRHIViewport* FMetalRHICommandContext::CustomPresentViewport = nullptr

◆ Device

FMetalDevice& FMetalRHICommandContext::Device
protected

◆ GlobalUniformBuffers

TArray<FRHIUniformBuffer*> FMetalRHICommandContext::GlobalUniformBuffers
protected

◆ ParallelRenderPassInfo

FMetalParallelRenderPassInfo* FMetalRHICommandContext::ParallelRenderPassInfo
protected

◆ Payloads

TArray<FMetalPayload*> FMetalRHICommandContext::Payloads
protected

◆ Profiler

class FMetalProfiler* FMetalRHICommandContext::Profiler = nullptr
protected

Profiling implementation details.

◆ QueryBuffer

TSharedPtr<FMetalQueryBufferPool, ESPMode::ThreadSafe> FMetalRHICommandContext::QueryBuffer
protected

A pool of buffers for writing visibility query results.

◆ RenderPassDesc

MTL::RenderPassDescriptor* FMetalRHICommandContext::RenderPassDesc = nullptr
protected

◆ StateCache

FMetalStateCache FMetalRHICommandContext::StateCache
protected

The cache of all tracked & accessible state.

◆ ToSignal

TArray<FMetalSyncPointRef> FMetalRHICommandContext::ToSignal

◆ ToWait

TArray<FMetalSyncPointRef> FMetalRHICommandContext::ToWait

◆ UploadSyncCounter

uint64_t FMetalRHICommandContext::UploadSyncCounter = 0
protected

The documentation for this class was generated from the following files: