UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RenderGraphPass.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
10#include "HAL/Platform.h"
12#include "Misc/EnumClassFlags.h"
13#include "MultiGPU.h"
14#include "RHI.h"
15#include "RHICommandList.h"
16#include "RHIDefinitions.h"
19#include "RenderGraphEvent.h"
23#include "Stats/Stats.h"
24#include "Templates/EnableIf.h"
27
29
31
33{
35
37 {
38 return Passes == Other.Passes && PipelinesAfter == Other.PipelinesAfter;
39 }
40
42 {
43 return !(*this == Other);
44 }
45
47 {
48 static_assert(sizeof(Id.Passes) <= 8);
49 uint32 Hash = GetTypeHash(*(const uint64*)Id.Passes.GetData());
50 return HashCombineFast(Hash, (uint32)Id.PipelinesAfter);
51 }
52
55};
56
58{
59 static_assert((int32)ERHIAccess::Last <= (1 << 20) && (int32)ERDGViewableResourceType::MAX <= 3 && (int32)EResourceTransitionFlags::Last <= (1 << 2), "FRDGTransitionInfo packing is no longer correct.");
60
61 uint64 AccessBefore : 21; // 21
62 uint64 AccessAfter : 21; // 42
66
67 union
68 {
69 struct
70 {
74
76
77 struct
78 {
80
82 };
83};
84
106
108{
109public:
110 RENDERCORE_API FRDGBarrierBatchBegin(ERHIPipeline PipelinesToBegin, ERHIPipeline PipelinesToEnd, const TCHAR* Name, FRDGPass* Pass);
111 RENDERCORE_API FRDGBarrierBatchBegin(ERHIPipeline PipelinesToBegin, ERHIPipeline PipelinesToEnd, const TCHAR* Name, FRDGPassesByPipeline Passes);
112
114
116
118 {
120 {
121 bSeparateFenceTransitionNeeded = true;
122 }
123 else
124 {
126 }
127 bTransitionNeeded = true;
128 }
129
131
134
136 {
137 Transitions.Reserve(TransitionCount);
138 Aliases.Reserve(TransitionCount);
139 }
140
142 {
143 return bTransitionNeeded;
144 }
145
146private:
147 const FRHITransition* Transition = nullptr;
148 const FRHITransition* SeparateFenceTransition = nullptr;
153 ERHIPipeline PipelinesToBegin;
154 ERHIPipeline PipelinesToEnd;
155 bool bTransitionNeeded = false;
156 bool bSeparateFenceTransitionNeeded = false;
157
158#if RDG_ENABLE_DEBUG
159 FRDGPassesByPipeline DebugPasses;
162 const TCHAR* DebugName;
163#endif
164
167 friend class FRDGBuilder;
168};
169
171
173{
175 Inline,
176
178 Await,
179
181 Async
182};
183
214
217{
218public:
220 FRDGPass(const FRDGPass&) = delete;
221 virtual ~FRDGPass() = default;
222
223#if RDG_ENABLE_DEBUG
225#else
226 const TCHAR* GetName() const
227 {
228 return Name.GetTCHAR();
229 }
230#endif
231
233 {
234 return Name;
235 }
236
238 {
239 return Flags;
240 }
241
243 {
244 return Pipeline;
245 }
246
248 {
249 return ParameterStruct;
250 }
251
253 {
254 return Handle;
255 }
256
258 {
259 return Workload;
260 }
261
263 {
264 return TaskMode;
265 }
266
268 {
270 }
271
273 {
275 }
276
278 {
280 }
281
283 {
285 }
286
287 bool SkipRenderPassEnd() const
288 {
289 return bSkipRenderPassEnd;
290 }
291
292 bool IsAsyncCompute() const
293 {
295 }
296
298 {
299 return bAsyncComputeBegin;
300 }
301
302 bool IsAsyncComputeEnd() const
303 {
304 return bAsyncComputeEnd;
305 }
306
307 bool IsGraphicsFork() const
308 {
309 return bGraphicsFork;
310 }
311
312 bool IsGraphicsJoin() const
313 {
314 return bGraphicsJoin;
315 }
316
317 bool IsCulled() const
318 {
319 return bCulled;
320 }
321
322 bool IsSentinel() const
323 {
324 return bSentinel;
325 }
326
329 {
330 return GraphicsForkPass;
331 }
332
335 {
336 return GraphicsJoinPass;
337 }
338
339 FRDGScope const* GetScope() const
340 {
341 return Scope;
342 }
343
345 {
346#if WITH_MGPU
347 return GPUMask;
348#else
349 return FRHIGPUMask();
350#endif
351 }
352
353protected:
358
377
380
381 virtual void Execute(FRHIComputeCommandList& RHICmdList) {}
383
384 // When r.RDG.Debug is enabled, this will include a full namespace path with event scopes included.
386
394
395 union
396 {
397 struct
398 {
402
406
410
413
416
419
422 };
424 };
425
426 union
427 {
428 // Task-specific bits which are written in a task in parallel with reads from the other set.
429 struct
430 {
433
436
439
442 };
444 };
445
446 union
447 {
448 // Task-specific bits which are written in a task in parallel with reads from the other set.
449 struct
450 {
454
457 };
459 };
460
463
467
471
474
478
496
510
516
529
531
535
544
546
547#if WITH_MGPU
548 FRHIGPUMask GPUMask;
549#endif
550
551 FRDGScope* Scope = nullptr;
552
553#if RDG_ENABLE_TRACE
556#endif
557
560 friend FRDGTrace;
563};
564
566template <typename ParameterStructType, typename ExecuteLambdaType>
568 : public FRDGPass
569{
570 class ExecuteLambdaTraits
571 {
572 private:
573 // Verify that the amount of stuff captured by the pass lambda is reasonable.
574 static constexpr int32 kMaximumLambdaCaptureSize = 1024;
575 static_assert(sizeof(ExecuteLambdaType) <= kMaximumLambdaCaptureSize, "The amount of data of captured for the pass looks abnormally high.");
576
577 template <typename T>
578 struct TLambdaTraits
579 : TLambdaTraits<decltype(&T::operator())>
580 {};
581 template <typename ReturnType, typename ClassType, typename ArgType>
582 struct TLambdaTraits<ReturnType(ClassType::*)(ArgType&) const>
583 {
584 using TRHICommandList = ArgType;
585 using TRDGPass = void;
586 static constexpr bool bIsTaskAsync = false;
587 };
588 template <typename ReturnType, typename ClassType, typename ArgType>
589 struct TLambdaTraits<ReturnType(ClassType::*)(ArgType&)>
590 {
591 using TRHICommandList = ArgType;
592 using TRDGPass = void;
593 using TRDGAsyncToken = void;
594 static constexpr bool bIsTaskAsync = false;
595 };
596 template <typename ReturnType, typename ClassType, typename ArgType>
597 struct TLambdaTraits<ReturnType(ClassType::*)(FRDGAsyncTask, ArgType&) const>
598 {
599 using TRHICommandList = ArgType;
600 using TRDGPass = void;
601 static constexpr bool bIsTaskAsync = true;
602 };
603 template <typename ReturnType, typename ClassType, typename ArgType>
604 struct TLambdaTraits<ReturnType(ClassType::*)(FRDGAsyncTask, ArgType&)>
605 {
606 using TRHICommandList = ArgType;
607 using TRDGPass = void;
608 static constexpr bool bIsTaskAsync = true;
609 };
610 template <typename ReturnType, typename ClassType, typename ArgType1, typename ArgType2>
611 struct TLambdaTraits<ReturnType(ClassType::*)(const ArgType1*, ArgType2&) const>
612 {
613 using TRHICommandList = ArgType2;
614 using TRDGPass UE_DEPRECATED(5.5, "An FRDGPass* lambda argument is no longer supported.") = ArgType1;
615 static constexpr bool bIsTaskAsync = false;
616 };
617 template <typename ReturnType, typename ClassType, typename ArgType1, typename ArgType2>
618 struct TLambdaTraits<ReturnType(ClassType::*)(const ArgType1*, ArgType2&)>
619 {
620 using TRHICommandList = ArgType2;
621 using TRDGPass UE_DEPRECATED(5.5, "An FRDGPass* lambda argument is no longer supported.") = ArgType1;
622 static constexpr bool bIsTaskAsync = false;
623 };
624 template <typename ReturnType, typename ClassType, typename ArgType1, typename ArgType2>
625 struct TLambdaTraits<ReturnType(ClassType::*)(const ArgType1*, FRDGAsyncTask, ArgType2&) const>
626 {
627 using TRHICommandList = ArgType2;
628 using TRDGPass UE_DEPRECATED(5.5, "An FRDGPass* lambda argument is no longer supported.") = ArgType1;
629 static constexpr bool bIsTaskAsync = true;
630 };
631 template <typename ReturnType, typename ClassType, typename ArgType1, typename ArgType2>
632 struct TLambdaTraits<ReturnType(ClassType::*)(const ArgType1*, FRDGAsyncTask, ArgType2&)>
633 {
634 using TRHICommandList = ArgType2;
635 using TRDGPass UE_DEPRECATED(5.5, "An FRDGPass* lambda argument is no longer supported.") = ArgType1;
636 static constexpr bool bIsTaskAsync = true;
637 };
638
639 public:
640 using TRHICommandList = typename TLambdaTraits<ExecuteLambdaType>::TRHICommandList;
641
642 static constexpr bool bIsCommandListImmediate = std::is_same_v<TRHICommandList, FRHICommandListImmediate>;
643 static constexpr bool bIsPassArgValid = !std::is_same_v<typename TLambdaTraits<ExecuteLambdaType>::TRDGPass, void>;
644 static constexpr ERDGPassTaskMode TaskMode = bIsCommandListImmediate
646 : TLambdaTraits<ExecuteLambdaType>::bIsTaskAsync
649
650 static_assert((bIsCommandListImmediate && TLambdaTraits<ExecuteLambdaType>::bIsTaskAsync) == false, "RDG pass is marked with RDG_TASK_ASYNC but is using the immediate command list. This is not allowed.");
651 };
652
653public:
666
667private:
668 void ExecuteLambdaFunc(FRHIComputeCommandList& RHICmdList)
669 {
670 if constexpr (ExecuteLambdaTraits::TaskMode == ERDGPassTaskMode::Async)
671 {
672 if constexpr (ExecuteLambdaTraits::bIsPassArgValid)
673 {
674 ExecuteLambda(this, FRDGAsyncTask(), static_cast<typename ExecuteLambdaTraits::TRHICommandList&>(RHICmdList));
675 }
676 else
677 {
678 ExecuteLambda(FRDGAsyncTask(), static_cast<typename ExecuteLambdaTraits::TRHICommandList&>(RHICmdList));
679 }
680 }
681 else
682 {
683 if constexpr (ExecuteLambdaTraits::bIsPassArgValid)
684 {
685 ExecuteLambda(this, static_cast<typename ExecuteLambdaTraits::TRHICommandList&>(RHICmdList));
686 }
687 else
688 {
689 ExecuteLambda(static_cast<typename ExecuteLambdaTraits::TRHICommandList&>(RHICmdList));
690 }
691 }
692 }
693
694 void Execute(FRHIComputeCommandList& RHICmdList) override
695 {
696#if !USE_NULL_RHI
698
701 ExecuteLambdaFunc(static_cast<typename ExecuteLambdaTraits::TRHICommandList&>(RHICmdList));
702#else
703 checkNoEntry();
704#endif // !USE_NULL_RHI
705 }
706
707 ExecuteLambdaType ExecuteLambda;
708
710};
711
713 : public FRDGPass
714{
715public:
721
722private:
723 void Execute(FRHIComputeCommandList& RHICmdList) override
724 {
725 RHICmdList.GetAsImmediate().QueueAsyncCommandListSubmit(MoveTemp(CommandLists));
726 }
727
729 UE::Tasks::FTaskEvent CommandListsEvent{ UE_SOURCE_LOCATION };
730
731 friend FRDGBuilder;
733};
734
736{
737public:
740
741private:
743 : Pass(InPass)
744 , StaticUniformBuffers(Pass->ParameterStruct.GetStaticUniformBuffers())
745 {
747 {
749 }
750 }
751
752 void Finish();
753
754 FRDGDispatchPass* Pass;
755 FUniformBufferStaticBindings StaticUniformBuffers;
757
758 TArray<FRHISubCommandList*> SubCommandLists;
759
760 friend FRDGBuilder;
761};
762
763template <typename ParameterStructType, typename LaunchLambdaType>
765 : public FRDGDispatchPass
766{
767 // Verify that the amount of stuff captured by the pass lambda is reasonable.
768 static constexpr int32 kMaximumLambdaCaptureSize = 1024;
769 static_assert(sizeof(LaunchLambdaType) <= kMaximumLambdaCaptureSize, "The amount of data of captured for the pass looks abnormally high.");
770
771public:
784
785private:
786 LaunchLambdaType LaunchLambda;
787
788 void LaunchDispatchPassTasks(FRDGDispatchPassBuilder& DispatchPassBuilder) override
789 {
790 LaunchLambda(DispatchPassBuilder);
791 }
792
794};
795
796template <typename ExecuteLambdaType>
798 : public TRDGLambdaPass<FEmptyShaderParameters, ExecuteLambdaType>
799{
800public:
804
805private:
806 static FEmptyShaderParameters EmptyShaderParameters;
807 friend class FRDGBuilder;
808};
809
810template <typename ExecuteLambdaType>
812
815 : public FRDGPass
816{
817public:
823
824private:
825 static FEmptyShaderParameters EmptyShaderParameters;
826};
827
828#include "RenderGraphParameters.inl" // IWYU pragma: export
829
830class FRDGBuilder;
831class FRDGPass;
832class FRDGTrace;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define checkNoEntry()
Definition AssertionMacros.h:316
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
#define SCOPE_CYCLE_COUNTER(Stat)
Definition Stats.h:650
#define DECLARE_CYCLE_STAT_WITH_FLAGS(CounterName, StatId, GroupId, StatFlags)
Definition Stats.h:670
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr void EnumRemoveFlags(Enum &Flags, Enum FlagsToRemove)
Definition EnumClassFlags.h:98
#define UE_SOURCE_LOCATION
Definition PreprocessorHelpers.h:71
ERHITransitionCreateFlags
Definition RHIDefinitions.h:1495
ERHIPipeline
Definition RHIPipeline.h:13
#define IF_RDG_ENABLE_DEBUG(Op)
Definition RenderGraphDefinitions.h:17
ERDGPassFlags
Definition RenderGraphDefinitions.h:128
#define RDG_ENABLE_DEBUG
Definition RenderGraphDefinitions.h:13
ERDGPassTaskMode
Definition RenderGraphPass.h:173
ERDGBarrierLocation
Definition RenderGraphResources.h:57
constexpr uint32 HashCombineFast(uint32 A, uint32 B)
Definition TypeHash.h:74
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
if(Failed) console_printf("Failed.\n")
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RenderGraphAllocator.h:24
Definition RenderGraphPass.h:108
bool IsTransitionNeeded() const
Definition RenderGraphPass.h:141
void Reserve(uint32 TransitionCount)
Definition RenderGraphPass.h:135
RENDERCORE_API void AddTransition(FRDGViewableResource *Resource, FRDGTransitionInfo Info)
Definition RenderGraphPass.cpp:225
void SetUseCrossPipelineFence(bool bUseSeparateTransition)
Definition RenderGraphPass.h:117
RENDERCORE_API void CreateTransition(TConstArrayView< FRHITransitionInfo > TransitionsRHI)
Definition RenderGraphPass.cpp:253
RENDERCORE_API void Submit(FRHIComputeCommandList &RHICmdList, ERHIPipeline Pipeline)
Definition RenderGraphPass.cpp:291
RENDERCORE_API void AddAlias(FRDGViewableResource *Resource, const FRHITransientAliasingInfo &Info)
Definition RenderGraphPass.cpp:239
Definition RenderGraphPass.h:185
RENDERCORE_API void AddDependency(FRDGBarrierBatchBegin *BeginBatch)
Definition RenderGraphPass.cpp:302
void Reserve(uint32 TransitionBatchCount)
Definition RenderGraphPass.h:197
RENDERCORE_API FRDGBarrierBatchEndId GetId() const
Definition RenderGraphPass.cpp:281
FRDGBarrierBatchEnd(FRDGPass *InPass, ERDGBarrierLocation InBarrierLocation)
Definition RenderGraphPass.h:187
RENDERCORE_API bool IsPairedWith(const FRDGBarrierBatchBegin &BeginBatch) const
Definition RenderGraphPass.cpp:286
RENDERCORE_API void Submit(FRHIComputeCommandList &RHICmdList, ERHIPipeline Pipeline)
Definition RenderGraphPass.cpp:338
Definition RenderGraphValidation.h:154
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition RenderGraphPass.h:736
RENDERCORE_API FRHICommandList * CreateCommandList()
Definition RenderGraphPass.cpp:118
Definition RenderGraphPass.h:714
FRDGDispatchPass(FRDGEventName &&InName, FRDGParameterStruct InParameterStruct, ERDGPassFlags InFlags)
Definition RenderGraphPass.h:716
Definition RenderGraphEvent.h:38
RENDERCORE_API const TCHAR * GetTCHAR() const
Definition RenderGraphEvent.cpp:288
Definition RenderGraphParameter.h:213
bool HasRenderTargets() const
Definition RenderGraphParameter.h:239
RENDERCORE_API FRHIRenderPassInfo GetRenderPassInfo() const
Definition RenderGraphPass.cpp:35
RENDERCORE_API FUniformBufferStaticBindings GetStaticUniformBuffers() const
Definition RenderGraphPass.cpp:9
Definition RenderGraphPass.h:217
uint8 PacketBits_ParallelExecute
Definition RenderGraphPass.h:458
RENDERCORE_API FRDGBarrierBatchEnd & GetPrologueBarriersToEnd(FRDGAllocator &Allocator)
Definition RenderGraphPass.cpp:408
bool SkipRenderPassEnd() const
Definition RenderGraphPass.h:287
uint16 PackedBits
Definition RenderGraphPass.h:423
FRDGPassHandle GetGraphicsForkPass() const
Definition RenderGraphPass.h:328
virtual void LaunchDispatchPassTasks(FRDGDispatchPassBuilder &DispatchPassBuilder)
Definition RenderGraphPass.h:382
uint16 bAsyncComputeBegin
Definition RenderGraphPass.h:404
uint8 bExternalAccessPass
Definition RenderGraphPass.h:441
uint8 bParallelExecute
Definition RenderGraphPass.h:456
FRHIGPUMask GetGPUMask() const
Definition RenderGraphPass.h:344
FRDGPassHandle Handle
Definition RenderGraphPass.h:392
TArray< FRDGPass *, TInlineAllocator< 1, FRDGArrayAllocator > > ResourcesToBegin
Definition RenderGraphPass.h:533
const ERDGPassFlags Flags
Definition RenderGraphPass.h:389
uint8 PacketBits_AsyncSetupQueue
Definition RenderGraphPass.h:443
FRDGBarrierBatchBegin * EpilogueBarriersToBeginForAsyncCompute
Definition RenderGraphPass.h:540
bool IsSentinel() const
Definition RenderGraphPass.h:322
ERDGPassTaskMode GetTaskMode() const
Definition RenderGraphPass.h:262
FRDGPassHandle GraphicsJoinPass
Definition RenderGraphPass.h:466
uint32 Workload
Definition RenderGraphPass.h:393
FRDGPass(const FRDGPass &)=delete
TArray< FExternalAccessOp, FRDGArrayAllocator > ExternalAccessOps
Definition RenderGraphPass.h:530
RENDERCORE_API FRDGBarrierBatchBegin & GetPrologueBarriersToBegin(FRDGAllocator &Allocator, FRDGTransitionCreateQueue &CreateQueue)
Definition RenderGraphPass.cpp:364
FRDGPassHandle GraphicsForkPass
Definition RenderGraphPass.h:465
TArray< FRDGPassHandle, FRDGArrayAllocator > CrossPipelineConsumers
Definition RenderGraphPass.h:476
friend FRDGPassRegistry
Definition RenderGraphPass.h:559
FRDGPassHandle CrossPipelineProducer
Definition RenderGraphPass.h:462
uint16 bRenderPassOnlyWrites
Definition RenderGraphPass.h:412
bool IsMergedRenderPassEnd() const
Definition RenderGraphPass.h:277
RENDERCORE_API const TCHAR * GetName() const
uint16 bGraphicsJoin
Definition RenderGraphPass.h:409
bool IsAsyncComputeBegin() const
Definition RenderGraphPass.h:297
FRDGBarrierBatchBegin * EpilogueBarriersToBeginForAll
Definition RenderGraphPass.h:541
uint16 bSkipRenderPassBegin
Definition RenderGraphPass.h:400
bool IsGraphicsJoin() const
Definition RenderGraphPass.h:312
const ERHIPipeline Pipeline
Definition RenderGraphPass.h:391
FRDGPassHandle EpilogueBarrierPass
Definition RenderGraphPass.h:470
uint32 ParallelPassSetIndex
Definition RenderGraphPass.h:545
uint16 bDispatchPass
Definition RenderGraphPass.h:421
FRDGBarrierBatchEnd * EpilogueBarriersToEnd
Definition RenderGraphPass.h:543
FRDGScope const * GetScope() const
Definition RenderGraphPass.h:339
TArray< FTextureState, FRDGArrayAllocator > TextureStates
Definition RenderGraphPass.h:512
TArray< FRDGPass *, TInlineAllocator< 1, FRDGArrayAllocator > > ResourcesToEnd
Definition RenderGraphPass.h:534
bool IsMergedRenderPassBegin() const
Definition RenderGraphPass.h:272
uint8 bHasExternalOutputs
Definition RenderGraphPass.h:435
const FRDGEventName Name
Definition RenderGraphPass.h:387
uint8 bParallelExecuteBegin
Definition RenderGraphPass.h:452
bool IsAsyncComputeEnd() const
Definition RenderGraphPass.h:302
uint8 bEmptyParameters
Definition RenderGraphPass.h:432
FRDGParameterStruct GetParameters() const
Definition RenderGraphPass.h:247
ERDGPassFlags GetFlags() const
Definition RenderGraphPass.h:237
bool SkipRenderPassBegin() const
Definition RenderGraphPass.h:282
IF_RDG_ENABLE_DEBUG(FString FullPathIfDebug)
uint16 bDispatchAfterExecute
Definition RenderGraphPass.h:418
TArray< FRDGBarrierBatchBegin *, FRDGArrayAllocator > SharedEpilogueBarriersToBegin
Definition RenderGraphPass.h:542
uint16 bGraphicsFork
Definition RenderGraphPass.h:408
TArray< FBufferState, FRDGArrayAllocator > BufferStates
Definition RenderGraphPass.h:513
friend FRDGTrace
Definition RenderGraphPass.h:560
FRDGBarrierBatchBegin & GetEpilogueBarriersToBeginFor(FRDGAllocator &Allocator, FRDGTransitionCreateQueue &CreateQueue, ERHIPipeline PipelineForEnd)
Definition RenderGraphPass.h:359
bool IsAsyncCompute() const
Definition RenderGraphPass.h:292
const FRDGParameterStruct ParameterStruct
Definition RenderGraphPass.h:388
RENDERCORE_API FRDGBarrierBatchBegin & GetEpilogueBarriersToBeginForAll(FRDGAllocator &Allocator, FRDGTransitionCreateQueue &CreateQueue)
Definition RenderGraphPass.cpp:398
bool IsCulled() const
Definition RenderGraphPass.h:317
RENDERCORE_API FRDGBarrierBatchBegin & GetEpilogueBarriersToBeginForGraphics(FRDGAllocator &Allocator, FRDGTransitionCreateQueue &CreateQueue)
Definition RenderGraphPass.cpp:374
friend FRDGDispatchPassBuilder
Definition RenderGraphPass.h:562
uint8 bCulled
Definition RenderGraphPass.h:438
uint32 GetWorkload() const
Definition RenderGraphPass.h:257
uint8 bParallelExecuteEnd
Definition RenderGraphPass.h:453
uint16 bAsyncComputeEnd
Definition RenderGraphPass.h:405
FRDGPassHandle GetHandle() const
Definition RenderGraphPass.h:252
FRDGPassHandle PrologueBarrierPass
Definition RenderGraphPass.h:469
uint16 bSentinel
Definition RenderGraphPass.h:415
uint32 NumTransitionsToReserve
Definition RenderGraphPass.h:473
ERHIPipeline GetPipeline() const
Definition RenderGraphPass.h:242
FRDGBarrierBatchBegin * PrologueBarriersToBegin
Definition RenderGraphPass.h:537
const FRDGEventName & GetEventName() const
Definition RenderGraphPass.h:232
bool IsParallelExecuteAllowed() const
Definition RenderGraphPass.h:267
TArray< FRDGUniformBufferHandle, FRDGArrayAllocator > UniformBuffers
Definition RenderGraphPass.h:515
const ERDGPassTaskMode TaskMode
Definition RenderGraphPass.h:390
friend FRDGUserValidation
Definition RenderGraphPass.h:561
FRDGBarrierBatchBegin * EpilogueBarriersToBeginForGraphics
Definition RenderGraphPass.h:539
friend FRDGBuilder
Definition RenderGraphPass.h:558
FRDGScope * Scope
Definition RenderGraphPass.h:551
virtual ~FRDGPass()=default
TArray< FRDGViewHandle, FRDGArrayAllocator > Views
Definition RenderGraphPass.h:514
RENDERCORE_API FRDGBarrierBatchBegin & GetEpilogueBarriersToBeginForAsyncCompute(FRDGAllocator &Allocator, FRDGTransitionCreateQueue &CreateQueue)
Definition RenderGraphPass.cpp:388
FRDGBarrierBatchEnd * PrologueBarriersToEnd
Definition RenderGraphPass.h:538
virtual void Execute(FRHIComputeCommandList &RHICmdList)
Definition RenderGraphPass.h:381
uint16 bSkipRenderPassEnd
Definition RenderGraphPass.h:401
bool IsGraphicsFork() const
Definition RenderGraphPass.h:307
FRDGPassHandle GetGraphicsJoinPass() const
Definition RenderGraphPass.h:334
TArray< FRDGPass *, FRDGArrayAllocator > Producers
Definition RenderGraphPass.h:477
RENDERCORE_API FRDGBarrierBatchEnd & GetEpilogueBarriersToEnd(FRDGAllocator &Allocator)
Definition RenderGraphPass.cpp:417
Definition RenderGraphPass.h:816
FRDGSentinelPass(FRDGEventName &&Name, ERDGPassFlags InPassFlagsToAdd=ERDGPassFlags::None)
Definition RenderGraphPass.h:818
Definition RenderGraphResources.h:571
uint32 GetSubresourceCount() const
Definition RenderGraphResources.h:604
Definition RenderGraphValidation.h:41
Definition RenderGraphResources.h:291
EAccessMode
Definition RenderGraphResources.h:367
FRHICommandListImmediate & GetAsImmediate()
Definition RHICommandList.inl:21
RHI_API void QueueAsyncCommandListSubmit(TArrayView< FQueuedCommandList > CommandLists, ETranslatePriority ParallelTranslatePriority=ETranslatePriority::Disabled, int32 MinDrawsPerTranslate=0)
Definition RHICommandList.cpp:1598
Definition RHICommandList.h:3819
Definition RHICommandList.h:2735
void SetStaticUniformBuffers(const FUniformBufferStaticBindings &UniformBuffers)
Definition RHICommandList.h:2795
Definition ShaderParameterMetadata.h:136
Definition RHIContext.h:49
Definition Array.h:670
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
Definition RenderGraphPass.h:766
TRDGDispatchPass(FRDGEventName &&InName, const FShaderParametersMetadata *InParameterMetadata, const ParameterStructType *InParameterStruct, ERDGPassFlags InPassFlags, LaunchLambdaType &&InLaunchLambda)
Definition RenderGraphPass.h:772
Definition RenderGraphPass.h:799
TRDGEmptyLambdaPass(FRDGEventName &&InName, ERDGPassFlags InPassFlags, ExecuteLambdaType &&InExecuteLambda)
Definition RenderGraphPass.h:801
Definition RenderGraphPass.h:569
TRDGLambdaPass(FRDGEventName &&InName, const FShaderParametersMetadata *InParameterMetadata, const ParameterStructType *InParameterStruct, ERDGPassFlags InPassFlags, ExecuteLambdaType &&InExecuteLambda)
Definition RenderGraphPass.h:654
Definition SharedPointer.h:692
Definition Task.h:236
Definition RenderGraphDefinitions.h:103
Definition RenderGraphPass.h:33
bool operator!=(FRDGBarrierBatchBeginId Other) const
Definition RenderGraphPass.h:41
FRDGPassHandlesByPipeline Passes
Definition RenderGraphPass.h:53
ERHIPipeline PipelinesAfter
Definition RenderGraphPass.h:54
bool operator==(FRDGBarrierBatchBeginId Other) const
Definition RenderGraphPass.h:36
friend uint32 GetTypeHash(FRDGBarrierBatchBeginId Id)
Definition RenderGraphPass.h:46
FRDGBarrierBatchBeginId()=default
Definition RenderGraphPass.h:86
bool operator!=(FRDGBarrierBatchEndId Other) const
Definition RenderGraphPass.h:98
FRDGBarrierBatchEndId(FRDGPassHandle InPassHandle, ERDGBarrierLocation InBarrierLocation)
Definition RenderGraphPass.h:88
FRDGPassHandle PassHandle
Definition RenderGraphPass.h:103
ERDGBarrierLocation BarrierLocation
Definition RenderGraphPass.h:104
FRDGBarrierBatchEndId()=default
bool operator==(FRDGBarrierBatchEndId Other) const
Definition RenderGraphPass.h:93
Definition RenderGraphPass.h:498
FBufferState(FRDGBufferRef InBuffer)
Definition RenderGraphPass.h:501
FRDGSubresourceState State
Definition RenderGraphPass.h:506
FRDGBufferRef Buffer
Definition RenderGraphPass.h:505
FRDGSubresourceState * MergeState
Definition RenderGraphPass.h:507
uint32 ReferenceCount
Definition RenderGraphPass.h:508
Definition RenderGraphPass.h:518
FRDGViewableResource::EAccessMode Mode
Definition RenderGraphPass.h:527
FRDGViewableResource * Resource
Definition RenderGraphPass.h:526
FExternalAccessOp(FRDGViewableResource *InResource, FRDGViewableResource::EAccessMode InMode)
Definition RenderGraphPass.h:521
Definition RenderGraphPass.h:480
FTextureState(FRDGTextureRef InTexture)
Definition RenderGraphPass.h:483
FRDGTextureSubresourceState State
Definition RenderGraphPass.h:492
FRDGTextureSubresourceState MergeState
Definition RenderGraphPass.h:493
FRDGTextureRef Texture
Definition RenderGraphPass.h:491
uint32 ReferenceCount
Definition RenderGraphPass.h:494
Definition RenderGraphEvent.h:236
Definition RenderGraphResources.h:69
Definition RenderGraphPass.h:58
uint64 CommitSize
Definition RenderGraphPass.h:79
uint64 AccessBefore
Definition RenderGraphPass.h:61
uint16 ArraySlice
Definition RenderGraphPass.h:71
uint8 PlaneSlice
Definition RenderGraphPass.h:73
uint64 ResourceTransitionFlags
Definition RenderGraphPass.h:65
uint64 ResourceHandle
Definition RenderGraphPass.h:63
uint64 ResourceType
Definition RenderGraphPass.h:64
struct FRDGTransitionInfo::@1709::@1712 Buffer
uint64 AccessAfter
Definition RenderGraphPass.h:62
struct FRDGTransitionInfo::@1709::@1711 Texture
uint8 MipIndex
Definition RenderGraphPass.h:72
Definition MultiGPU.h:33
Definition RHITransition.h:282
Definition RHITransition.h:475