7#define RHICORE_TRANSIENT_ALLOCATOR_DEBUG (!UE_BUILD_SHIPPING && !UE_BUILD_TEST)
9#if RHICORE_TRANSIENT_ALLOCATOR_DEBUG
10 #define IF_RHICORE_TRANSIENT_ALLOCATOR_DEBUG(Op) Op
12 #define IF_RHICORE_TRANSIENT_ALLOCATOR_DEBUG(Op)
153template <
typename TransientResourceType>
175 for (
const FCacheItem& Item : Cache)
177 delete Item.Resource;
186 template <
typename CreateFunctionType>
210 template <
typename ReleaseFunctionType>
223 Algo::Sort(Cache, [](
const FCacheItem&
LHS,
const FCacheItem& RHS)
225 return LHS.LastUsedFrame > RHS.LastUsedFrame;
260 template <
typename ReleaseFunctionType>
263 const FCacheItem& Item = Cache.
Top();
265 if (Item.LastUsedFrame + GarbageCollectLatency <= CurrentFrameIndex)
268 delete Item.Resource;
291 uint32 GarbageCollectLatency;
351 bool IsFull()
const {
return UsedSize == Capacity; }
352 bool IsEmpty()
const {
return UsedSize == 0; }
355 using FRangeHandle =
uint16;
356 static const FRangeHandle InvalidRangeHandle = FRangeHandle(~0);
364 FRangeHandle NextFreeHandle = InvalidRangeHandle;
365 FRangeHandle PrevFreeHandle = InvalidRangeHandle;
367 inline uint64 GetStart()
const {
return Offset; }
371 inline FRangeHandle GetFirstFreeRangeHandle()
373 return Ranges[HeadHandle].NextFreeHandle;
376 FRangeHandle CreateRange()
380 return RangeFreeList.
Pop();
383 return FRangeHandle(Ranges.
Num() - 1);
388 FRangeHandle
Handle = CreateRange();
390 FRange& CurrentRange = Ranges[
Handle];
391 CurrentRange.Resource = Resource;
392 CurrentRange.Fences = Fences;
393 CurrentRange.Offset =
Offset;
394 CurrentRange.Size =
Size;
403 FRangeHandle RemoveRange(FRangeHandle PreviousHandle, FRangeHandle CurrentHandle)
406 FRange& CurrentRange = Ranges[CurrentHandle];
412 CurrentRange.NextFreeHandle = InvalidRangeHandle;
413 CurrentRange.Resource =
nullptr;
415 RangeFreeList.
Add(CurrentHandle);
422 FRangeHandle PreviousHandle = InvalidRangeHandle;
423 FRangeHandle FoundHandle = InvalidRangeHandle;
428 uint64 GpuVirtualAddress = 0;
431 uint64 AlignmentWaste = 0;
432 uint32 AllocationCount = 0;
435 FRangeHandle HeadHandle = InvalidRangeHandle;
522 const TCHAR* DebugName,
533 const TCHAR* DebugName,
575 FInitializer Initializer;
578 uint64 LastUsedGarbageCollectCycle = 0;
667 FInitializer Initializer;
673 uint64 GarbageCollectCycle = 0;
702 template <
typename TransientResourceType,
typename LambdaType,
typename ResourceCreateInfo>
708 typename TransientResourceType::FResourceTaskResult
TaskResult = Lambda();
726 const TCHAR* DebugName,
739 const TCHAR* DebugName,
748 uint32 DeallocationCount = 0;
781 template <
typename SpanArrayType>
784 check(SpanIndex != InvalidIndex);
788 SpanIndex = PageSpans[SpanIndex].NextSpanIndex;
789 }
while (SpanIndex != InvalidIndex);
808 bool IsFull()
const {
return FreePageCount == 0; }
810 bool IsEmpty()
const {
return AllocationCount == 0; }
814 static const uint32 FreeSpanListHeadIndex = 0;
815 static const uint32 FreeSpanListTailIndex = 1;
819 const bool IsLinked() {
return (NextSpanIndex != InvalidIndex || PrevSpanIndex != InvalidIndex); }
823 uint32 NextSpanIndex = InvalidIndex;
825 bool bAllocated =
false;
848 check(UnusedSpanListCount > 0);
849 uint32 SpanIndex = UnusedSpanList[UnusedSpanListCount - 1];
850 UnusedSpanListCount--;
855 void ReleaseSpan(
uint32 SpanIndex)
857 check(!PageSpans[SpanIndex].IsLinked());
858 UnusedSpanList[UnusedSpanListCount] = SpanIndex;
859 UnusedSpanListCount++;
860 check(UnusedSpanListCount <= MaxPageCount);
865 uint32 GetFirstSpanIndex()
const
867 return PageSpans[FreeSpanListHeadIndex].NextSpanIndex;
876 uint32 UnusedSpanListCount;
878 const uint32 MaxSpanCount;
879 const uint32 MaxPageCount;
941 Allocator.
Deallocate(Resource, Fences, SpanIndex);
1001 uint64 GpuVirtualAddress = 0;
1002 uint64 LastUsedGarbageCollectCycle = 0;
1003 uint32 PageMapRequestCountMax = 0;
1004 uint32 PageSpanCountMax = 0;
1080 uint64 GarbageCollectCycle = 0;
1081 uint64 TotalMemoryCapacity = 0;
1113 static constexpr uint32 ResourceCacheGarbageCollectionLatency = 2;
1114 static constexpr uint64 KB = 1024;
1115 static constexpr uint64 MB = 1024 *
KB;
1125 const TCHAR* DebugName,
1130 const TCHAR* DebugName,
1138 template <
typename FunctionType>
1159 uint32 FirstNormalPagePoolIndex = 0;
1160 uint32 DeallocationCount = 0;
1163 uint32 PageAllocateCount = 0;
1164 uint32 PageSpanCount = 0;
constexpr T Align(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:18
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define check(expr)
Definition AssertionMacros.h:314
uint64 CityHash64(const char *s, uint32 len)
Definition CityHash.cpp:388
uint64 CityHash64WithSeed(const char *s, uint32 len, uint64 seed)
Definition CityHash.cpp:430
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define TRACE_CPUPROFILER_EVENT_SCOPE(Name)
Definition CpuProfilerTrace.h:528
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define UE_SOURCE_LOCATION
Definition PreprocessorHelpers.h:71
uint64 ComputeHash(const FRHITextureCreateInfo &InCreateInfo, uint64 HeapOffset)
Definition RHICoreTransientResourceAllocator.h:15
ERHITransientHeapFlags
Definition RHICoreTransientResourceAllocator.h:443
#define IF_RHICORE_TRANSIENT_ALLOCATOR_DEBUG(Op)
Definition RHICoreTransientResourceAllocator.h:10
ERHITransientResourceCreateMode
Definition RHITransientResourceAllocator.h:527
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
Definition RHITransientResourceAllocator.h:23
Definition RHITransientResourceAllocator.h:489
Definition RHITransientResourceAllocator.h:441
Definition RHICoreTransientResourceAllocator.h:317
RHICORE_API void Flush()
Definition RHICoreTransientResourceAllocator.cpp:298
bool IsFull() const
Definition RHICoreTransientResourceAllocator.h:351
uint64 GetGpuVirtualAddress() const
Definition RHICoreTransientResourceAllocator.h:344
uint64 GetFreeSize() const
Definition RHICoreTransientResourceAllocator.h:347
RHICORE_API FRHITransientHeapAllocation Allocate(const FRHITransientAllocationFences &Fences, uint64 Size, uint32 Alignment, TArray< FAliasingOverlap > &OutAliasingOverlaps)
Definition RHICoreTransientResourceAllocator.cpp:132
void SetGpuVirtualAddress(uint64 InGpuVirtualAddress)
Definition RHICoreTransientResourceAllocator.h:339
uint64 GetAlignmentWaste() const
Definition RHICoreTransientResourceAllocator.h:348
uint64 GetUsedSize() const
Definition RHICoreTransientResourceAllocator.h:346
uint64 GetCapacity() const
Definition RHICoreTransientResourceAllocator.h:345
bool IsEmpty() const
Definition RHICoreTransientResourceAllocator.h:352
RHICORE_API void Deallocate(FRHITransientResource *Resource, const FRHITransientAllocationFences &Fences)
Definition RHICoreTransientResourceAllocator.cpp:261
uint32 GetAllocationCount() const
Definition RHICoreTransientResourceAllocator.h:349
Definition RHICoreTransientResourceAllocator.h:603
RHICORE_API void GarbageCollect() override
Definition RHICoreTransientResourceAllocator.cpp:595
uint64 GetGarbageCollectCycle() const
Definition RHICoreTransientResourceAllocator.h:651
FRHITransientHeapCache(const FInitializer &InInitializer)
Definition RHICoreTransientResourceAllocator.h:637
virtual RHICORE_API ~FRHITransientHeapCache()
Definition RHICoreTransientResourceAllocator.cpp:530
RHICORE_API FRHITransientHeap * Acquire(uint64 FirstAllocationSize, ERHITransientHeapFlags FirstAllocationHeapFlags)
Definition RHICoreTransientResourceAllocator.cpp:540
const FInitializer & GetInitializer() const
Definition RHICoreTransientResourceAllocator.h:649
RHICORE_API void Forfeit(TConstArrayView< FRHITransientHeap * > Heaps)
Definition RHICoreTransientResourceAllocator.cpp:581
uint64 GetHeapSize(uint64 RequestedHeapSize) const
Definition RHICoreTransientResourceAllocator.h:653
Definition RHICoreTransientResourceAllocator.h:467
uint64 GetCapacity() const
Definition RHICoreTransientResourceAllocator.h:546
uint64 GetCommitSize() const
Definition RHICoreTransientResourceAllocator.h:552
FRHITransientHeap(const FInitializer &InInitializer)
Definition RHICoreTransientResourceAllocator.h:508
bool IsFull() const
Definition RHICoreTransientResourceAllocator.h:556
bool IsEmpty() const
Definition RHICoreTransientResourceAllocator.h:554
bool IsAllocationSupported(uint64 Size, ERHITransientHeapFlags Flags) const
Definition RHICoreTransientResourceAllocator.h:560
uint64 GetLastUsedGarbageCollectCycle() const
Definition RHICoreTransientResourceAllocator.h:550
const FInitializer & GetInitializer() const
Definition RHICoreTransientResourceAllocator.h:544
bool IsCommitRequired() const
Definition RHICoreTransientResourceAllocator.h:558
RHICORE_API FRHITransientBuffer * CreateBuffer(const FRHIBufferCreateInfo &CreateInfo, const TCHAR *DebugName, const FRHITransientAllocationFences &Fences, uint64 CurrentAllocatorCycle, uint64 BufferSize, uint32 BufferAlignment, FCreateBufferFunction CreateBufferFunction)
Definition RHICoreTransientResourceAllocator.cpp:394
void SetGpuVirtualAddress(uint64 InBaseGPUVirtualAddress)
Definition RHICoreTransientResourceAllocator.h:566
uint64 GetGPUVirtualAddress() const
Definition RHICoreTransientResourceAllocator.h:548
RHICORE_API FRHITransientTexture * CreateTexture(const FRHITextureCreateInfo &CreateInfo, const TCHAR *DebugName, const FRHITransientAllocationFences &Fences, uint64 CurrentAllocatorCycle, uint64 TextureSize, uint32 TextureAlignment, FCreateTextureFunction CreateTextureFunction)
Definition RHICoreTransientResourceAllocator.cpp:358
RHICORE_API void DeallocateMemory(FRHITransientTexture *Texture, const FRHITransientAllocationFences &Fences)
Definition RHICoreTransientResourceAllocator.cpp:388
virtual ~FRHITransientHeap()=default
Definition RHICoreTransientResourceAllocator.h:1013
virtual RHICORE_API ~FRHITransientPagePoolCache()
Definition RHICoreTransientResourceAllocator.cpp:1283
FRHITransientPagePoolCache(const FRHITransientPagePoolCache &)=delete
FRHITransientPagePoolCache(const FInitializer &InInitializer)
Definition RHICoreTransientResourceAllocator.h:1041
const FInitializer Initializer
Definition RHICoreTransientResourceAllocator.h:1060
RHICORE_API FRHITransientPagePool * Acquire()
Definition RHICoreTransientResourceAllocator.cpp:1296
RHICORE_API void GarbageCollect() override
Definition RHICoreTransientResourceAllocator.cpp:1359
RHICORE_API FRHITransientPagePool * GetFastPagePool()
Definition RHICoreTransientResourceAllocator.cpp:1328
RHICORE_API void Forfeit(TConstArrayView< FRHITransientPagePool * > PagePools)
Definition RHICoreTransientResourceAllocator.cpp:1345
Definition RHICoreTransientResourceAllocator.h:887
FRHITransientPagePool(const FInitializer &InInitializer)
Definition RHICoreTransientResourceAllocator.h:895
bool IsEmpty() const
Definition RHICoreTransientResourceAllocator.h:948
uint64 GetGpuVirtualAddress() const
Definition RHICoreTransientResourceAllocator.h:954
uint64 GetCapacity() const
Definition RHICoreTransientResourceAllocator.h:952
void Deallocate(FRHITransientResource *Resource, const FRHITransientAllocationFences &Fences, uint32 SpanIndex)
Definition RHICoreTransientResourceAllocator.h:939
virtual ~FRHITransientPagePool()=default
uint64 GetLastUsedGarbageCollectCycle() const
Definition RHICoreTransientResourceAllocator.h:946
bool IsFull() const
Definition RHICoreTransientResourceAllocator.h:950
RHICORE_API void Allocate(FAllocationContext &AllocationContext)
Definition RHICoreTransientResourceAllocator.cpp:1201
const FInitializer Initializer
Definition RHICoreTransientResourceAllocator.h:980
void SetGpuVirtualAddress(uint64 InGpuVirtualAddress)
Definition RHICoreTransientResourceAllocator.h:983
Definition RHICoreTransientResourceAllocator.h:763
RHICORE_API void Deallocate(FRHITransientResource *Resource, const FRHITransientAllocationFences &Fences, uint32 SpanIndex)
Definition RHICoreTransientResourceAllocator.cpp:979
uint32 GetFreePageCount() const
Definition RHICoreTransientResourceAllocator.h:794
uint64 GetCapacity() const
Definition RHICoreTransientResourceAllocator.h:806
uint32 GetAllocationCount() const
Definition RHICoreTransientResourceAllocator.h:792
bool IsEmpty() const
Definition RHICoreTransientResourceAllocator.h:810
bool IsFull() const
Definition RHICoreTransientResourceAllocator.h:808
RHICORE_API uint32 GetAllocationPageCount(uint32 SpanIndex) const
Definition RHICoreTransientResourceAllocator.cpp:1157
uint64 GetFreeSize() const
Definition RHICoreTransientResourceAllocator.h:798
uint32 GetPageSize() const
Definition RHICoreTransientResourceAllocator.h:804
RHICORE_API void Flush()
Definition RHICoreTransientResourceAllocator.cpp:1056
void GetSpanArray(uint32 SpanIndex, SpanArrayType &OutPageSpans) const
Definition RHICoreTransientResourceAllocator.h:782
RHICORE_API void Reset()
Definition RHICoreTransientResourceAllocator.cpp:846
FRHITransientPageSpanAllocator(uint32 InPageCount, uint32 InPageSize)
Definition RHICoreTransientResourceAllocator.h:765
RHICORE_API bool Allocate(FRHITransientResource *Resource, const FRHITransientAllocationFences &Fences, uint32 PageCount, uint32 &NumPagesAllocated, uint32 &OutSpanIndex)
Definition RHICoreTransientResourceAllocator.cpp:907
uint64 GetUsedSize() const
Definition RHICoreTransientResourceAllocator.h:796
uint32 GetMaxSpanCount() const
Definition RHICoreTransientResourceAllocator.h:802
Definition RHICoreTransientResourceAllocator.h:680
RHICORE_API ~FRHITransientResourceHeapAllocator()
FRHITransientHeapCache & HeapCache
Definition RHICoreTransientResourceAllocator.h:700
TransientResourceType * CreateTransientResource(LambdaType &&Lambda, uint64 Hash, uint64 Size, const ResourceCreateInfo &CreateInfo)
Definition RHICoreTransientResourceAllocator.h:703
TConstArrayView< FRHITransientHeap * > GetHeaps() const
Definition RHICoreTransientResourceAllocator.h:698
RHICORE_API FRHITransientBuffer * CreateBufferInternal(const FRHIBufferCreateInfo &CreateInfo, const TCHAR *DebugName, const FRHITransientAllocationFences &Fences, uint32 BufferSize, uint32 BufferAlignment, FRHITransientHeap::FCreateBufferFunction CreateBufferFunction)
Definition RHICoreTransientResourceAllocator.cpp:685
RHICORE_API FRHITransientTexture * CreateTextureInternal(const FRHITextureCreateInfo &CreateInfo, const TCHAR *DebugName, const FRHITransientAllocationFences &Fences, uint64 TextureSize, uint32 TextureAlignment, FRHITransientHeap::FCreateTextureFunction CreateTextureFunction)
Definition RHICoreTransientResourceAllocator.cpp:636
RHICORE_API void DeallocateMemory(FRHITransientTexture *Texture, const FRHITransientAllocationFences &Fences) override
Definition RHICoreTransientResourceAllocator.cpp:735
RHICORE_API void SetCreateMode(ERHITransientResourceCreateMode InCreateMode) override
Definition RHICoreTransientResourceAllocator.cpp:765
Definition RHICoreTransientResourceAllocator.h:1089
FRHITransientResourcePageAllocator(FRHITransientPagePoolCache &InPagePoolCache)
Definition RHICoreTransientResourceAllocator.h:1091
uint32 GetPageSize() const
Definition RHICoreTransientResourceAllocator.h:1106
RHICORE_API FRHITransientTexture * CreateTexture(const FRHITextureCreateInfo &CreateInfo, const TCHAR *DebugName, const FRHITransientAllocationFences &Fences) override
Definition RHICoreTransientResourceAllocator.cpp:1400
uint32 GetPagePoolCount() const
Definition RHICoreTransientResourceAllocator.h:1108
RHICORE_API FRHITransientBuffer * CreateBuffer(const FRHIBufferCreateInfo &CreateInfo, const TCHAR *DebugName, const FRHITransientAllocationFences &Fences) override
Definition RHICoreTransientResourceAllocator.cpp:1422
RHICORE_API void DeallocateMemory(FRHITransientTexture *Texture, const FRHITransientAllocationFences &Fences) override
Definition RHICoreTransientResourceAllocator.cpp:1488
FRHITransientPagePoolCache & PagePoolCache
Definition RHICoreTransientResourceAllocator.h:1110
Definition RHITransientResourceAllocator.h:190
FRHITransientPageAllocation & GetPageAllocation()
Definition RHITransientResourceAllocator.h:292
uint64 GetHash() const
Definition RHITransientResourceAllocator.h:319
Definition RHITransientResourceAllocator.h:399
Definition RHICoreTransientResourceAllocator.h:301
virtual void GarbageCollect()=0
virtual ~IRHITransientMemoryCache()=default
Definition RHITransientResourceAllocator.h:536
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
UE_FORCEINLINE_HINT void RemoveAtSwap(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2185
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
ElementType Pop(EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:1196
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Top() UE_LIFETIMEBOUND
Definition Array.h:1248
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition AndroidPlatformMisc.h:14
Definition RHICoreTransientResourceAllocator.h:155
void Forfeit(uint64 CurrentFrameIndex, ReleaseFunctionType ReleaseFunction)
Definition RHICoreTransientResourceAllocator.h:211
uint32 GetHitCount() const
Definition RHICoreTransientResourceAllocator.h:253
TransientResourceType * Acquire(uint64 Hash, CreateFunctionType CreateFunction)
Definition RHICoreTransientResourceAllocator.h:187
TRHITransientResourceCache(uint32 InCapacity=kDefaultCapacity, uint32 InGarbageCollectLatency=kDefaultGarbageCollectLatency)
Definition RHICoreTransientResourceAllocator.h:161
static const uint32 kInfinity
Definition RHICoreTransientResourceAllocator.h:157
void Forfeit(uint64 CurrentFrameIndex)
Definition RHICoreTransientResourceAllocator.h:240
static const uint32 kDefaultGarbageCollectLatency
Definition RHICoreTransientResourceAllocator.h:159
static const uint32 kDefaultCapacity
Definition RHICoreTransientResourceAllocator.h:158
uint32 GetSize() const
Definition RHICoreTransientResourceAllocator.h:249
uint32 GetCapacity() const
Definition RHICoreTransientResourceAllocator.h:251
TConstArrayView< TransientResourceType * > GetAllocated() const
Definition RHICoreTransientResourceAllocator.h:245
float GetHitPercentage() const
Definition RHICoreTransientResourceAllocator.h:257
uint32 GetAllocatedCount() const
Definition RHICoreTransientResourceAllocator.h:247
~TRHITransientResourceCache()
Definition RHICoreTransientResourceAllocator.h:173
uint32 GetMissCount() const
Definition RHICoreTransientResourceAllocator.h:255
#define KB
Definition lz4.cpp:242
UE_REWRITE void Sort(RangeType &&Range)
Definition Sort.h:16
IndexType Partition(T *Elements, const IndexType Num, UnaryPredicate Predicate)
Definition Partition.h:18
const FVector Offset(0, 0, 20)
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
U16 Index
Definition radfft.cpp:71
Definition RHIResources.h:1321
Definition RHIResources.h:1689
Definition RHITransientResourceAllocator.h:161
Definition RHICoreTransientResourceAllocator.h:320
uint32 AcquireFence
Definition RHICoreTransientResourceAllocator.h:328
FAliasingOverlap(FRHITransientResource *InResource, uint32 InAcquireFence)
Definition RHICoreTransientResourceAllocator.h:322
FRHITransientResource * Resource
Definition RHICoreTransientResourceAllocator.h:327
FAliasingOverlap()=default
Definition RHICoreTransientResourceAllocator.h:606
uint32 HeapAlignment
Definition RHICoreTransientResourceAllocator.h:619
bool bSupportsVirtualMapping
Definition RHICoreTransientResourceAllocator.h:634
uint32 GarbageCollectLatency
Definition RHICoreTransientResourceAllocator.h:622
uint64 MinimumFirstHeapSize
Definition RHICoreTransientResourceAllocator.h:613
static RHICORE_API FInitializer CreateDefault()
Definition RHICoreTransientResourceAllocator.cpp:519
uint32 TextureCacheSize
Definition RHICoreTransientResourceAllocator.h:625
bool bSupportsAllHeapFlags
Definition RHICoreTransientResourceAllocator.h:631
uint32 BufferCacheSize
Definition RHICoreTransientResourceAllocator.h:628
static const uint32 kDefaultResourceCacheSize
Definition RHICoreTransientResourceAllocator.h:610
uint64 MinimumHeapSize
Definition RHICoreTransientResourceAllocator.h:616
Definition RHICoreTransientResourceAllocator.h:470
uint32 TextureCacheSize
Definition RHICoreTransientResourceAllocator.h:481
ERHITransientHeapFlags Flags
Definition RHICoreTransientResourceAllocator.h:478
uint64 Size
Definition RHICoreTransientResourceAllocator.h:472
uint32 Alignment
Definition RHICoreTransientResourceAllocator.h:475
uint32 BufferCacheSize
Definition RHICoreTransientResourceAllocator.h:484
Definition RHICoreTransientResourceAllocator.h:488
const uint64 Hash
Definition RHICoreTransientResourceAllocator.h:502
FRHITransientHeap & Heap
Definition RHICoreTransientResourceAllocator.h:496
const FRHITransientHeapAllocation & Allocation
Definition RHICoreTransientResourceAllocator.h:499
FResourceInitializer(const FRHITransientHeapAllocation &InAllocation, uint64 InHash)
Definition RHICoreTransientResourceAllocator.h:489
Definition RHICoreTransientResourceAllocator.h:90
FRHITransientMemoryStats()=default
uint64 AliasedSizeCurrent
Definition RHICoreTransientResourceAllocator.h:142
void AllocateBuffer(uint64 Size)
Definition RHICoreTransientResourceAllocator.h:114
void AllocateTexture(uint64 Size)
Definition RHICoreTransientResourceAllocator.h:101
void Reset()
Definition RHICoreTransientResourceAllocator.h:127
FRHITransientResourceStats Textures
Definition RHICoreTransientResourceAllocator.h:138
uint64 AliasedSize
Definition RHICoreTransientResourceAllocator.h:145
bool HasDeallocations() const
Definition RHICoreTransientResourceAllocator.h:136
void DeallocateBuffer(uint64 Size)
Definition RHICoreTransientResourceAllocator.h:121
RHICORE_API void Submit(uint64 TotalMemoryCapacity)
Definition RHICoreTransientResourceAllocator.cpp:90
FRHITransientResourceStats Buffers
Definition RHICoreTransientResourceAllocator.h:139
void DeallocateTexture(uint64 Size)
Definition RHICoreTransientResourceAllocator.h:108
void Accumulate(const FRHITransientMemoryStats &Other)
Definition RHICoreTransientResourceAllocator.h:94
Definition RHITransientResourceAllocator.h:151
TArray< FRHITransientPageSpan > Spans
Definition RHITransientResourceAllocator.h:156
Definition RHITransientResourceAllocator.h:132
Definition RHICoreTransientResourceAllocator.h:1016
static RHICORE_API FInitializer CreateDefault()
Definition RHICoreTransientResourceAllocator.cpp:1274
uint64 PoolSize
Definition RHICoreTransientResourceAllocator.h:1023
uint64 PoolSizeFirst
Definition RHICoreTransientResourceAllocator.h:1026
uint32 BufferCacheSize
Definition RHICoreTransientResourceAllocator.h:1038
uint32 TextureCacheSize
Definition RHICoreTransientResourceAllocator.h:1035
uint32 PageSize
Definition RHICoreTransientResourceAllocator.h:1029
static const uint32 kDefaultResourceCacheSize
Definition RHICoreTransientResourceAllocator.h:1020
uint32 GarbageCollectLatency
Definition RHICoreTransientResourceAllocator.h:1032
Definition RHICoreTransientResourceAllocator.h:903
uint32 AllocationCount
Definition RHICoreTransientResourceAllocator.h:928
uint32 PagesMapped
Definition RHICoreTransientResourceAllocator.h:934
uint32 AllocationMatchingCount
Definition RHICoreTransientResourceAllocator.h:929
uint32 PagesAllocated
Definition RHICoreTransientResourceAllocator.h:932
const TArray< FRHITransientPagePoolAllocation, TInlineAllocator< 8 > > AllocationsBefore
Definition RHICoreTransientResourceAllocator.h:923
TArray< FRHITransientPagePoolAllocation > & Allocations
Definition RHICoreTransientResourceAllocator.h:921
bool IsComplete() const
Definition RHICoreTransientResourceAllocator.h:918
uint32 MaxAllocationPage
Definition RHICoreTransientResourceAllocator.h:931
uint32 PageSpansAllocated
Definition RHICoreTransientResourceAllocator.h:933
const FRHITransientAllocationFences Fences
Definition RHICoreTransientResourceAllocator.h:926
const uint64 Size
Definition RHICoreTransientResourceAllocator.h:925
FAllocationContext(FRHITransientResource &InResource, const FRHITransientAllocationFences &InFences, uint32 InPageSize)
Definition RHICoreTransientResourceAllocator.h:904
const uint64 GpuVirtualAddress
Definition RHICoreTransientResourceAllocator.h:924
TArray< FRHITransientPageSpan > & Spans
Definition RHICoreTransientResourceAllocator.h:922
uint32 PagesRemaining
Definition RHICoreTransientResourceAllocator.h:930
FRHITransientResource & Resource
Definition RHICoreTransientResourceAllocator.h:920
Definition RHICoreTransientResourceAllocator.h:890
uint32 PageSize
Definition RHICoreTransientResourceAllocator.h:892
uint32 PageCount
Definition RHICoreTransientResourceAllocator.h:891
Definition RHICoreTransientResourceAllocator.h:957
uint32 SourcePageCount
Definition RHICoreTransientResourceAllocator.h:975
uint32 PageSpanCount
Definition RHICoreTransientResourceAllocator.h:977
FPageMapRequest()=default
uint64 DestinationAddress
Definition RHICoreTransientResourceAllocator.h:973
FPageMapRequest(uint64 InDestinationAddress, uint64 InSourcePagePoolAddress, uint32 InSourcePageCount, uint32 InPageSpanOffset, uint32 InPageSpanCount)
Definition RHICoreTransientResourceAllocator.h:960
uint64 SourcePagePoolAddress
Definition RHICoreTransientResourceAllocator.h:974
uint32 PageSpanOffset
Definition RHICoreTransientResourceAllocator.h:976
Definition RHITransientResourceAllocator.h:122
Definition RHICoreTransientResourceAllocator.h:53
uint32 AllocationCount
Definition RHICoreTransientResourceAllocator.h:79
void Add(const FRHITransientResourceStats &Other)
Definition RHICoreTransientResourceAllocator.h:56
FRHITransientResourceStats()=default
void Deallocate(uint64 Size)
Definition RHICoreTransientResourceAllocator.h:70
uint64 AllocatedSize
Definition RHICoreTransientResourceAllocator.h:76
void Allocate(uint64 Size)
Definition RHICoreTransientResourceAllocator.h:64
uint32 CreateCount
Definition RHICoreTransientResourceAllocator.h:85
uint32 DeallocationCount
Definition RHICoreTransientResourceAllocator.h:82
Definition OpenGLBuffer.cpp:37
Definition NumericLimits.h:41