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

#include <RenderGraphPass.h>

+ Inheritance diagram for FRDGPass:

Classes

struct  FBufferState
 
struct  FExternalAccessOp
 
struct  FTextureState
 

Public Member Functions

RENDERCORE_API FRDGPass (FRDGEventName &&InName, FRDGParameterStruct InParameterStruct, ERDGPassFlags InFlags, ERDGPassTaskMode InTaskMode)
 
 FRDGPass (const FRDGPass &)=delete
 
virtual ~FRDGPass ()=default
 
RENDERCORE_API const TCHARGetName () const
 
const FRDGEventNameGetEventName () const
 
ERDGPassFlags GetFlags () const
 
ERHIPipeline GetPipeline () const
 
FRDGParameterStruct GetParameters () const
 
FRDGPassHandle GetHandle () const
 
uint32 GetWorkload () const
 
ERDGPassTaskMode GetTaskMode () const
 
bool IsParallelExecuteAllowed () const
 
bool IsMergedRenderPassBegin () const
 
bool IsMergedRenderPassEnd () const
 
bool SkipRenderPassBegin () const
 
bool SkipRenderPassEnd () const
 
bool IsAsyncCompute () const
 
bool IsAsyncComputeBegin () const
 
bool IsAsyncComputeEnd () const
 
bool IsGraphicsFork () const
 
bool IsGraphicsJoin () const
 
bool IsCulled () const
 
bool IsSentinel () const
 
FRDGPassHandle GetGraphicsForkPass () const
 
FRDGPassHandle GetGraphicsJoinPass () const
 
FRDGScope const * GetScope () const
 
FRHIGPUMask GetGPUMask () const
 

Protected Member Functions

RENDERCORE_API FRDGBarrierBatchBeginGetPrologueBarriersToBegin (FRDGAllocator &Allocator, FRDGTransitionCreateQueue &CreateQueue)
 
RENDERCORE_API FRDGBarrierBatchBeginGetEpilogueBarriersToBeginForGraphics (FRDGAllocator &Allocator, FRDGTransitionCreateQueue &CreateQueue)
 
RENDERCORE_API FRDGBarrierBatchBeginGetEpilogueBarriersToBeginForAsyncCompute (FRDGAllocator &Allocator, FRDGTransitionCreateQueue &CreateQueue)
 
RENDERCORE_API FRDGBarrierBatchBeginGetEpilogueBarriersToBeginForAll (FRDGAllocator &Allocator, FRDGTransitionCreateQueue &CreateQueue)
 
FRDGBarrierBatchBeginGetEpilogueBarriersToBeginFor (FRDGAllocator &Allocator, FRDGTransitionCreateQueue &CreateQueue, ERHIPipeline PipelineForEnd)
 
RENDERCORE_API FRDGBarrierBatchEndGetPrologueBarriersToEnd (FRDGAllocator &Allocator)
 
RENDERCORE_API FRDGBarrierBatchEndGetEpilogueBarriersToEnd (FRDGAllocator &Allocator)
 
virtual void Execute (FRHIComputeCommandList &RHICmdList)
 
virtual void LaunchDispatchPassTasks (FRDGDispatchPassBuilder &DispatchPassBuilder)
 
 IF_RDG_ENABLE_DEBUG (FString FullPathIfDebug)
 

Protected Attributes

const FRDGEventName Name
 
const FRDGParameterStruct ParameterStruct
 
const ERDGPassFlags Flags
 
const ERDGPassTaskMode TaskMode
 
const ERHIPipeline Pipeline
 
FRDGPassHandle Handle
 
uint32 Workload = 1
 
union { 
 
   struct { 
 
      uint16   bSkipRenderPassBegin: 1 
 
      uint16   bSkipRenderPassEnd: 1 
 
      uint16   bAsyncComputeBegin: 1 
 
      uint16   bAsyncComputeEnd: 1 
 
      uint16   bGraphicsFork: 1 
 
      uint16   bGraphicsJoin: 1 
 
      uint16   bRenderPassOnlyWrites: 1 
 
