96 NumElementsCallbackBuffers.Emplace(
Buffer);
139template <
typename PODType>
145template <
typename PODType>
151template <
typename PODType>
157template <
typename ObjectType,
typename...
TArgs>
163template <
typename ObjectType>
169template <
typename ParameterStructType>
175template <
typename ParameterStructType>
183template <
typename BaseParameterStructType>
189template <
typename BaseParameterStructType>
233template <
typename ParameterStructType>
248template <
typename ParameterStructType,
typename ExecuteLambdaType>
249FRDGPass* FRDGBuilder::AddPassInternal(
258 FlushAccessModeQueue();
269 SetupParameterPass(
Pass);
274template <
typename ExecuteLambdaType>
284 FlushAccessModeQueue();
286 SetupEmptyPass(
Pass);
294template <
typename ExecuteLambdaType>
298 const void* ParameterStruct,
310template <
typename ParameterStructType,
typename ExecuteLambdaType>
325template <
typename ParameterStructType,
typename LaunchLambdaType>
343 FlushAccessModeQueue();
356 DispatchPasses.Emplace(
Pass);
357 SetupParameterPass(
Pass);
367 Pass->Workload = Workload;
372 bInitialAsyncComputeFence =
false;
387 Buffer->bQueuedForUpload = 1;
400 Buffer->bQueuedForUpload = 1;
408 Buffer->bQueuedForUpload = 1;
416 Buffer->bQueuedForUpload = 1;
424 Buffer->bQueuedForUpload = 1;
430 if (!AsyncSetupQueue.bEnabled)
432 Buffer->PendingCommitSize = CommitSizeInBytes;
436 AsyncSetupQueue.Push(FAsyncSetupOp::ReservedBufferCommit(
Buffer, CommitSizeInBytes));
438 Buffer->PooledBuffer->SetCommittedSize(CommitSizeInBytes);
473 AsyncSetupQueue.Push(FAsyncSetupOp::CullRootTexture(
Texture));
485 Buffer->bExtracted =
true;
486 Buffer->bForceNonTransient =
true;
491 AsyncSetupQueue.Push(FAsyncSetupOp::CullRootBuffer(
Buffer));
507 else if (Passes.
Num() > 0)
509 Passes[Passes.
Last()]->bDispatchAfterExecute = 1;
513template <
typename TaskLambdaType>
519template <
typename TaskLambdaType>
525template <
typename TaskLambdaType>
536template <
typename TaskLambdaType,
typename PrerequisitesCollectionType>
554 if (!
Task.IsCompleted())
565 return Task.IsCompleted();
571 if (!
Tasks.IsEmpty())
584template <
typename TaskLambdaType,
typename PrerequisitesCollectionType>
608 const bool bParallelEnabled = bCompiling ? bParallelCompileEnabled : ParallelSetup.bEnabled;
631template <
typename TaskLambdaType>
637template <
typename TaskLambdaType>
643template <
typename TaskLambdaType>
654template <
typename TaskLambdaType,
typename PrerequisitesCollectionType>
665template <
typename TaskLambdaType,
typename PrerequisitesCollectionType>
681 const bool bParallelEnabled = bCompiling ? bParallelCompileEnabled : ParallelSetup.bEnabled;
744 return Buffer->Allocation;
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define checkNoEntry()
Definition AssertionMacros.h:316
@ EParallelRenderingThread
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
ERHIAccess
Definition RHIAccess.h:11
#define SHADER_PARAMETER_STRUCT_ALIGNMENT
Definition RHIDefinitions.h:25
uint32 GetMax2DTextureDimension()
Definition RHIGlobals.h:935
#define IF_RDG_ENABLE_TRACE(Op)
Definition RenderGraphDefinitions.h:31
ERDGTextureFlags
Definition RenderGraphDefinitions.h:185
#define IF_RDG_ENABLE_DEBUG(Op)
Definition RenderGraphDefinitions.h:17
ERDGPassFlags
Definition RenderGraphDefinitions.h:128
ERDGBufferFlags
Definition RenderGraphDefinitions.h:163
ERDGUnorderedAccessViewFlags
Definition RenderGraphDefinitions.h:221
ERDGSetupTaskWaitPoint
Definition RenderGraphDefinitions.h:209
ERDGResourceExtractionFlags
Definition RenderGraphDefinitions.h:263
ERDGInitialDataFlags
Definition RenderGraphDefinitions.h:274
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition RenderGraphResources.h:1426
Definition RenderGraphResources.h:1452
Definition RenderGraphResources.h:1321
FRDGBuffer * FindExternalBuffer(FRHIBuffer *Buffer) const
Definition RenderGraphBuilder.inl:23
const TRefCountPtr< FRDGPooledBuffer > & GetPooledBuffer(FRDGBufferRef Buffer) const
Definition RenderGraphBuilder.inl:741
void QueueBufferExtraction(FRDGBufferRef Buffer, TRefCountPtr< FRDGPooledBuffer > *OutPooledBufferPtr)
Definition RenderGraphBuilder.inl:477
const TRefCountPtr< IPooledRenderTarget > & GetPooledTexture(FRDGTextureRef Texture) const
Definition RenderGraphBuilder.inl:735
void SkipInitialAsyncComputeFence()
Definition RenderGraphBuilder.inl:370
void SetBufferAccessFinal(FRDGBufferRef Buffer, ERHIAccess Access)
Definition RenderGraphBuilder.inl:753
FRDGPassRef AddDispatchPass(FRDGEventName &&Name, const ParameterStructType *ParameterStruct, ERDGPassFlags Flags, LaunchLambdaType &&LaunchLambda)
FRDGTextureUAVRef CreateUAV(const FRDGTextureUAVDesc &Desc, ERDGUnorderedAccessViewFlags Flags=ERDGUnorderedAccessViewFlags::None)
Definition RenderGraphBuilder.inl:118
void SetPassWorkload(FRDGPass *Pass, uint32 Workload)
Definition RenderGraphBuilder.inl:365
UE::Tasks::FTask AddCommandListSetupTask(TaskLambda &&Task, bool bCondition=true, ERDGSetupTaskWaitPoint WaitPoint=ERDGSetupTaskWaitPoint::Compile)
static RENDERCORE_API bool IsImmediateMode()
Definition RenderGraphBuilder.cpp:457
void QueueTextureExtraction(FRDGTextureRef Texture, TRefCountPtr< IPooledRenderTarget > *OutPooledTexturePtr, ERDGResourceExtractionFlags Flags=ERDGResourceExtractionFlags::None)
Definition RenderGraphBuilder.inl:447
TArrayView< PODType > AllocPODArrayView(uint32 Count)
Definition RenderGraphBuilder.inl:152
ObjectType * AllocObject(TArgs &&... Args)
Definition RenderGraphBuilder.inl:158
TArray< ObjectType, SceneRenderingAllocator > & AllocArray()
Definition RenderGraphBuilder.inl:164
FRDGBufferRef CreateBuffer(const FRDGBufferDesc &Desc, const TCHAR *Name, ERDGBufferFlags Flags=ERDGBufferFlags::None)
Definition RenderGraphBuilder.inl:65
PODType * AllocPOD()
Definition RenderGraphBuilder.inl:140
FRDGTextureRef CreateTexture(const FRDGTextureDesc &Desc, const TCHAR *Name, ERDGTextureFlags Flags=ERDGTextureFlags::None)
Definition RenderGraphBuilder.inl:41
TRDGUniformBufferRef< ParameterStructType > CreateUniformBuffer(const ParameterStructType *ParameterStruct)
Definition RenderGraphBuilder.inl:234
ParameterStructType * AllocParameters()
Definition RenderGraphBuilder.inl:170
FRDGPassRef AddPass(FRDGEventName &&Name, const ParameterStructType *ParameterStruct, ERDGPassFlags Flags, ExecuteLambdaType &&ExecuteLambda)
void AddDispatchHint()
Definition RenderGraphBuilder.inl:501
PODType * AllocPODArray(uint32 Count)
Definition RenderGraphBuilder.inl:146
void QueueBufferUpload(FRDGBufferRef Buffer, const void *InitialData, uint64 InitialDataSize, ERDGInitialDataFlags InitialDataFlags=ERDGInitialDataFlags::None)
Definition RenderGraphBuilder.inl:375
UE::Tasks::FTask AddSetupTask(TaskLambda &&Task, bool bCondition=true, ERDGSetupTaskWaitPoint WaitPoint=ERDGSetupTaskWaitPoint::Compile)
FRDGTextureSRVRef CreateSRV(const FRDGTextureSRVDesc &Desc)
Definition RenderGraphBuilder.inl:102
FRDGTexture * FindExternalTexture(FRHITexture *Texture) const
Definition RenderGraphBuilder.inl:5
void SetTextureAccessFinal(FRDGTextureRef Texture, ERHIAccess Access)
Definition RenderGraphBuilder.inl:747
void QueueCommitReservedBuffer(FRDGBufferRef Buffer, uint64 CommitSizeInBytes)
Definition RenderGraphBuilder.inl:427
void * Alloc(uint64 SizeInBytes, uint32 AlignInBytes=16)
Definition RenderGraphBuilder.inl:134
Definition RenderGraphPass.h:714
Definition RenderGraphEvent.h:38
static void ClearUniformBuffers(void *Contents, const FRHIUniformBufferLayout *Layout)
Definition RenderGraphParameters.inl:61
Definition RenderGraphPass.h:217
Definition RenderGraphResources.h:1196
const TCHAR *const Name
Definition RenderGraphResources.h:137
FRDGAllocator Task
Definition RenderGraphEvent.h:608
struct FRDGScopeState::@1708 Allocators
FRHICommandListImmediate & RHICmdList
Definition RenderGraphEvent.h:622
Definition RenderGraphResources.h:747
FRDGTextureRef Texture
Definition RenderGraphResources.h:833
Definition RenderGraphResources.h:839
Definition RenderGraphResources.h:867
FRDGTextureRef Texture
Definition RenderGraphResources.h:899
Definition RenderGraphResources.h:905
Definition RenderGraphResources.h:571
RENDERCORE_API void ValidateCreateUAV(const FRDGTextureUAVDesc &Desc)
RENDERCORE_API void ValidateExtractBuffer(FRDGBufferRef Buffer, TRefCountPtr< FRDGPooledBuffer > *OutBufferPtr)
RENDERCORE_API void ValidateExtractTexture(FRDGTextureRef Texture, TRefCountPtr< IPooledRenderTarget > *OutTexturePtr)
RENDERCORE_API void ValidateGetPooledBuffer(FRDGBufferRef Buffer) const
RENDERCORE_API void ValidateSetAccessFinal(FRDGViewableResource *Resource, ERHIAccess AccessFinal)
RENDERCORE_API void ValidateCreateTexture(const FRDGTextureDesc &Desc, const TCHAR *Name, ERDGTextureFlags Flags)
RENDERCORE_API void ValidateUploadBuffer(FRDGBufferRef Buffer, const void *InitialData, uint64 InitialDataSize)
RENDERCORE_API void ValidateCreateBuffer(const FRDGBufferDesc &Desc, const TCHAR *Name, ERDGBufferFlags Flags)
RENDERCORE_API void ValidateGetPooledTexture(FRDGTextureRef Texture) const
RENDERCORE_API void ValidateCreateSRV(const FRDGTextureSRVDesc &Desc)
RENDERCORE_API void ValidateAddPass(const void *ParameterStruct, const FShaderParametersMetadata *Metadata, const FRDGEventName &Name, ERDGPassFlags Flags)
RENDERCORE_API void ValidateCreateUniformBuffer(const void *ParameterStruct, const FShaderParametersMetadata *Metadata)
RENDERCORE_API void ValidateCommitBuffer(FRDGBufferRef Buffer, uint64 CommitSizeInBytes)
Definition RHIResources.h:1581
FRHIGPUMask GetGPUMask() const
Definition RHICommandList.h:734
Definition RHICommandList.h:3819
Definition RHIResources.h:2153
Definition ArrayView.h:139
Definition AndroidPlatformMisc.h:14
Definition RenderGraphPass.h:766
Definition RenderGraphPass.h:799
HandleType Last() const
Definition RenderGraphDefinitions.h:546
int32 Num() const
Definition RenderGraphDefinitions.h:551
DerivedType * Allocate(FRDGAllocator &Allocator, TArgs &&... Args)
Definition RenderGraphDefinitions.h:470
void Insert(ObjectType *Object)
Definition RenderGraphDefinitions.h:463
Definition RenderGraphPass.h:569
Definition RefCounting.h:454
Definition StridedView.h:44
TTask< TInvokeResult_T< TaskBodyType > > Launch(const TCHAR *InDebugName, TaskBodyType &&TaskBody, ETaskPriority Priority=ETaskPriority::Default, EExtendedTaskPriority ExtendedPriority=EExtendedTaskPriority::None, ETaskFlags Flags=ETaskFlags::None)
Definition Pipe.h:64
Definition RenderGraphBuilder.inl:548
bool IsCompleted(const TaskCollectionType &Tasks)
Definition RenderGraphBuilder.inl:550
void Wait(const TaskCollectionType &Tasks)
Definition RenderGraphBuilder.inl:569
EExtendedTaskPriority
Definition TaskPrivate.h:60
TTask< TInvokeResult_T< TaskBodyType > > Launch(const TCHAR *DebugName, TaskBodyType &&TaskBody, ETaskPriority Priority=ETaskPriority::Normal, EExtendedTaskPriority ExtendedPriority=EExtendedTaskPriority::None, ETaskFlags Flags=ETaskFlags::None)
Definition Task.h:266
bool Wait(const TaskCollectionType &Tasks, FTimespan InTimeout=FTimespan::MaxValue())
Definition Task.h:381
static CORE_API const FColor Emerald
Definition Color.h:762
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
static UE_FORCEINLINE_HINT void * Memset(void *Dest, uint8 Char, SIZE_T Count)
Definition UnrealMemory.h:119
Definition RenderGraphResources.h:940
Definition RenderGraphResources.h:1122
FRDGBufferRef Buffer
Definition RenderGraphResources.h:1158
Definition RenderGraphResources.h:1163
FRDGBufferRef Buffer
Definition RenderGraphResources.h:1188
Definition RenderGraphResources.h:69
Definition RenderGraphDefinitions.h:627
FIntPoint Extent
Definition RHIResources.h:1856
Definition RendererInterface.h:494
FRHITexture * GetRHI() const
Definition RendererInterface.h:520
IntType X
Definition IntPoint.h:34