UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IRHICommandContext Class Referenceabstract

#include <RHIContext.h>

+ Inheritance diagram for IRHICommandContext:

Public Member Functions

virtual ~IRHICommandContext ()
 
virtual ERHIPipeline GetPipeline () const override
 
virtual void RHIDispatchComputeShader (uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ)=0
 
virtual void RHIDispatchIndirectComputeShader (FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)=0
 
virtual void RHISetMultipleViewports (uint32 Count, const FViewportBounds *Data)=0
 
virtual void RHIResummarizeHTile (FRHITexture *DepthTexture)
 
virtual void RHIBeginRenderQuery (FRHIRenderQuery *RenderQuery)=0
 
virtual void RHIEndRenderQuery (FRHIRenderQuery *RenderQuery)=0
 
virtual void RHIEndDrawingViewport (FRHIViewport *Viewport, bool bPresent, bool bLockToVsync)=0
 
virtual void RHISetStreamSource (uint32 StreamIndex, FRHIBuffer *VertexBuffer, uint32 Offset)=0
 
virtual void RHISetViewport (float MinX, float MinY, float MinZ, float MaxX, float MaxY, float MaxZ)=0
 
virtual void RHISetStereoViewport (float LeftMinX, float RightMinX, float LeftMinY, float RightMinY, float MinZ, float LeftMaxX, float RightMaxX, float LeftMaxY, float RightMaxY, float MaxZ)
 
virtual void RHISetScissorRect (bool bEnable, uint32 MinX, uint32 MinY, uint32 MaxX, uint32 MaxY)=0
 
virtual void RHISetGraphicsPipelineState (FRHIGraphicsPipelineState *GraphicsState, uint32 StencilRef, bool bApplyAdditionalState)=0
 
virtual void RHISetShaderParameters (FRHIGraphicsShader *Shader, TConstArrayView< uint8 > InParametersData, TConstArrayView< FRHIShaderParameter > InParameters, TConstArrayView< FRHIShaderParameterResource > InResourceParameters, TConstArrayView< FRHIShaderParameterResource > InBindlessParameters)=0
 
void RHISetBatchedShaderParameters (FRHIGraphicsShader *InShader, FRHIBatchedShaderParameters &InBatchedParameters)
 
virtual void RHISetShaderUnbinds (FRHIGraphicsShader *Shader, TConstArrayView< FRHIShaderParameterUnbind > InUnbinds)
 
virtual void RHISetStencilRef (uint32 StencilRef)
 
virtual void RHISetBlendFactor (const FLinearColor &BlendFactor)
 
virtual void RHIDrawPrimitive (uint32 BaseVertexIndex, uint32 NumPrimitives, uint32 NumInstances)=0
 
virtual void RHIDrawPrimitiveIndirect (FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)=0
 
virtual void RHIDrawIndexedIndirect (FRHIBuffer *IndexBufferRHI, FRHIBuffer *ArgumentsBufferRHI, int32 DrawArgumentsIndex, uint32 NumInstances)=0
 
virtual void RHIDrawIndexedPrimitive (FRHIBuffer *IndexBuffer, int32 BaseVertexIndex, uint32 FirstInstance, uint32 NumVertices, uint32 StartIndex, uint32 NumPrimitives, uint32 NumInstances)=0
 
virtual void RHIDrawIndexedPrimitiveIndirect (FRHIBuffer *IndexBuffer, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)=0
 
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 RHISetDepthBounds (float MinDepth, float MaxDepth)=0
 
virtual void RHIGpuHangCommandListCorruption ()
 
virtual void RHISetShadingRate (EVRSShadingRate ShadingRate, EVRSRateCombiner Combiner)
 
virtual void RHIBeginParallelRenderPass (TSharedPtr< FRHIParallelRenderPassInfo > InInfo, const TCHAR *InName)
 
virtual void RHIEndParallelRenderPass ()
 
virtual void RHIBeginRenderPass (const FRHIRenderPassInfo &InInfo, const TCHAR *InName)=0
 
virtual void RHIEndRenderPass ()=0
 
virtual void RHINextSubpass ()
 
virtual void RHICopyTexture (FRHITexture *SourceTexture, FRHITexture *DestTexture, const FRHICopyTextureInfo &CopyInfo)=0
 