      uint16   bSentinel: 1 
 
      uint16   bDispatchAfterExecute: 1 
 
      uint16   bDispatchPass: 1 
 
   }  
 
   uint16   PackedBits = 0 
 
};  
 
union { 
 
   struct { 
 
      uint8   bEmptyParameters: 1 
 
      uint8   bHasExternalOutputs: 1 
 
      uint8   bCulled: 1 
 
      uint8   bExternalAccessPass: 1 
 
   }  
 
   uint8   PacketBits_AsyncSetupQueue = 0 
 
};  
 
union { 
 
   struct { 
 
      uint8   bParallelExecuteBegin: 1 
 
      uint8   bParallelExecuteEnd: 1 
 
      uint8   bParallelExecute: 1 
 
   }  
 
   uint8   PacketBits_ParallelExecute = 0 
 
};  
 
FRDGPassHandle CrossPipelineProducer
 
FRDGPassHandle GraphicsForkPass
 
FRDGPassHandle GraphicsJoinPass
 
FRDGPassHandle PrologueBarrierPass
 
FRDGPassHandle EpilogueBarrierPass
 
uint32 NumTransitionsToReserve = 0
 
TArray< FRDGPassHandle, FRDGArrayAllocatorCrossPipelineConsumers
 
TArray< FRDGPass *, FRDGArrayAllocatorProducers
 
TArray< FTextureState, FRDGArrayAllocatorTextureStates
 
TArray< FBufferState, FRDGArrayAllocatorBufferStates
 
TArray< FRDGViewHandle, FRDGArrayAllocatorViews
 
TArray< FRDGUniformBufferHandle, FRDGArrayAllocatorUniformBuffers
 
TArray< FExternalAccessOp, FRDGArrayAllocatorExternalAccessOps
 
TArray< FRDGPass *, TInlineAllocator< 1, FRDGArrayAllocator > > ResourcesToBegin
 
TArray< FRDGPass *, TInlineAllocator< 1, FRDGArrayAllocator > > ResourcesToEnd
 
FRDGBarrierBatchBeginPrologueBarriersToBegin = nullptr
 
FRDGBarrierBatchEndPrologueBarriersToEnd = nullptr
 
FRDGBarrierBatchBeginEpilogueBarriersToBeginForGraphics = nullptr
 
FRDGBarrierBatchBeginEpilogueBarriersToBeginForAsyncCompute = nullptr
 
FRDGBarrierBatchBeginEpilogueBarriersToBeginForAll = nullptr
 
TArray< FRDGBarrierBatchBegin *, FRDGArrayAllocatorSharedEpilogueBarriersToBegin
 
FRDGBarrierBatchEndEpilogueBarriersToEnd = nullptr
 
uint32 ParallelPassSetIndex = 0
 
FRDGScopeScope = nullptr
 
friend FRDGBuilder
 
friend FRDGPassRegistry
 
friend FRDGTrace
 
friend FRDGUserValidation
 
friend FRDGDispatchPassBuilder
 

Detailed Description

Base class of a render graph pass.

Constructor & Destructor Documentation

◆ FRDGPass() [1/2]

FRDGPass::FRDGPass ( FRDGEventName &&  InName,
FRDGParameterStruct  InParameterStruct,
ERDGPassFlags  InFlags,
ERDGPassTaskMode  InTaskMode 
)

◆ FRDGPass() [2/2]

FRDGPass::FRDGPass ( const FRDGPass )
delete

◆ ~FRDGPass()

virtual FRDGPass::~FRDGPass ( )
virtualdefault

Member Function Documentation

◆ Execute()

virtual void FRDGPass::Execute ( FRHIComputeCommandList RHICmdList)
inlineprotectedvirtual

◆ GetEpilogueBarriersToBeginFor()

FRDGBarrierBatchBegin & FRDGPass::GetEpilogueBarriersToBeginFor ( FRDGAllocator Allocator,
FRDGTransitionCreateQueue CreateQueue,
ERHIPipeline  PipelineForEnd 
)
inlineprotected

