|
| | 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) |
| |
|
| int32 | GRDGAsyncCompute = 1 |
| |
| 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) |
| |
| 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) |
| |