virtual void RHICopyBufferRegion (FRHIBuffer *DestBuffer, uint64 DstOffset, FRHIBuffer *SourceBuffer, uint64 SrcOffset, uint64 NumBytes)=0
 
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 RHISetComputePipelineState (FRHIComputePipelineState *ComputePipelineState)=0
 
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 RHIBeginTransitions (TArrayView< const FRHITransition * > Transitions)=0
 
virtual void RHIEndTransitions (TArrayView< const FRHITransition * > Transitions)=0
 
virtual void RHIClearUAVFloat (FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FVector4f &Values)=0
 
virtual void RHIClearUAVUint (FRHIUnorderedAccessView *UnorderedAccessViewRHI, const FUintVector4 &Values)=0
 
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 RHISetStaticUniformBuffers (const FUniformBufferStaticBindings &InUniformBuffers)=0
 
virtual void RHISetStaticUniformBuffer (FUniformBufferStaticSlot Slot, FRHIUniformBuffer *UniformBuffer)=0
 
virtual void RHISetUniformBufferDynamicOffset (FUniformBufferStaticSlot Slot, uint32 Offset)
 
virtual void RHICopyToStagingBuffer (FRHIBuffer *SourceBufferRHI, FRHIStagingBuffer *DestinationStagingBufferRHI, uint32 InOffset, uint32 InNumBytes)
 
virtual void RHIWriteGPUFence (FRHIGPUFence *FenceRHI)
 
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)
 

Protected Attributes

FRHIRenderPassInfo RenderPassInfo
 
- Protected Attributes inherited from IRHIComputeContext
UE::RHI::GPUProfiler::FEvent::FStats StatEvent {}
 

Detailed Description

The interface RHI command context. Sometimes the RHI handles these. On platforms that can processes command lists in parallel, it is a separate object.

Constructor & Destructor Documentation

◆ ~IRHICommandContext()

virtual IRHICommandContext::~IRHICommandContext ( )
inlinevirtual

Member Function Documentation

◆ GetPipeline()

virtual ERHIPipeline IRHICommandContext::GetPipeline ( ) const
inlineoverridevirtual

Reimplemented from IRHIComputeContext.

Reimplemented in FD3D12CommandContext, and FVulkanCommandListContext.

◆ RHIBeginParallelRenderPass()

virtual void IRHICommandContext::RHIBeginParallelRenderPass ( TSharedPtr< FRHIParallelRenderPassInfo InInfo,
const TCHAR InName 
)
inlinevirtual

◆ RHIBeginRenderPass()

virtual void IRHICommandContext::RHIBeginRenderPass ( const FRHIRenderPassInfo InInfo,
const TCHAR InName 
)
pure virtual

◆ RHIBeginRenderQuery()

◆ RHIClearShaderBindingTable()

virtual void IRHICommandContext::RHIClearShaderBindingTable ( FRHIShaderBindingTable SBT)
inlinevirtual

Reimplemented in FVulkanCommandListContext.

◆ RHICommitShaderBindingTable()

virtual void IRHICommandContext::RHICommitShaderBindingTable ( FRHIShaderBindingTable SBT,
FRHIBuffer InlineBindingDataBuffer 
)
inlinevirtual

Reimplemented in FVulkanCommandListContext.

◆ RHICopyBufferRegion()

virtual void IRHICommandContext::RHICopyBufferRegion ( FRHIBuffer DestBuffer,
uint64  DstOffset,
FRHIBuffer SourceBuffer,
uint64  SrcOffset,
uint64  NumBytes 
)
pure virtual

◆ RHICopyTexture()

virtual void IRHICommandContext::RHICopyTexture ( FRHITexture SourceTexture,
FRHITexture DestTexture,
const FRHICopyTextureInfo CopyInfo 
)
pure virtual

◆ RHIDispatchComputeShader()

virtual void IRHICommandContext::RHIDispatchComputeShader ( uint32  ThreadGroupCountX,
uint32  ThreadGroupCountY,
uint32  ThreadGroupCountZ 
)
pure virtual

◆ RHIDispatchIndirectComputeShader()

virtual void IRHICommandContext::RHIDispatchIndirectComputeShader ( FRHIBuffer ArgumentBuffer,
uint32  ArgumentOffset 
)
pure virtual

◆ RHIDispatchIndirectMeshShader()

virtual void IRHICommandContext::RHIDispatchIndirectMeshShader ( FRHIBuffer ArgumentBuffer,
uint32  ArgumentOffset 
)
inlinevirtual

◆ RHIDispatchMeshShader()

