30 if (
Discard.Graphics != Invalid)
33 if (
Discard.AsyncCompute == Invalid)
39 if (Acquire.AsyncCompute != Invalid)
42 return Acquire.GraphicsForkJoin.
Min;
47 if (Acquire.AsyncCompute != Invalid)
53 return Discard.GraphicsForkJoin.Max;
66 Acquire.GraphicsForkJoin.
Min <
Discard.GraphicsForkJoin.Max);
100 return Graphics != Invalid ? Graphics : AsyncCompute;
111 return Interval.
IsValid() && Element > Interval.
Min && Element < Interval.
Max;
114 static const uint32 Invalid = std::numeric_limits<uint32>::max();
231 AliasingOverlaps.
Reset();
240 bDiscardOnGraphicsWorkaround =
true;
273 Resource =
MoveTemp(Result.Resource);
274 GpuVirtualAddress = Result.GpuVirtualAddress;
277 BindDebugLabelName(RHICmdList);
283 return HeapAllocation;
289 return HeapAllocation;
295 return PageAllocation;
301 return PageAllocation;
361 uint64 GpuVirtualAddress = 0;
379 const TCHAR* Name =
nullptr;
391 bool bAcquired =
false;
392 bool bDiscardOnGraphicsWorkaround =
false;
#define check(expr)
Definition AssertionMacros.h:314
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
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
FRHIGlobals GRHIGlobals
Definition RHIGlobals.cpp:6
ERHIPipeline
Definition RHIPipeline.h:13
ERHITransientResourceType
Definition RHITransientResourceAllocator.h:178
ERHITransientResourceCreateMode
Definition RHITransientResourceAllocator.h:527
ERHITransientAllocationType
Definition RHITransientResourceAllocator.h:184
const bool GRHIValidationEnabled
Definition RHIValidationCommon.h:20
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition RHIResources.h:5806
RHI_API FRHIShaderResourceView * GetOrCreateSRV(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, const FRHIBufferSRVCreateInfo &CreateInfo)
Definition RHI.cpp:2000
RHI_API FRHIUnorderedAccessView * GetOrCreateUAV(FRHICommandListBase &RHICmdList, FRHIBuffer *Buffer, const FRHIBufferUAVCreateInfo &CreateInfo)
Definition RHI.cpp:2054
Definition RHIResources.h:1581
Definition RHICommandList.h:455
Definition RHIResources.h:54
Definition RHIResources.h:3304
Definition RHIResources.h:5785
RHI_API FRHIShaderResourceView * GetOrCreateSRV(FRHICommandListBase &RHICmdList, FRHITexture *Texture, const FRHITextureSRVCreateInfo &CreateInfo)
Definition RHI.cpp:1937
RHI_API FRHIUnorderedAccessView * GetOrCreateUAV(FRHICommandListBase &RHICmdList, FRHITexture *Texture, const FRHITextureUAVCreateInfo &CreateInfo)
Definition RHI.cpp:1969
Definition RHIResources.h:2153
Definition RHITransientResourceAllocator.h:23
bool IsSinglePipeline() const
Definition RHITransientResourceAllocator.h:103
static bool Contains(const FRHITransientAllocationFences &Discard, const FRHITransientAllocationFences &Acquire)
Definition RHITransientResourceAllocator.h:57
void SetAsyncCompute(uint32 InAsyncCompute, TInterval< uint32 > InGraphicsForkJoin)
Definition RHITransientResourceAllocator.h:83
FRHITransientAllocationFences(ERHIPipeline InPipelines)
Definition RHITransientResourceAllocator.h:72
ERHIPipeline GetPipelines() const
Definition RHITransientResourceAllocator.h:92
FRHITransientAllocationFences()=default
uint32 GetSinglePipeline() const
Definition RHITransientResourceAllocator.h:97
static uint32 GetAcquireFence(const FRHITransientAllocationFences &Discard, const FRHITransientAllocationFences &Acquire)
Definition RHITransientResourceAllocator.h:26
void SetGraphics(uint32 InGraphics)
Definition RHITransientResourceAllocator.h:76
Definition RHITransientResourceAllocator.h:489
TArray< FMemoryRange > MemoryRanges
Definition RHITransientResourceAllocator.h:520
EMemoryRangeFlags
Definition RHITransientResourceAllocator.h:501
TMap< const FRHITransientResource *, FAllocationArray > Resources
Definition RHITransientResourceAllocator.h:521
Definition RHITransientResourceAllocator.h:441
FRHITransientBuffer(const FResourceTask &InResourceTask, uint64 InHash, uint64 InSize, ERHITransientAllocationType InAllocationType, const FRHIBufferCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:443
FRHIBuffer * GetRHI() const
Definition RHITransientResourceAllocator.h:467
FRHIUnorderedAccessView * GetOrCreateUAV(FRHICommandListBase &RHICmdList, const FRHIBufferUAVCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:473
const FRHIBufferCreateInfo CreateInfo
Definition RHITransientResourceAllocator.h:479
FRHIBufferViewCache ViewCache
Definition RHITransientResourceAllocator.h:482
FRHITransientBuffer(FRHIResource *InBuffer, uint64 InGpuVirtualAddress, uint64 InHash, uint64 InSize, ERHITransientAllocationType InAllocationType, const FRHIBufferCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:453
FRHIShaderResourceView * GetOrCreateSRV(FRHICommandListBase &RHICmdList, const FRHIBufferSRVCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:476
const FRHIBufferCreateInfo & GetCreateInfo() const
Definition RHITransientResourceAllocator.h:470
virtual RHI_API ~FRHITransientBuffer()
Definition RHICoreTransientResourceAllocator.h:467
Definition RHICoreTransientResourceAllocator.h:887
Definition RHITransientResourceAllocator.h:190
bool IsPageAllocated() const
Definition RHITransientResourceAllocator.h:351
void Acquire(const TCHAR *InName, uint32 InAcquirePassIndex, ERHIPipeline InAcquirePipeline, uint64 InAllocatorCycle)
Internal Allocator API.
Definition RHITransientResourceAllocator.h:222
bool IsBuffer() const
Definition RHITransientResourceAllocator.h:346
bool IsTexture() const
Definition RHITransientResourceAllocator.h:345
FRHITransientPageAllocation & GetPageAllocation()
Definition RHITransientResourceAllocator.h:292
bool IsDiscarded() const
Definition RHITransientResourceAllocator.h:341
const FRHITransientPageAllocation & GetPageAllocation() const
Definition RHITransientResourceAllocator.h:298
ERHITransientAllocationType GetAllocationType() const
Definition RHITransientResourceAllocator.h:348
uint64 GetSize() const
Definition RHITransientResourceAllocator.h:322
void AddAliasingOverlap(FRHITransientResource *InBeforeResource, uint32 InAcquirePassIndex)
Definition RHITransientResourceAllocator.h:244
uint64 GetHash() const
Definition RHITransientResourceAllocator.h:319
uint32 GetAcquireCount() const
Definition RHITransientResourceAllocator.h:328
bool IsAcquired() const
Definition RHITransientResourceAllocator.h:340
uint64 GetGpuVirtualAddress() const
Definition RHITransientResourceAllocator.h:310
TConstArrayView< FRHITransientAliasingOverlap > GetAliasingOverlaps() const
Definition RHITransientResourceAllocator.h:331
ERHITransientResourceType GetResourceType() const
Definition RHITransientResourceAllocator.h:343
const TCHAR * GetName() const
Definition RHITransientResourceAllocator.h:316
bool HasResourceTask() const
Definition RHITransientResourceAllocator.h:313
void Finish(FRHICommandListBase &RHICmdList)
Definition RHITransientResourceAllocator.h:268
uint32 GetAcquirePass() const
Definition RHITransientResourceAllocator.h:334
FRHITransientHeapAllocation & GetHeapAllocation()
Definition RHITransientResourceAllocator.h:280
bool IsHeapAllocated() const
Definition RHITransientResourceAllocator.h:350
virtual RHI_API ~FRHITransientResource()
const FRHITransientHeapAllocation & GetHeapAllocation() const
Definition RHITransientResourceAllocator.h:286
FRHIResource * GetRHI() const
Definition RHITransientResourceAllocator.h:307
void Discard(const FRHITransientAllocationFences &Fences)
Definition RHITransientResourceAllocator.h:234
uint32 GetDiscardPass() const
Definition RHITransientResourceAllocator.h:337
static const uint32 kInvalidPassIndex
Definition RHITransientResourceAllocator.h:192
uint64 GetAcquireCycle() const
Definition RHITransientResourceAllocator.h:325
UE::Tasks::TTask< FResourceTaskResult > FResourceTask
Definition RHITransientResourceAllocator.h:200
Definition RHITransientResourceAllocator.h:399
FRHIShaderResourceView * GetOrCreateSRV(FRHICommandListBase &RHICmdList, const FRHITextureSRVCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:428
const FRHITextureCreateInfo CreateInfo
Definition RHITransientResourceAllocator.h:431
FRHITextureViewCache ViewCache
Definition RHITransientResourceAllocator.h:434
FRHITexture * GetRHI() const
Definition RHITransientResourceAllocator.h:419
virtual RHI_API ~FRHITransientTexture()
FRHIUnorderedAccessView * GetOrCreateUAV(FRHICommandListBase &RHICmdList, const FRHITextureUAVCreateInfo &InCreateInfo)
Definition RHITransientResourceAllocator.h:425
const FRHITextureCreateInfo & GetCreateInfo() const
Definition RHITransientResourceAllocator.h:422
Definition RHIResources.h:3294
Definition RHITransientResourceAllocator.h:536
virtual void Flush(FRHICommandListImmediate &RHICmdList, FRHITransientAllocationStats *OutStats=nullptr)=0
virtual ~IRHITransientResourceAllocator()=default
virtual void DeallocateMemory(FRHITransientBuffer *Buffer, const FRHITransientAllocationFences &Fences)=0
virtual FRHITransientBuffer * CreateBuffer(const FRHIBufferCreateInfo &CreateInfo, const TCHAR *DebugName, const FRHITransientAllocationFences &Fences)=0
virtual FRHITransientTexture * CreateTexture(const FRHITextureCreateInfo &CreateInfo, const TCHAR *DebugName, const FRHITransientAllocationFences &Fences)=0
virtual bool SupportsResourceType(ERHITransientResourceType Type) const =0
virtual void Release(FRHICommandListImmediate &RHICmdList)
Definition RHITransientResourceAllocator.h:558
virtual void SetCreateMode(ERHITransientResourceCreateMode CreateMode)
Definition RHITransientResourceAllocator.h:544
virtual void DeallocateMemory(FRHITransientTexture *Texture, const FRHITransientAllocationFences &Fences)=0
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
bool IsValid() const
Definition Task.h:62
ResultType & GetResult()
Definition Task.h:196
@ Invalid
Definition BTCompositeNode.h:38
Definition RHIResources.h:1321
Definition RHIResources.h:5700
Definition RHIResources.h:5754
bool NeedsTransientDiscardOnGraphicsWorkaround
Definition RHIGlobals.h:732
Definition RHIResources.h:1689
Definition RHIResources.h:5570
Definition RHIResources.h:5651
Definition RHITransientResourceAllocator.h:492
uint64 OffsetMax
Definition RHITransientResourceAllocator.h:494
uint32 MemoryRangeIndex
Definition RHITransientResourceAllocator.h:495
uint64 OffsetMin
Definition RHITransientResourceAllocator.h:493
Definition RHITransientResourceAllocator.h:509
uint64 Capacity
Definition RHITransientResourceAllocator.h:511
EMemoryRangeFlags Flags
Definition RHITransientResourceAllocator.h:517
uint64 CommitSize
Definition RHITransientResourceAllocator.h:514
Definition RHITransientResourceAllocator.h:161
uint64 Size
Definition RHITransientResourceAllocator.h:168
uint32 AlignmentPad
Definition RHITransientResourceAllocator.h:174
FRHITransientHeap * Heap
Definition RHITransientResourceAllocator.h:165
bool IsValid() const
Definition RHITransientResourceAllocator.h:162
uint64 Offset
Definition RHITransientResourceAllocator.h:171
Definition RHITransientResourceAllocator.h:151
TArray< FRHITransientPagePoolAllocation > PoolAllocations
Definition RHITransientResourceAllocator.h:153
TArray< FRHITransientPageSpan > Spans
Definition RHITransientResourceAllocator.h:156
Definition RHITransientResourceAllocator.h:132
uint16 SpanOffsetMin
Definition RHITransientResourceAllocator.h:145
uint64 Hash
Definition RHITransientResourceAllocator.h:139
FRHITransientPagePool * Pool
Definition RHITransientResourceAllocator.h:136
uint16 SpanOffsetMax
Definition RHITransientResourceAllocator.h:146
uint16 SpanIndex
Definition RHITransientResourceAllocator.h:142
bool IsValid() const
Definition RHITransientResourceAllocator.h:133
Definition RHITransientResourceAllocator.h:122
uint16 Count
Definition RHITransientResourceAllocator.h:127
uint16 Offset
Definition RHITransientResourceAllocator.h:124
Definition RHITransientResourceAllocator.h:195
uint64 GpuVirtualAddress
Definition RHITransientResourceAllocator.h:197
TRefCountPtr< FRHIResource > Resource
Definition RHITransientResourceAllocator.h:196
bool IsValid() const
Definition Interval.h:132
ElementType Max
Definition Interval.h:38
ElementType Min
Definition Interval.h:35
Definition NumericLimits.h:41