◆ GetEpilogueBarriersToBeginForAll()

FRDGBarrierBatchBegin & FRDGPass::GetEpilogueBarriersToBeginForAll ( FRDGAllocator Allocator,
FRDGTransitionCreateQueue CreateQueue 
)
protected

◆ GetEpilogueBarriersToBeginForAsyncCompute()

FRDGBarrierBatchBegin & FRDGPass::GetEpilogueBarriersToBeginForAsyncCompute ( FRDGAllocator Allocator,
FRDGTransitionCreateQueue CreateQueue 
)
protected

◆ GetEpilogueBarriersToBeginForGraphics()

FRDGBarrierBatchBegin & FRDGPass::GetEpilogueBarriersToBeginForGraphics ( FRDGAllocator Allocator,
FRDGTransitionCreateQueue CreateQueue 
)
protected

◆ GetEpilogueBarriersToEnd()

FRDGBarrierBatchEnd & FRDGPass::GetEpilogueBarriersToEnd ( FRDGAllocator Allocator)
protected

◆ GetEventName()

const FRDGEventName & FRDGPass::GetEventName ( ) const
inline

◆ GetFlags()

ERDGPassFlags FRDGPass::GetFlags ( ) const
inline

◆ GetGPUMask()

FRHIGPUMask FRDGPass::GetGPUMask ( ) const
inline

◆ GetGraphicsForkPass()

FRDGPassHandle FRDGPass::GetGraphicsForkPass ( ) const
inline

Returns the graphics pass responsible for forking the async interval this pass is in.

◆ GetGraphicsJoinPass()

FRDGPassHandle FRDGPass::GetGraphicsJoinPass ( ) const
inline

Returns the graphics pass responsible for joining the async interval this pass is in.

◆ GetHandle()

FRDGPassHandle FRDGPass::GetHandle ( ) const
inline

◆ GetName()

RENDERCORE_API const TCHAR * FRDGPass::GetName ( ) const

◆ GetParameters()

FRDGParameterStruct FRDGPass::GetParameters ( ) const
inline

◆ GetPipeline()

ERHIPipeline FRDGPass::GetPipeline ( ) const
inline

◆ GetPrologueBarriersToBegin()

FRDGBarrierBatchBegin & FRDGPass::GetPrologueBarriersToBegin ( FRDGAllocator Allocator,
FRDGTransitionCreateQueue CreateQueue 
)
protected

◆ GetPrologueBarriersToEnd()

FRDGBarrierBatchEnd & FRDGPass::GetPrologueBarriersToEnd ( FRDGAllocator Allocator)
protected

◆ GetScope()

FRDGScope const * FRDGPass::GetScope ( ) const
inline

◆ GetTaskMode()

ERDGPassTaskMode FRDGPass::GetTaskMode ( ) const
inline

◆ GetWorkload()

uint32 FRDGPass::GetWorkload ( ) const
inline

◆ IF_RDG_ENABLE_DEBUG()

FRDGPass::IF_RDG_ENABLE_DEBUG ( FString  FullPathIfDebug)
protected

◆ IsAsyncCompute()

bool FRDGPass::IsAsyncCompute ( ) const
inline

◆ IsAsyncComputeBegin()

bool FRDGPass::IsAsyncComputeBegin ( ) const
inline

◆ IsAsyncComputeEnd()

bool FRDGPass::IsAsyncComputeEnd ( ) const
inline

◆ IsCulled()

bool FRDGPass::IsCulled ( ) const
inline

◆ IsGraphicsFork()

bool FRDGPass::IsGraphicsFork ( ) const
inline

◆ IsGraphicsJoin()

bool FRDGPass::IsGraphicsJoin ( ) const
inline

◆ IsMergedRenderPassBegin()

bool FRDGPass::IsMergedRenderPassBegin ( ) const
inline

◆ IsMergedRenderPassEnd()

bool FRDGPass::IsMergedRenderPassEnd ( ) const
inline

◆ IsParallelExecuteAllowed()

bool FRDGPass::IsParallelExecuteAllowed ( ) const
inline

