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

#include <RHIContext.h>

+ Inheritance diagram for IRHIComputeContext:

Public Member Functions

virtual ~IRHIComputeContext ()
 
virtual ERHIPipeline GetPipeline () const
 
virtual void RHISetComputePipelineState (FRHIComputePipelineState *ComputePipelineState)=0
 
virtual void RHIDispatchComputeShader (uint32 ThreadGroupCountX, uint32 ThreadGroupCountY, uint32 ThreadGroupCountZ)=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 RHIDispatchIndirectComputeShader (FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)=0
 
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)
 
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)
 
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

UE::RHI::GPUProfiler::FEvent::FStats StatEvent {}
 

Detailed Description

Context that is capable of doing Compute work. Can be async or compute on the gfx pipe.

Constructor & Destructor Documentation

◆ ~IRHIComputeContext()

virtual IRHIComputeContext::~IRHIComputeContext ( )
inlinevirtual

Member Function Documentation

◆ GetExecutingCommandList()

FRHICommandListBase & IRHIComputeContext::GetExecutingCommandList ( ) const
inline

◆ GetHighestLevelContext() [1/2]

IRHIComputeContext & IRHIComputeContext::GetHighestLevelContext ( )
inline

◆ GetHighestLevelContext() [2/2]

IRHIComputeContext const & IRHIComputeContext::GetHighestLevelContext ( ) const
inline

◆ GetLowestLevelContext()

IRHIComputeContext & IRHIComputeContext::GetLowestLevelContext ( )
inline

◆ GetPipeline()

virtual ERHIPipeline IRHIComputeContext::GetPipeline ( ) const
inlinevirtual

◆ GetTrackedAccess()

ERHIAccess IRHIComputeContext::GetTrackedAccess ( const FRHIViewableResource Resource) const
inline

◆ GetTrackedPipelines()

ERHIPipeline IRHIComputeContext::GetTrackedPipelines ( const FRHIViewableResource Resource) const
inline

◆ RHIBeginTransitions()

◆ RHIBeginUAVOverlap() [1/2]

virtual void IRHIComputeContext::RHIBeginUAVOverlap ( )
inlinevirtual

Reimplemented in FD3D11DynamicRHI.

◆ RHIBeginUAVOverlap() [2/2]

virtual void IRHIComputeContext::RHIBeginUAVOverlap ( TConstArrayView< FRHIUnorderedAccessView * >  UAVs)
inlinevirtual

◆ RHIBindAccelerationStructureMemory()

virtual void IRHIComputeContext::RHIBindAccelerationStructureMemory ( FRHIRayTracingScene Scene,
FRHIBuffer Buffer,
uint32  BufferOffset 
)
inlinevirtual

Reimplemented in FVulkanCommandListContext.

◆ RHIBuildAccelerationStructures() [1/2]

virtual void IRHIComputeContext::RHIBuildAccelerationStructures ( TConstArrayView< FRayTracingGeometryBuildParams Params,
const FRHIBufferRange ScratchBufferRange 
)
inlinevirtual

Reimplemented in FVulkanCommandListContext.

◆ RHIBuildAccelerationStructures() [2/2]

virtual void IRHIComputeContext::RHIBuildAccelerationStructures ( TConstArrayView< FRayTracingSceneBuildParams Params)
inlinevirtual

Reimplemented in FVulkanCommandListContext.

◆ RHIClearUAVFloat()

virtual void IRHIComputeContext::RHIClearUAVFloat ( FRHIUnorderedAccessView UnorderedAccessViewRHI,
const FVector4f Values 
)
pure virtual

Clears a UAV to the multi-channel floating point value provided. Should only be called on UAVs with a floating point 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 floating point 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.

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

◆ RHIClearUAVUint()

virtual void IRHIComputeContext::RHIClearUAVUint ( FRHIUnorderedAccessView UnorderedAccessViewRHI,
const FUintVector4 Values 
)
pure virtual

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.

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

◆ RHICopyToStagingBuffer()

virtual void IRHIComputeContext::RHICopyToStagingBuffer ( FRHIBuffer SourceBufferRHI,
FRHIStagingBuffer DestinationStagingBufferRHI,
uint32  InOffset,
uint32  InNumBytes 
)
inlinevirtual

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 in FD3D12CommandContext, FD3D12CommandContextRedirector, FVulkanCommandListContext, FD3D11DynamicRHI, FOpenGLDynamicRHI, and FMetalRHICommandContext.

◆ RHIDispatchComputeShader()

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

◆ RHIDispatchComputeShaderBundle()

virtual void IRHIComputeContext::RHIDispatchComputeShaderBundle ( FRHIShaderBundle ShaderBundle,
FRHIBuffer RecordArgBuffer,
TConstArrayView< FRHIShaderParameterResource SharedBindlessParameters,
TConstArrayView< FRHIShaderBundleComputeDispatch Dispatches,
bool  bEmulated 
)
inlinevirtual

Reimplemented in FD3D12CommandContext.

◆ RHIDispatchGraphicsShaderBundle()

