UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RenderGraphPrivate.cpp File Reference

Functions

 CSV_DEFINE_CATEGORY (RDGCount, true)
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_PassCount, TEXT("RDG/PassCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_PassWithParameterCount, TEXT("RDG/PassWithParameterCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_PassCullCount, TEXT("RDG/PassCullCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_RenderPassMergeCount, TEXT("RDG/RenderPassMergeCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_PassDependencyCount, TEXT("RDG/PassDependencyCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_TextureCount, TEXT("RDG/TextureCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_TextureReferenceCount, TEXT("RDG/TextureReferenceCount"))
 
 TRACE_DECLARE_FLOAT_COUNTER (COUNTER_RDG_TextureReferenceAverage, TEXT("RDG/TextureReferenceAverage"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_BufferCount, TEXT("RDG/BufferCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_BufferReferenceCount, TEXT("RDG/BufferReferenceCount"))
 
 TRACE_DECLARE_FLOAT_COUNTER (COUNTER_RDG_BufferReferenceAverage, TEXT("RDG/BufferReferenceAverage"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_ViewCount, TEXT("RDG/ViewCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_TransientTextureCount, TEXT("RDG/TransientTextureCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_TransientBufferCount, TEXT("RDG/TransientBufferCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_TransitionCount, TEXT("RDG/TransitionCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_AliasingCount, TEXT("RDG/AliasingCount"))
 
 TRACE_DECLARE_INT_COUNTER (COUNTER_RDG_TransitionBatchCount, TEXT("RDG/TransitionBatchCount"))
 
 TRACE_DECLARE_MEMORY_COUNTER (COUNTER_RDG_MemoryWatermark, TEXT("RDG/MemoryWatermark"))
 
 DEFINE_STAT (STAT_RDG_PassCount)
 
 DEFINE_STAT (STAT_RDG_PassWithParameterCount)
 
 DEFINE_STAT (STAT_RDG_PassCullCount)
 
 DEFINE_STAT (STAT_RDG_RenderPassMergeCount)
 
 DEFINE_STAT (STAT_RDG_PassDependencyCount)
 
 DEFINE_STAT (STAT_RDG_TextureCount)
 
 DEFINE_STAT (STAT_RDG_TextureReferenceCount)
 
 DEFINE_STAT (STAT_RDG_TextureReferenceAverage)
 
 DEFINE_STAT (STAT_RDG_BufferCount)
 
 DEFINE_STAT (STAT_RDG_BufferReferenceCount)
 
 DEFINE_STAT (STAT_RDG_BufferReferenceAverage)
 
 DEFINE_STAT (STAT_RDG_ViewCount)
 
 DEFINE_STAT (STAT_RDG_TransientTextureCount)
 
 DEFINE_STAT (STAT_RDG_TransientBufferCount)
 
 DEFINE_STAT (STAT_RDG_TransitionCount)
 
 DEFINE_STAT (STAT_RDG_AliasingCount)
 
 DEFINE_STAT (STAT_RDG_TransitionBatchCount)
 
 DEFINE_STAT (STAT_RDG_SetupTime)
 
 DEFINE_STAT (STAT_RDG_CompileTime)
 
 DEFINE_STAT (STAT_RDG_ExecuteTime)
 
 DEFINE_STAT (STAT_RDG_CollectResourcesTime)
 
 DEFINE_STAT (STAT_RDG_CollectBarriersTime)
 
 DEFINE_STAT (STAT_RDG_ClearTime)
 
 DEFINE_STAT (STAT_RDG_FlushRHIResources)
 
 DEFINE_STAT (STAT_RDG_MemoryWatermark)
 
void InitRenderGraph ()
 
void ShutdownRenderGraph ()
 
FORCEINLINE bool IsParallelMobileEnabled ()
 
bool IsParallelExecuteEnabled (EShaderPlatform ShaderPlatform)
 
bool IsParallelSetupEnabled (EShaderPlatform ShaderPlatform)
 
bool IsExtendedLifetimeResource (FRDGViewableResource *Resource)
 

Variables

int32 GRDGAsyncCompute = 1
 
TAutoConsoleVariable< int32CVarRDGAsyncCompute (TEXT("r.RDG.AsyncCompute"), RDG_ASYNC_COMPUTE_ENABLED, TEXT(" 2:enabled for all compute passes implemented to use the compute command list;\n"), ECVF_RenderThreadSafe)
 
FAutoConsoleVariableSink CVarRDGAsyncComputeSink (FConsoleCommandDelegate::CreateLambda([]() { GRDGAsyncCompute=CVarRDGAsyncCompute.GetValueOnGameThread();if(GRDGDebugFlushGPU) { GRDGAsyncCompute=0;} }))
 
int32 GRDGCullPasses = 1
 
FAutoConsoleVariableRef CVarRDGCullPasses (TEXT("r.RDG.CullPasses"), GRDGCullPasses, TEXT(" 1:on(default);\n"), ECVF_RenderThreadSafe)
 
int32 GRDGMergeRenderPasses = 1
 
FAutoConsoleVariableRef CVarRDGMergeRenderPasses (TEXT("r.RDG.MergeRenderPasses"), GRDGMergeRenderPasses, TEXT(" 1:on(default);\n"), ECVF_RenderThreadSafe)
 
int32 GRDGTransientAllocator = 1
 
FAutoConsoleVariableRef CVarRDGUseTransientAllocator (TEXT("r.RDG.TransientAllocator"), GRDGTransientAllocator, TEXT(" 2: enables the transient allocator for resources with FastVRAM flag only"), ECVF_RenderThreadSafe)
 
int32 GRDGTransientExtractedResources = 1
 
FAutoConsoleVariableRef CVarRDGTransientExtractedResource (TEXT("r.RDG.TransientExtractedResources"), GRDGTransientExtractedResources, TEXT(" 2: force enables all external transient resources (not recommended);"), ECVF_RenderThreadSafe)
 
int32 GRDGAsyncComputeTransientAliasing = 1
 
FAutoConsoleVariableRef CVarRDGAsyncComputeTransientAliasing (TEXT("r.RDG.AsyncComputeTransientAliasing"), GRDGAsyncComputeTransientAliasing, TEXT(" 1: enables transient async compute aliasing (default);"), ECVF_RenderThreadSafe)
 
int32 GRDGParallelDestruction = 1
 
FAutoConsoleVariableRef CVarRDGParallelDestruction (TEXT("r.RDG.ParallelDestruction"), GRDGParallelDestruction, TEXT(" 1: graph destruction may be done asynchronously (default);"), ECVF_RenderThreadSafe)
 
int32 GRDGParallelSetup = 1
 
FAutoConsoleVariableRef CVarRDGParallelSetup (TEXT("r.RDG.ParallelSetup"), GRDGParallelSetup, TEXT(" 1: setup tasks are launched (default);"), ECVF_RenderThreadSafe)
 
int32 GRDGParallelCompile = 1
 
FAutoConsoleVariableRef CVarRDGParallelCompile (TEXT("r.RDG.ParallelCompile"), GRDGParallelCompile, TEXT(" 1: compile tasks are launched (default);"), ECVF_RenderThreadSafe)
 
int32 GRDGAsyncSetupQueue = 1
 
FAutoConsoleVariableRef CVarRDGAsyncSetupQueue (TEXT("r.RDG.AsyncSetupQueue"), GRDGAsyncSetupQueue, TEXT(" 1: pass setup is done asynchronously (default);"), ECVF_RenderThreadSafe)
 
int32 GRDGParallelSetupTaskPriorityBias = 1
 
FAutoConsoleVariableRef CVarRDGParallelSetupTaskPriorityBias (TEXT("r.RDG.ParallelSetup.TaskPriorityBias"), GRDGParallelSetupTaskPriorityBias, TEXT("Biases the task priority of all setup tasks. Useful as a tweak when contention from game thread tasks is high."), ECVF_RenderThreadSafe)
 
int32 GRDGParallelExecute = 2
 
FAutoConsoleVariableRef CVarRDGParallelExecute (TEXT("r.RDG.ParallelExecute"), GRDGParallelExecute, TEXT(" 2: parallel with async tasks (default)"), FConsoleVariableDelegate::CreateLambda([](IConsoleVariable *Variable) { if(Variable->GetInt()) { if(GRDGParallelExecutePassMax<=1) { GRDGParallelExecutePassMax=1;} if(GRDGParallelExecutePassMax< GRDGParallelExecutePassMin) { GRDGParallelExecutePassMin=GRDGParallelExecutePassMax;} } }), ECVF_RenderThreadSafe)
 
int32 GRDGParallelExecutePassMin = 1
 
FAutoConsoleVariableRef CVarRDGParallelExecutePassMin (TEXT("r.RDG.ParallelExecute.PassMin"), GRDGParallelExecutePassMin, TEXT("The minimum span of contiguous passes eligible for parallel execution for the span to be offloaded to a task."), ECVF_RenderThreadSafe)
 
int32 GRDGParallelExecutePassMax = 32
 
FAutoConsoleVariableRef CVarRDGParallelExecutePassMax (TEXT("r.RDG.ParallelExecute.PassMax"), GRDGParallelExecutePassMax, TEXT("The maximum span of contiguous passes eligible for parallel execution for the span to be offloaded to a task."), ECVF_RenderThreadSafe)
 
int32 GRDGParallelExecutePassTaskModeThreshold = 2
 
FAutoConsoleVariableRef CVarRDGParallelExecutePassTaskModeThreshold (TEXT("r.RDG.ParallelExecute.PassTaskModeThreshold"), GRDGParallelExecutePassTaskModeThreshold, TEXT(">1: Same as the above, but only if the current batch is larger than the threshold."), ECVF_RenderThreadSafe)
 
int32 GRDGParallelExecuteStress = 0
 
FAutoConsoleVariableRef CVarRDGDebugParallelExecute (TEXT("r.RDG.ParallelExecuteStress"), GRDGParallelExecuteStress, TEXT("Stress tests the parallel execution path by launching one task per pass. Render pass merging is also disabled."), FConsoleVariableDelegate::CreateLambda([](IConsoleVariable *Variable) { static int32 GRDGMergeRenderPassesHistory=GRDGMergeRenderPasses;static int32 GRDGParallelExecutePassMinHistory=GRDGParallelExecutePassMin;static int32 GRDGParallelExecutePassMaxHistory=GRDGParallelExecutePassMax;const int32 CurrentValue=Variable->GetInt();if(GRDGParallelExecuteStress==CurrentValue) { return;} if(CurrentValue) { GRDGMergeRenderPassesHistory=GRDGMergeRenderPasses;GRDGParallelExecutePassMinHistory=GRDGParallelExecutePassMin;GRDGParallelExecutePassMaxHistory=GRDGParallelExecutePassMax;GRDGMergeRenderPasses=0;GRDGParallelExecutePassMin=1;GRDGParallelExecutePassMax=1;} else { GRDGMergeRenderPasses=GRDGMergeRenderPassesHistory;GRDGParallelExecutePassMin=GRDGParallelExecutePassMinHistory;GRDGParallelExecutePassMax=GRDGParallelExecutePassMaxHistory;} }), ECVF_RenderThreadSafe)
 
int32 GRDGParallelMobile = 0
 
FAutoConsoleVariableRef CVarRDGParallelMobile (TEXT("r.RDG.ParallelMobile"), GRDGParallelMobile, TEXT("Enable RDG parallel execution on mobile renderer (disabled by default)."), ECVF_RenderThreadSafe)
 
int32 GRDGTransientIndirectArgBuffers = 0
 RDG_ENABLE_PARALLEL_TASKS.
 
FAutoConsoleVariableRef CVarRDGIndirectArgBufferTransientAllocated (TEXT("r.RDG.TransientAllocator.IndirectArgumentBuffers"), GRDGTransientIndirectArgBuffers, TEXT("Whether indirect argument buffers should use transient resource allocator. Default: 0"), ECVF_RenderThreadSafe)
 

Function Documentation

◆ CSV_DEFINE_CATEGORY()

CSV_DEFINE_CATEGORY ( RDGCount  ,
true   
)

◆ DEFINE_STAT() [1/25]

DEFINE_STAT ( STAT_RDG_AliasingCount  )

◆ DEFINE_STAT() [2/25]

DEFINE_STAT ( STAT_RDG_BufferCount  )

◆ DEFINE_STAT() [3/25]

◆ DEFINE_STAT() [4/25]

DEFINE_STAT ( STAT_RDG_BufferReferenceCount  )

◆ DEFINE_STAT() [5/25]

DEFINE_STAT ( STAT_RDG_ClearTime  )

◆ DEFINE_STAT() [6/25]

DEFINE_STAT ( STAT_RDG_CollectBarriersTime  )

◆ DEFINE_STAT() [7/25]

DEFINE_STAT ( STAT_RDG_CollectResourcesTime  )

◆ DEFINE_STAT() [8/25]

DEFINE_STAT ( STAT_RDG_CompileTime  )

◆ DEFINE_STAT() [9/25]

DEFINE_STAT ( STAT_RDG_ExecuteTime  )

◆ DEFINE_STAT() [10/25]

DEFINE_STAT ( STAT_RDG_FlushRHIResources  )

◆ DEFINE_STAT() [11/25]

DEFINE_STAT ( STAT_RDG_MemoryWatermark  )

◆ DEFINE_STAT() [12/25]

DEFINE_STAT ( STAT_RDG_PassCount  )

◆ DEFINE_STAT() [13/25]

DEFINE_STAT ( STAT_RDG_PassCullCount  )

◆ DEFINE_STAT() [14/25]

DEFINE_STAT ( STAT_RDG_PassDependencyCount  )

◆ DEFINE_STAT() [15/25]

◆ DEFINE_STAT() [16/25]

DEFINE_STAT ( STAT_RDG_RenderPassMergeCount  )

◆ DEFINE_STAT() [17/25]

DEFINE_STAT ( STAT_RDG_SetupTime  )

◆ DEFINE_STAT() [18/25]

DEFINE_STAT ( STAT_RDG_TextureCount  )

◆ DEFINE_STAT() [19/25]

◆ DEFINE_STAT() [20/25]

DEFINE_STAT ( STAT_RDG_TextureReferenceCount  )

◆ DEFINE_STAT() [21/25]

DEFINE_STAT ( STAT_RDG_TransientBufferCount  )

◆ DEFINE_STAT() [22/25]

DEFINE_STAT ( STAT_RDG_TransientTextureCount  )

◆ DEFINE_STAT() [23/25]

DEFINE_STAT ( STAT_RDG_TransitionBatchCount  )

◆ DEFINE_STAT() [24/25]

DEFINE_STAT ( STAT_RDG_TransitionCount  )

◆ DEFINE_STAT() [25/25]

DEFINE_STAT ( STAT_RDG_ViewCount  )

◆ InitRenderGraph()

void InitRenderGraph ( )

◆ IsExtendedLifetimeResource()

bool IsExtendedLifetimeResource ( FRDGViewableResource Resource)

◆ IsParallelExecuteEnabled()

bool IsParallelExecuteEnabled ( EShaderPlatform  ShaderPlatform)

◆ IsParallelMobileEnabled()

FORCEINLINE bool IsParallelMobileEnabled ( )

◆ IsParallelSetupEnabled()

bool IsParallelSetupEnabled ( EShaderPlatform  ShaderPlatform)

◆ ShutdownRenderGraph()

void ShutdownRenderGraph ( )

◆ TRACE_DECLARE_FLOAT_COUNTER() [1/2]

TRACE_DECLARE_FLOAT_COUNTER ( COUNTER_RDG_BufferReferenceAverage  ,
TEXT("RDG/BufferReferenceAverage"  
)

◆ TRACE_DECLARE_FLOAT_COUNTER() [2/2]

TRACE_DECLARE_FLOAT_COUNTER ( COUNTER_RDG_TextureReferenceAverage  ,
TEXT("RDG/TextureReferenceAverage"  
)

◆ TRACE_DECLARE_INT_COUNTER() [1/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_AliasingCount  ,
TEXT("RDG/AliasingCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [2/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_BufferCount  ,
TEXT("RDG/BufferCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [3/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_BufferReferenceCount  ,
TEXT("RDG/BufferReferenceCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [4/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_PassCount  ,
TEXT("RDG/PassCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [5/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_PassCullCount  ,
TEXT("RDG/PassCullCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [6/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_PassDependencyCount  ,
TEXT("RDG/PassDependencyCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [7/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_PassWithParameterCount  ,
TEXT("RDG/PassWithParameterCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [8/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_RenderPassMergeCount  ,
TEXT("RDG/RenderPassMergeCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [9/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_TextureCount  ,
TEXT("RDG/TextureCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [10/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_TextureReferenceCount  ,
TEXT("RDG/TextureReferenceCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [11/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_TransientBufferCount  ,
TEXT("RDG/TransientBufferCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [12/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_TransientTextureCount  ,
TEXT("RDG/TransientTextureCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [13/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_TransitionBatchCount  ,
TEXT("RDG/TransitionBatchCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [14/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_TransitionCount  ,
TEXT("RDG/TransitionCount"  
)

◆ TRACE_DECLARE_INT_COUNTER() [15/15]

TRACE_DECLARE_INT_COUNTER ( COUNTER_RDG_ViewCount  ,
TEXT("RDG/ViewCount"  
)

◆ TRACE_DECLARE_MEMORY_COUNTER()

TRACE_DECLARE_MEMORY_COUNTER ( COUNTER_RDG_MemoryWatermark  ,
TEXT("RDG/MemoryWatermark"  
)

Variable Documentation

◆ CVarRDGAsyncCompute

TAutoConsoleVariable< int32 > CVarRDGAsyncCompute(TEXT("r.RDG.AsyncCompute"), RDG_ASYNC_COMPUTE_ENABLED, TEXT(" 2:enabled for all compute passes implemented to use the compute command list;\n"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.AsyncCompute")  ,
RDG_ASYNC_COMPUTE_ENABLED  ,
TEXT(" 2:enabled for all compute passes implemented to use the compute command list;\n" ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGAsyncComputeSink

FAutoConsoleVariableSink CVarRDGAsyncComputeSink(FConsoleCommandDelegate::CreateLambda([]() { GRDGAsyncCompute=CVarRDGAsyncCompute.GetValueOnGameThread(); if(GRDGDebugFlushGPU) { GRDGAsyncCompute=0; } })) ( FConsoleCommandDelegate::CreateLambda([](){ GRDGAsyncCompute=CVarRDGAsyncCompute.GetValueOnGameThread();if(GRDGDebugFlushGPU) { GRDGAsyncCompute=0;}})  )

◆ CVarRDGAsyncComputeTransientAliasing

FAutoConsoleVariableRef CVarRDGAsyncComputeTransientAliasing(TEXT("r.RDG.AsyncComputeTransientAliasing"), GRDGAsyncComputeTransientAliasing, TEXT(" 1: enables transient async compute aliasing (default);"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.AsyncComputeTransientAliasing")  ,
GRDGAsyncComputeTransientAliasing  ,
TEXT(" 1: enables transient async compute aliasing (default);")  ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGAsyncSetupQueue

FAutoConsoleVariableRef CVarRDGAsyncSetupQueue(TEXT("r.RDG.AsyncSetupQueue"), GRDGAsyncSetupQueue, TEXT(" 1: pass setup is done asynchronously (default);"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.AsyncSetupQueue")  ,
GRDGAsyncSetupQueue  ,
TEXT(" 1: pass setup is done asynchronously (default);")  ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGCullPasses

FAutoConsoleVariableRef CVarRDGCullPasses(TEXT("r.RDG.CullPasses"), GRDGCullPasses, TEXT(" 1:on(default);\n"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.CullPasses")  ,
GRDGCullPasses  ,
TEXT(" 1:on(default);\n" ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGDebugParallelExecute

FAutoConsoleVariableRef CVarRDGDebugParallelExecute(TEXT("r.RDG.ParallelExecuteStress"), GRDGParallelExecuteStress, TEXT("Stress tests the parallel execution path by launching one task per pass. Render pass merging is also disabled."), FConsoleVariableDelegate::CreateLambda([](IConsoleVariable *Variable) { static int32 GRDGMergeRenderPassesHistory=GRDGMergeRenderPasses; static int32 GRDGParallelExecutePassMinHistory=GRDGParallelExecutePassMin; static int32 GRDGParallelExecutePassMaxHistory=GRDGParallelExecutePassMax; const int32 CurrentValue=Variable->GetInt(); if(GRDGParallelExecuteStress==CurrentValue) { return; } if(CurrentValue) { GRDGMergeRenderPassesHistory=GRDGMergeRenderPasses; GRDGParallelExecutePassMinHistory=GRDGParallelExecutePassMin; GRDGParallelExecutePassMaxHistory=GRDGParallelExecutePassMax; GRDGMergeRenderPasses=0; GRDGParallelExecutePassMin=1; GRDGParallelExecutePassMax=1; } else { GRDGMergeRenderPasses=GRDGMergeRenderPassesHistory; GRDGParallelExecutePassMin=GRDGParallelExecutePassMinHistory; GRDGParallelExecutePassMax=GRDGParallelExecutePassMaxHistory; } }), ECVF_RenderThreadSafe) ( TEXT("r.RDG.ParallelExecuteStress")  ,
GRDGParallelExecuteStress  ,
TEXT("Stress tests the parallel execution path by launching one task per pass. Render pass merging is also disabled." ,
FConsoleVariableDelegate::CreateLambda([](IConsoleVariable *Variable) { static int32 GRDGMergeRenderPassesHistory=GRDGMergeRenderPasses; static int32 GRDGParallelExecutePassMinHistory=GRDGParallelExecutePassMin; static int32 GRDGParallelExecutePassMaxHistory=GRDGParallelExecutePassMax; const int32 CurrentValue=Variable->GetInt(); if(GRDGParallelExecuteStress==CurrentValue) { return; } if(CurrentValue) { GRDGMergeRenderPassesHistory=GRDGMergeRenderPasses; GRDGParallelExecutePassMinHistory=GRDGParallelExecutePassMin; GRDGParallelExecutePassMaxHistory=GRDGParallelExecutePassMax; GRDGMergeRenderPasses=0; GRDGParallelExecutePassMin=1; GRDGParallelExecutePassMax=1; } else { GRDGMergeRenderPasses=GRDGMergeRenderPassesHistory; GRDGParallelExecutePassMin=GRDGParallelExecutePassMinHistory; GRDGParallelExecutePassMax=GRDGParallelExecutePassMaxHistory; } })  ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGIndirectArgBufferTransientAllocated

FAutoConsoleVariableRef CVarRDGIndirectArgBufferTransientAllocated(TEXT("r.RDG.TransientAllocator.IndirectArgumentBuffers"), GRDGTransientIndirectArgBuffers, TEXT("Whether indirect argument buffers should use transient resource allocator. Default: 0"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.TransientAllocator.IndirectArgumentBuffers")  ,
GRDGTransientIndirectArgBuffers  ,
TEXT("Whether indirect argument buffers should use transient resource allocator. Default: 0")  ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGMergeRenderPasses

FAutoConsoleVariableRef CVarRDGMergeRenderPasses(TEXT("r.RDG.MergeRenderPasses"), GRDGMergeRenderPasses, TEXT(" 1:on(default);\n"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.MergeRenderPasses")  ,
GRDGMergeRenderPasses  ,
TEXT(" 1:on(default);\n" ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGParallelCompile

FAutoConsoleVariableRef CVarRDGParallelCompile(TEXT("r.RDG.ParallelCompile"), GRDGParallelCompile, TEXT(" 1: compile tasks are launched (default);"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.ParallelCompile")  ,
GRDGParallelCompile  ,
TEXT(" 1: compile tasks are launched (default);")  ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGParallelDestruction

FAutoConsoleVariableRef CVarRDGParallelDestruction(TEXT("r.RDG.ParallelDestruction"), GRDGParallelDestruction, TEXT(" 1: graph destruction may be done asynchronously (default);"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.ParallelDestruction")  ,
GRDGParallelDestruction  ,
TEXT(" 1: graph destruction may be done asynchronously (default);")  ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGParallelExecute

FAutoConsoleVariableRef CVarRDGParallelExecute(TEXT("r.RDG.ParallelExecute"), GRDGParallelExecute, TEXT(" 2: parallel with async tasks (default)"), FConsoleVariableDelegate::CreateLambda([](IConsoleVariable *Variable) { if(Variable->GetInt()) { if(GRDGParallelExecutePassMax<=1) { GRDGParallelExecutePassMax=1; } if(GRDGParallelExecutePassMax< GRDGParallelExecutePassMin) { GRDGParallelExecutePassMin=GRDGParallelExecutePassMax; } } }), ECVF_RenderThreadSafe) ( TEXT("r.RDG.ParallelExecute")  ,
GRDGParallelExecute  ,
TEXT(" 2: parallel with async tasks (default)")  ,
FConsoleVariableDelegate::CreateLambda([](IConsoleVariable *Variable) { if(Variable->GetInt()) { if(GRDGParallelExecutePassMax<=1) { GRDGParallelExecutePassMax=1; } if(GRDGParallelExecutePassMax< GRDGParallelExecutePassMin) { GRDGParallelExecutePassMin=GRDGParallelExecutePassMax; } } })  ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGParallelExecutePassMax

FAutoConsoleVariableRef CVarRDGParallelExecutePassMax(TEXT("r.RDG.ParallelExecute.PassMax"), GRDGParallelExecutePassMax, TEXT("The maximum span of contiguous passes eligible for parallel execution for the span to be offloaded to a task."), ECVF_RenderThreadSafe) ( TEXT("r.RDG.ParallelExecute.PassMax")  ,
GRDGParallelExecutePassMax  ,
TEXT("The maximum span of contiguous passes eligible for parallel execution for the span to be offloaded to a task." ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGParallelExecutePassMin

FAutoConsoleVariableRef CVarRDGParallelExecutePassMin(TEXT("r.RDG.ParallelExecute.PassMin"), GRDGParallelExecutePassMin, TEXT("The minimum span of contiguous passes eligible for parallel execution for the span to be offloaded to a task."), ECVF_RenderThreadSafe) ( TEXT("r.RDG.ParallelExecute.PassMin")  ,
GRDGParallelExecutePassMin  ,
TEXT("The minimum span of contiguous passes eligible for parallel execution for the span to be offloaded to a task." ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGParallelExecutePassTaskModeThreshold

FAutoConsoleVariableRef CVarRDGParallelExecutePassTaskModeThreshold(TEXT("r.RDG.ParallelExecute.PassTaskModeThreshold"), GRDGParallelExecutePassTaskModeThreshold, TEXT(">1: Same as the above, but only if the current batch is larger than the threshold."), ECVF_RenderThreadSafe) ( TEXT("r.RDG.ParallelExecute.PassTaskModeThreshold")  ,
GRDGParallelExecutePassTaskModeThreshold  ,
TEXT(">1: Same as the above, but only if the current batch is larger than the threshold." ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGParallelMobile

FAutoConsoleVariableRef CVarRDGParallelMobile(TEXT("r.RDG.ParallelMobile"), GRDGParallelMobile, TEXT("Enable RDG parallel execution on mobile renderer (disabled by default)."), ECVF_RenderThreadSafe) ( TEXT("r.RDG.ParallelMobile")  ,
GRDGParallelMobile  ,
TEXT("Enable RDG parallel execution on mobile renderer (disabled by default).")  ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGParallelSetup

FAutoConsoleVariableRef CVarRDGParallelSetup(TEXT("r.RDG.ParallelSetup"), GRDGParallelSetup, TEXT(" 1: setup tasks are launched (default);"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.ParallelSetup")  ,
GRDGParallelSetup  ,
TEXT(" 1: setup tasks are launched (default);")  ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGParallelSetupTaskPriorityBias

FAutoConsoleVariableRef CVarRDGParallelSetupTaskPriorityBias(TEXT("r.RDG.ParallelSetup.TaskPriorityBias"), GRDGParallelSetupTaskPriorityBias, TEXT("Biases the task priority of all setup tasks. Useful as a tweak when contention from game thread tasks is high."), ECVF_RenderThreadSafe) ( TEXT("r.RDG.ParallelSetup.TaskPriorityBias")  ,
GRDGParallelSetupTaskPriorityBias  ,
TEXT("Biases the task priority of all setup tasks. Useful as a tweak when contention from game thread tasks is high." ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGTransientExtractedResource

FAutoConsoleVariableRef CVarRDGTransientExtractedResource(TEXT("r.RDG.TransientExtractedResources"), GRDGTransientExtractedResources, TEXT(" 2: force enables all external transient resources (not recommended);"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.TransientExtractedResources")  ,
GRDGTransientExtractedResources  ,
TEXT(" 2: force enables all external transient resources (not recommended);")  ,
ECVF_RenderThreadSafe   
)

◆ CVarRDGUseTransientAllocator

FAutoConsoleVariableRef CVarRDGUseTransientAllocator(TEXT("r.RDG.TransientAllocator"), GRDGTransientAllocator, TEXT(" 2: enables the transient allocator for resources with FastVRAM flag only"), ECVF_RenderThreadSafe) ( TEXT("r.RDG.TransientAllocator")  ,
GRDGTransientAllocator  ,
TEXT(" 2: enables the transient allocator for resources with FastVRAM flag only" ,
ECVF_RenderThreadSafe   
)

◆ GRDGAsyncCompute

int32 GRDGAsyncCompute = 1

◆ GRDGAsyncComputeTransientAliasing

int32 GRDGAsyncComputeTransientAliasing = 1

◆ GRDGAsyncSetupQueue

int32 GRDGAsyncSetupQueue = 1

◆ GRDGCullPasses

int32 GRDGCullPasses = 1

◆ GRDGMergeRenderPasses

int32 GRDGMergeRenderPasses = 1

◆ GRDGParallelCompile

int32 GRDGParallelCompile = 1

◆ GRDGParallelDestruction

int32 GRDGParallelDestruction = 1

◆ GRDGParallelExecute

int32 GRDGParallelExecute = 2

◆ GRDGParallelExecutePassMax

int32 GRDGParallelExecutePassMax = 32

◆ GRDGParallelExecutePassMin

int32 GRDGParallelExecutePassMin = 1

◆ GRDGParallelExecutePassTaskModeThreshold

int32 GRDGParallelExecutePassTaskModeThreshold = 2

◆ GRDGParallelExecuteStress

int32 GRDGParallelExecuteStress = 0

◆ GRDGParallelMobile

int32 GRDGParallelMobile = 0

◆ GRDGParallelSetup

int32 GRDGParallelSetup = 1

◆ GRDGParallelSetupTaskPriorityBias

int32 GRDGParallelSetupTaskPriorityBias = 1

◆ GRDGTransientAllocator

int32 GRDGTransientAllocator = 1

◆ GRDGTransientExtractedResources

int32 GRDGTransientExtractedResources = 1

◆ GRDGTransientIndirectArgBuffers

int32 GRDGTransientIndirectArgBuffers = 0

RDG_ENABLE_PARALLEL_TASKS.