◆ IsSentinel()

bool FRDGPass::IsSentinel ( ) const
inline

◆ LaunchDispatchPassTasks()

virtual void FRDGPass::LaunchDispatchPassTasks ( FRDGDispatchPassBuilder DispatchPassBuilder)
inlineprotectedvirtual

◆ SkipRenderPassBegin()

bool FRDGPass::SkipRenderPassBegin ( ) const
inline

◆ SkipRenderPassEnd()

bool FRDGPass::SkipRenderPassEnd ( ) const
inline

Member Data Documentation

◆ [union]

union { ... } FRDGPass

◆ [union]

union { ... } FRDGPass

◆ [union]

union { ... } FRDGPass

◆ bAsyncComputeBegin

uint16 FRDGPass::bAsyncComputeBegin

(AsyncCompute only) Whether this is the first / last async compute pass in an async interval.

◆ bAsyncComputeEnd

uint16 FRDGPass::bAsyncComputeEnd

◆ bCulled

uint8 FRDGPass::bCulled

Whether this pass has been culled.

◆ bDispatchAfterExecute

uint16 FRDGPass::bDispatchAfterExecute

If set, dispatches to the RHI thread after executing this pass.

◆ bDispatchPass

uint16 FRDGPass::bDispatchPass

If set, this is a dispatch pass.

◆ bEmptyParameters

uint8 FRDGPass::bEmptyParameters

Whether this pass does not contain parameters.

◆ bExternalAccessPass

uint8 FRDGPass::bExternalAccessPass

Whether this pass is used for external access transitions.

◆ bGraphicsFork

uint16 FRDGPass::bGraphicsFork

(Graphics only) Whether this is a graphics fork / join pass.

◆ bGraphicsJoin

uint16 FRDGPass::bGraphicsJoin

◆ bHasExternalOutputs

uint8 FRDGPass::bHasExternalOutputs

Whether this pass has external UAVs that are not tracked by RDG.

◆ bParallelExecute

uint8 FRDGPass::bParallelExecute

If set, marks that a pass is executing in parallel.

◆ bParallelExecuteBegin

uint8 FRDGPass::bParallelExecuteBegin

If set, marks the begin / end of a span of passes executed in parallel in a task.

◆ bParallelExecuteEnd

uint8 FRDGPass::bParallelExecuteEnd

◆ bRenderPassOnlyWrites

uint16 FRDGPass::bRenderPassOnlyWrites

Whether the pass only writes to resources in its render pass.

◆ bSentinel

uint16 FRDGPass::bSentinel

Whether this pass is a sentinel (prologue / epilogue) pass.

◆ bSkipRenderPassBegin

uint16 FRDGPass::bSkipRenderPassBegin

Whether the render pass begin / end should be skipped.

◆ bSkipRenderPassEnd

uint16 FRDGPass::bSkipRenderPassEnd

◆ BufferStates

TArray<FBufferState, FRDGArrayAllocator> FRDGPass::BufferStates
protected

◆ CrossPipelineConsumers

TArray<FRDGPassHandle, FRDGArrayAllocator> FRDGPass::CrossPipelineConsumers
protected

Lists of producer passes and the full list of cross-pipeline consumer passes.

◆ CrossPipelineProducer

FRDGPassHandle FRDGPass::CrossPipelineProducer
protected

Handle of the latest cross-pipeline producer.

◆ EpilogueBarrierPass

FRDGPassHandle FRDGPass::EpilogueBarrierPass
protected

◆ EpilogueBarriersToBeginForAll

FRDGBarrierBatchBegin* FRDGPass::EpilogueBarriersToBeginForAll = nullptr
protected

◆ EpilogueBarriersToBeginForAsyncCompute

FRDGBarrierBatchBegin* FRDGPass::EpilogueBarriersToBeginForAsyncCompute = nullptr
protected

◆ EpilogueBarriersToBeginForGraphics

FRDGBarrierBatchBegin* FRDGPass::EpilogueBarriersToBeginForGraphics = nullptr
protected