virtual void IRHIComputeContext::RHIDispatchGraphicsShaderBundle ( FRHIShaderBundle ShaderBundle,
FRHIBuffer RecordArgBuffer,
const FRHIShaderBundleGraphicsState BundleState,
TConstArrayView< FRHIShaderParameterResource SharedBindlessParameters,
TConstArrayView< FRHIShaderBundleGraphicsDispatch Dispatches,
bool  bEmulated 
)
inlinevirtual

Reimplemented in FD3D12CommandContext.

◆ RHIDispatchIndirectComputeShader()

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

◆ RHIEndTransitions()

◆ RHIEndUAVOverlap() [1/2]

virtual void IRHIComputeContext::RHIEndUAVOverlap ( )
inlinevirtual

Reimplemented in FD3D11DynamicRHI.

◆ RHIEndUAVOverlap() [2/2]

virtual void IRHIComputeContext::RHIEndUAVOverlap ( TConstArrayView< FRHIUnorderedAccessView * >  UAVs)
inlinevirtual

◆ RHIExecuteMultiIndirectClusterOperation()

virtual void IRHIComputeContext::RHIExecuteMultiIndirectClusterOperation ( const FRayTracingClusterOperationParams Params)
inlinevirtual

◆ RHIGetGPUMask()

virtual FRHIGPUMask IRHIComputeContext::RHIGetGPUMask ( ) const
inlinevirtual

Reimplemented in FD3D12CommandContextRedirector.

◆ RHIGetNativeCommandBuffer()

virtual void * IRHIComputeContext::RHIGetNativeCommandBuffer ( )
inlinevirtual

Reimplemented in FD3D11DynamicRHI.

◆ RHIPostExternalCommandsReset()

virtual void IRHIComputeContext::RHIPostExternalCommandsReset ( )
inlinevirtual

Reimplemented in FOpenGLDynamicRHI.

◆ RHIRayTraceDispatch()

virtual void IRHIComputeContext::RHIRayTraceDispatch ( FRHIRayTracingPipelineState RayTracingPipelineState,
FRHIRayTracingShader RayGenShader,
FRHIShaderBindingTable SBT,
const FRayTracingShaderBindings GlobalResourceBindings,
uint32  Width,
uint32  Height 
)
inlinevirtual

Reimplemented in FVulkanCommandListContext.

◆ RHIRayTraceDispatchIndirect()

virtual void IRHIComputeContext::RHIRayTraceDispatchIndirect ( FRHIRayTracingPipelineState RayTracingPipelineState,
FRHIRayTracingShader RayGenShader,
FRHIShaderBindingTable SBT,
const FRayTracingShaderBindings GlobalResourceBindings,
FRHIBuffer ArgumentBuffer,
uint32  ArgumentOffset 
)
inlinevirtual

Reimplemented in FVulkanCommandListContext.

◆ RHISetAsyncComputeBudget()

virtual void IRHIComputeContext::RHISetAsyncComputeBudget ( EAsyncComputeBudget  Budget)
inlinevirtual

Reimplemented in FD3D12CommandContextBase.

◆ RHISetBatchedShaderParameters()

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

◆ RHISetComputeBudget()

virtual void IRHIComputeContext::RHISetComputeBudget ( ESyncComputeBudget  Budget)
inlinevirtual

◆ RHISetComputePipelineState()

virtual void IRHIComputeContext::RHISetComputePipelineState ( FRHIComputePipelineState ComputePipelineState)
pure virtual

◆ RHISetGPUMask()

virtual void IRHIComputeContext::RHISetGPUMask ( FRHIGPUMask  GPUMask)
inlinevirtual

◆ RHISetShaderParameters()

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

◆ RHISetShaderRootConstants()

virtual void IRHIComputeContext::RHISetShaderRootConstants ( const FUint32Vector4 Constants)
inlinevirtual

◆ RHISetShaderUnbinds()

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

◆ RHISetStaticUniformBuffer()

◆ RHISetStaticUniformBuffers()

virtual void IRHIComputeContext::RHISetStaticUniformBuffers ( const FUniformBufferStaticBindings InUniformBuffers)
pure virtual

◆ RHISetUniformBufferDynamicOffset()

virtual void IRHIComputeContext::RHISetUniformBufferDynamicOffset ( FUniformBufferStaticSlot  Slot,
uint32  Offset 
)
inlinevirtual

◆ RHIWriteGPUFence()

virtual void IRHIComputeContext::RHIWriteGPUFence ( FRHIGPUFence FenceRHI)
inlinevirtual

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 in FVulkanCommandListContext, FD3D11DynamicRHI, FMetalRHICommandContext, and FOpenGLDynamicRHI.

◆ SetExecutingCommandList()

virtual void IRHIComputeContext::SetExecutingCommandList ( FRHICommandListBase InCmdList)
inlinevirtual

Reimplemented in FD3D12CommandContextRedirector.

◆ SetTrackedAccess()

void IRHIComputeContext::SetTrackedAccess ( const FRHITrackedAccessInfo Info)
inline

Member Data Documentation

◆ StatEvent

UE::RHI::GPUProfiler::FEvent::FStats IRHIComputeContext::StatEvent {}
protected

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