virtual void IRHICommandContext::RHIDispatchMeshShader ( uint32  ThreadGroupCountX,
uint32  ThreadGroupCountY,
uint32  ThreadGroupCountZ 
)
inlinevirtual

◆ RHIDrawIndexedIndirect()

virtual void IRHICommandContext::RHIDrawIndexedIndirect ( FRHIBuffer IndexBufferRHI,
FRHIBuffer ArgumentsBufferRHI,
int32  DrawArgumentsIndex,
uint32  NumInstances 
)
pure virtual

◆ RHIDrawIndexedPrimitive()

virtual void IRHICommandContext::RHIDrawIndexedPrimitive ( FRHIBuffer IndexBuffer,
int32  BaseVertexIndex,
uint32  FirstInstance,
uint32  NumVertices,
uint32  StartIndex,
uint32  NumPrimitives,
uint32  NumInstances 
)
pure virtual

◆ RHIDrawIndexedPrimitiveIndirect()

virtual void IRHICommandContext::RHIDrawIndexedPrimitiveIndirect ( FRHIBuffer IndexBuffer,
FRHIBuffer ArgumentBuffer,
uint32  ArgumentOffset 
)
pure virtual

◆ RHIDrawPrimitive()

virtual void IRHICommandContext::RHIDrawPrimitive ( uint32  BaseVertexIndex,
uint32  NumPrimitives,
uint32  NumInstances 
)
pure virtual

◆ RHIDrawPrimitiveIndirect()

virtual void IRHICommandContext::RHIDrawPrimitiveIndirect ( FRHIBuffer ArgumentBuffer,
uint32  ArgumentOffset 
)
pure virtual

◆ RHIEndDrawingViewport()

virtual void IRHICommandContext::RHIEndDrawingViewport ( FRHIViewport Viewport,
bool  bPresent,
bool  bLockToVsync 
)
pure virtual

◆ RHIEndParallelRenderPass()

virtual void IRHICommandContext::RHIEndParallelRenderPass ( )
inlinevirtual

◆ RHIEndRenderPass()

◆ RHIEndRenderQuery()

◆ RHIGpuHangCommandListCorruption()

virtual void IRHICommandContext::RHIGpuHangCommandListCorruption ( )
inlinevirtual

◆ RHIMultiDrawIndexedPrimitiveIndirect()

virtual void IRHICommandContext::RHIMultiDrawIndexedPrimitiveIndirect ( FRHIBuffer IndexBuffer,
FRHIBuffer ArgumentBuffer,
uint32  ArgumentOffset,
FRHIBuffer CountBuffer,
uint32  CountBuffeOffset,
uint32  MaxDrawArguments 
)
inlinevirtual

Similar to RHIDrawIndexedPrimitiveIndirect, but allows many draw arguments to be provided at once. GRHIGlobals.SupportsDrawIndirect must be checked to detect support on the current machine. @ param IndexBuffer Buffer containing primitive indices @ param ArgumentsBuffer Buffer containing FRHIDrawIndexedIndirectParameters structures @ param ArgumentOffset Offset in bytes of the first element in ArgumentsBuffer that will be used for drawing @ param CountBuffer Buffer containing uint32 count of valid draw arguments that should be consumed (may be nullptr, indicating that only MaxDrawArguments value should be used) @ param CountBuffeOffset Offset in bytes for the CountBuffer element that will be used to source the draw argument count @ param MaxDrawArguments How many draw arguments should be processed at most, i.e. NumDrawArguments = min(MaxDrawArguments, ValueFromCountBuffer)

Reimplemented in FD3D12CommandContext, FD3D12CommandContextRedirector, and FNullDynamicRHI.

◆ RHINextSubpass()

virtual void IRHICommandContext::RHINextSubpass ( )
inlinevirtual

◆ RHIResummarizeHTile()

virtual void IRHICommandContext::RHIResummarizeHTile ( FRHITexture DepthTexture)
inlinevirtual

Rebuilds the depth target HTILE meta data (on supported platforms).

Parameters
DepthTexture- the depth surface to resummarize.

◆ RHISetBatchedShaderParameters() [1/2]

void IRHIComputeContext::RHISetBatchedShaderParameters ( FRHIComputeShader InShader,
FRHIBatchedShaderParameters InBatchedParameters 
)
inline

◆ RHISetBatchedShaderParameters() [2/2]

void IRHICommandContext::RHISetBatchedShaderParameters ( FRHIGraphicsShader InShader,
FRHIBatchedShaderParameters InBatchedParameters 
)
inline

◆ RHISetBindingsOnShaderBindingTable()