◆ EpilogueBarriersToEnd

FRDGBarrierBatchEnd* FRDGPass::EpilogueBarriersToEnd = nullptr
protected

◆ ExternalAccessOps

TArray<FExternalAccessOp, FRDGArrayAllocator> FRDGPass::ExternalAccessOps
protected

◆ Flags

const ERDGPassFlags FRDGPass::Flags
protected

◆ FRDGBuilder

friend FRDGPass::FRDGBuilder
protected

◆ FRDGDispatchPassBuilder

friend FRDGPass::FRDGDispatchPassBuilder
protected

◆ FRDGPassRegistry

friend FRDGPass::FRDGPassRegistry
protected

◆ FRDGTrace

friend FRDGPass::FRDGTrace
protected

◆ FRDGUserValidation

friend FRDGPass::FRDGUserValidation
protected

◆ GraphicsForkPass

FRDGPassHandle FRDGPass::GraphicsForkPass
protected

(AsyncCompute only) Graphics passes which are the fork / join for async compute interval this pass is in.

◆ GraphicsJoinPass

FRDGPassHandle FRDGPass::GraphicsJoinPass
protected

◆ Handle

FRDGPassHandle FRDGPass::Handle
protected

◆ Name

const FRDGEventName FRDGPass::Name
protected

◆ NumTransitionsToReserve

uint32 FRDGPass::NumTransitionsToReserve = 0
protected

Number of transitions to reserve. Basically an estimate of the number of textures / buffers.

◆ PackedBits

uint16 FRDGPass::PackedBits = 0

◆ PacketBits_AsyncSetupQueue

uint8 FRDGPass::PacketBits_AsyncSetupQueue = 0

◆ PacketBits_ParallelExecute

uint8 FRDGPass::PacketBits_ParallelExecute = 0

◆ ParallelPassSetIndex

uint32 FRDGPass::ParallelPassSetIndex = 0
protected

◆ ParameterStruct

const FRDGParameterStruct FRDGPass::ParameterStruct
protected

◆ Pipeline

const ERHIPipeline FRDGPass::Pipeline
protected

◆ Producers

TArray<FRDGPass*, FRDGArrayAllocator> FRDGPass::Producers
protected

◆ PrologueBarrierPass

FRDGPassHandle FRDGPass::PrologueBarrierPass
protected

The passes which are handling the epilogue / prologue barriers meant for this pass.

◆ PrologueBarriersToBegin

FRDGBarrierBatchBegin* FRDGPass::PrologueBarriersToBegin = nullptr
protected

Split-barrier batches at various points of execution of the pass.

◆ PrologueBarriersToEnd

FRDGBarrierBatchEnd* FRDGPass::PrologueBarriersToEnd = nullptr
protected

◆ ResourcesToBegin

TArray<FRDGPass*, TInlineAllocator<1, FRDGArrayAllocator> > FRDGPass::ResourcesToBegin
protected

Lists of pass parameters scheduled for begin during execution of this pass.

◆ ResourcesToEnd

TArray<FRDGPass*, TInlineAllocator<1, FRDGArrayAllocator> > FRDGPass::ResourcesToEnd
protected

◆ Scope

FRDGScope* FRDGPass::Scope = nullptr
protected

◆ SharedEpilogueBarriersToBegin

TArray<FRDGBarrierBatchBegin*, FRDGArrayAllocator> FRDGPass::SharedEpilogueBarriersToBegin
protected

◆ TaskMode

const ERDGPassTaskMode FRDGPass::TaskMode
protected

◆ TextureStates

TArray<FTextureState, FRDGArrayAllocator> FRDGPass::TextureStates
protected

Maps textures / buffers to information on how they are used in the pass.

◆ UniformBuffers

TArray<FRDGUniformBufferHandle, FRDGArrayAllocator> FRDGPass::UniformBuffers
protected

◆ Views

TArray<FRDGViewHandle, FRDGArrayAllocator> FRDGPass::Views
protected

◆ Workload

uint32 FRDGPass::Workload = 1
protected

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