virtual void IRHICommandContext::RHISetBindingsOnShaderBindingTable ( FRHIShaderBindingTable SBT,
FRHIRayTracingPipelineState Pipeline,
uint32  NumBindings,
const FRayTracingLocalShaderBindings Bindings,
ERayTracingBindingType  BindingType 
)
inlinevirtual

Reimplemented in FVulkanCommandListContext.

◆ RHISetBlendFactor()

virtual void IRHICommandContext::RHISetBlendFactor ( const FLinearColor BlendFactor)
inlinevirtual

◆ RHISetDepthBounds()

virtual void IRHICommandContext::RHISetDepthBounds ( float  MinDepth,
float  MaxDepth 
)
pure virtual

Sets Depth Bounds range 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

Implemented in FMetalRHICommandContext, FD3D12CommandContext, FD3D12CommandContextRedirector, FNullDynamicRHI, FOpenGLDynamicRHI, FVulkanCommandListContext, and FD3D11DynamicRHI.

◆ RHISetGraphicsPipelineState()

virtual void IRHICommandContext::RHISetGraphicsPipelineState ( FRHIGraphicsPipelineState GraphicsState,
uint32  StencilRef,
bool  bApplyAdditionalState 
)
pure virtual

◆ RHISetMultipleViewports()

virtual void IRHICommandContext::RHISetMultipleViewports ( uint32  Count,
const FViewportBounds Data 
)
pure virtual

◆ RHISetScissorRect()

virtual void IRHICommandContext::RHISetScissorRect ( bool  bEnable,
uint32  MinX,
uint32  MinY,
uint32  MaxX,
uint32  MaxY 
)
pure virtual

◆ RHISetShaderParameters() [1/2]

virtual void IRHIComputeContext::RHISetShaderParameters ( FRHIComputeShader ComputeShader,
TConstArrayView< uint8 InParametersData,
TConstArrayView< FRHIShaderParameter InParameters,
TConstArrayView< FRHIShaderParameterResource InResourceParameters,
TConstArrayView< FRHIShaderParameterResource InBindlessParameters 
)
virtual

Implements IRHIComputeContext.

◆ RHISetShaderParameters() [2/2]

virtual void IRHICommandContext::RHISetShaderParameters ( FRHIGraphicsShader Shader,
TConstArrayView< uint8 InParametersData,
TConstArrayView< FRHIShaderParameter InParameters,
TConstArrayView< FRHIShaderParameterResource InResourceParameters,
TConstArrayView< FRHIShaderParameterResource InBindlessParameters 
)
pure virtual

◆ RHISetShaderUnbinds() [1/2]

virtual void IRHIComputeContext::RHISetShaderUnbinds ( FRHIComputeShader ComputeShader,
TConstArrayView< FRHIShaderParameterUnbind InUnbinds 
)
inlinevirtual

Reimplemented from IRHIComputeContext.

◆ RHISetShaderUnbinds() [2/2]

virtual void IRHICommandContext::RHISetShaderUnbinds ( FRHIGraphicsShader Shader,
TConstArrayView< FRHIShaderParameterUnbind InUnbinds 
)
inlinevirtual

◆ RHISetShadingRate()

virtual void IRHICommandContext::RHISetShadingRate ( EVRSShadingRate  ShadingRate,
EVRSRateCombiner  Combiner 
)
inlinevirtual

◆ RHISetStencilRef()

virtual void IRHICommandContext::RHISetStencilRef ( uint32  StencilRef)
inlinevirtual

◆ RHISetStereoViewport()

virtual void IRHICommandContext::RHISetStereoViewport ( float  LeftMinX,
float  RightMinX,
float  LeftMinY,
float  RightMinY,
float  MinZ,
float  LeftMaxX,
float  RightMaxX,
float  LeftMaxY,
float  RightMaxY,
float  MaxZ 
)
inlinevirtual

◆ RHISetStreamSource()

virtual void IRHICommandContext::RHISetStreamSource ( uint32  StreamIndex,
FRHIBuffer VertexBuffer,
uint32  Offset 
)
pure virtual

◆ RHISetViewport()

virtual void IRHICommandContext::RHISetViewport ( float  MinX,
float  MinY,
float  MinZ,
float  MaxX,
float  MaxY,
float  MaxZ 
)
pure virtual

Member Data Documentation

◆ RenderPassInfo

FRHIRenderPassInfo IRHICommandContext::RenderPassInfo
protected

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