15#define SUB_ALLOCATED_DEFAULT_ALLOCATIONS 1
20#if !defined(USE_BUFFER_POOL_ALLOCATOR)
21#define USE_BUFFER_POOL_ALLOCATOR (PLATFORM_WINDOWS)
24#if !defined(USE_TEXTURE_POOL_ALLOCATOR)
25#define USE_TEXTURE_POOL_ALLOCATOR (PLATFORM_WINDOWS)
47#define D3D12RHI_SEGREGATED_TEXTURE_ALLOC (PLATFORM_WINDOWS)
48#define D3D12RHI_SEGLIST_ALLOC_TRACK_WASTAGE (!(UE_BUILD_TEST || UE_BUILD_SHIPPING))
50#define D3D12RHI_SEGLIST_ALLOC_TRACK_LEAK_STACK_DEPTH 12
52#define D3D12RHI_TRACK_DETAILED_STATS (PLATFORM_WINDOWS && !(UE_BUILD_TEST || UE_BUILD_SHIPPING))
109#if defined(D3D12RHI_TRACK_DETAILED_STATS)
129#define MIN_PLACED_RESOURCE_SIZE (64 * 1024)
130#define D3D_BUFFER_ALIGNMENT (64 * 1024)
132#if defined(D3D12RHI_TRACK_DETAILED_STATS)
133#define INCREASE_ALLOC_COUNTER(A, B) (A = A + B);
134#define DECREASE_ALLOC_COUNTER(A, B) (A = A - B);
136#define INCREASE_ALLOC_COUNTER(A, B)
137#define DECREASE_ALLOC_COUNTER(A, B)
174 return FreeBlocks[MaxOrder].
Num() == 1;
203#if defined(D3D12RHI_TRACK_DETAILED_STATS)
211 uint64 LastUsedFrameFence;
216 bool HeapFullMessageDisplayed;
232 return offset ^ size;
241 void DeallocateInternal(RetiredBlock&
Block);
348#if SUB_ALLOCATED_DEFAULT_ALLOCATIONS
349 static const uint32 MIN_HEAP_SIZE = 256 * 1024;
351 static const uint32 MIN_HEAP_SIZE = 64 * 1024;
354 static const uint32 BucketShift = 6;
355 static const uint32 NumBuckets = 22;
365 const uint64 BlockRetentionFrameCount;
414 const D3D12_RESOURCE_DESC&
InDesc,
431#if USE_BUFFER_POOL_ALLOCATOR
447 const D3D12_RESOURCE_DESC&
pDesc,
598 bool IsArrayIdxValid()
const {
return ArrayIdx >= 0; }
600 bool IsFull(
uint32 HeapSize)
const
602 check(FirstFreeOffset <= HeapSize);
603 return !FreeBlockOffsets.
Num() && FirstFreeOffset == HeapSize;
608 return FreeBlockOffsets.
Num() * BlockSize == FirstFreeOffset;
614 if (!FreeBlockOffsets.
Num())
616 uint32 Ret = FirstFreeOffset;
617 FirstFreeOffset += BlockSize;
622 return FreeBlockOffsets.
Pop();
641#if D3D12RHI_SEGLIST_ALLOC_TRACK_WASTAGE
642 , TotalBytesAllocated(0)
645 check(!(HeapSize % BlockSize));
646 check(HeapSize / BlockSize > 1);
654 for (
const auto&
Heap : FreeHeaps)
677 if (!!FreeHeaps.
Num())
694#if D3D12RHI_SEGLIST_ALLOC_TRACK_WASTAGE
695 TotalBytesAllocated += HeapSize;
710 const bool bFull =
Heap->IsFull(HeapSize);
719 else if (
Heap->IsEmpty(BlockSize))
730 FreeHeaps[Idx]->ArrayIdx = Idx;
732#if D3D12RHI_SEGLIST_ALLOC_TRACK_WASTAGE
733 TotalBytesAllocated -= HeapSize;
749#if D3D12RHI_SEGLIST_ALLOC_TRACK_WASTAGE
750 uint64 TotalBytesAllocated;
756#if !D3D12RHI_SEGLIST_ALLOC_TRACK_WASTAGE
757static_assert(
sizeof(
FD3D12SegList) <= 64,
"Try to make it fit in a single cacheline");
776 check(!SegLists.Num());
778 check(!DeferredDeletionQueue.
Num());
790 check(!(Alignment & Alignment - 1));
792 const uint64 BlockSize = CalculateBlockSize(SizeInBytes, Alignment);
793 if (ShouldPool(BlockSize))
803 const uint32 HeapSize = CalculateHeapSize(BlockSize);
809 SegLists.Add(BlockSize,
new FD3D12SegList(BlockSize, HeapSize));
820 OnAlloc(Ret,
OutHeap.GetReference(), SizeInBytes);
835#if D3D12RHI_SEGLIST_ALLOC_TRACK_WASTAGE
840 for (
const auto& Pair : SegLists)
872 return (SizeInBytes + Alignment - 1) & ~(Alignment - 1);
875 bool ShouldPool(
uint64 BlockSize)
const
877 return BlockSize * 2 <= MaxPoolSize;
882 check(MinPoolSize + BlockSize - 1 > MinPoolSize);
899 template <
typename AllocX,
typename AllocY>
905 mutable FRWLock SegListsRWLock;
910 const uint32 MinNumToPool;
913#if D3D12RHI_SEGLIST_ALLOC_TRACK_WASTAGE
934#if USE_TEXTURE_POOL_ALLOCATOR
968#elif D3D12RHI_SEGREGATED_TEXTURE_ALLOC
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
ED3D12Access
Definition D3D12Access.h:15
const uint32 kD3D12ManualSubAllocationAlignment
Definition D3D12Allocation.h:79
FORCEINLINE uint32 GetTypeHash(const FD3D12SegListAllocatorLeakTrack &S)
Definition D3D12Allocation.h:67
#define D3D12RHI_SEGLIST_ALLOC_TRACK_LEAK_STACK_DEPTH
Definition D3D12Allocation.h:50
FD3D12DefaultBufferPool FD3D12BufferPool
Definition D3D12Allocation.h:434
EResourceAllocationStrategy
Definition D3D12PoolAllocator.h:8
class FD3D12BuddyAllocator FD3D12BaseAllocatorType
Definition D3D12Resources.h:586
ED3D12ResourceStateMode
Definition D3D12Resources.h:52
uint32 HeapId
Definition MemoryTrace.h:30
EBufferUsageFlags
Definition RHIDefinitions.h:892
UE::TConsumeAllMpmcQueue< FRHIResource * > PendingDeletes
Definition RHIResources.cpp:12
@ SLT_ReadOnly
Definition ScopeRWLock.h:138
@ SLT_Write
Definition ScopeRWLock.h:139
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
Definition D3D12RHICommon.h:54
Definition D3D12Adapter.h:136
Definition D3D12Allocation.h:307
void UpdateMemoryStats(uint32 &IOMemoryAllocated, uint32 &IOMemoryUsed, uint32 &IOMemoryFree, uint32 &IOAlignmentWaste, uint32 &IOAllocatedPageCount, uint32 &IOFullPageCount)
Definition D3D12Allocation.h:327
void Destroy()
Definition D3D12Allocation.cpp:1019
void Reset()
Definition D3D12Allocation.cpp:1096
bool TryAllocate(uint32 SizeInBytes, uint32 Alignment, FD3D12ResourceLocation &ResourceLocation)
Definition D3D12Allocation.cpp:897
void ReleaseAllResources()
Definition D3D12Allocation.cpp:1064
void CleanUpAllocations(uint64 InFrameLag)
Definition D3D12Allocation.cpp:1023
void Initialize()
Definition D3D12Allocation.cpp:1014
void Deallocate(FD3D12ResourceLocation &ResourceLocation)
Definition D3D12Allocation.cpp:1001
void DumpAllocatorStats(class FOutputDevice &Ar)
Definition D3D12Allocation.cpp:1060
Definition D3D12Allocation.h:142
uint64 GetAllocationOffsetInBytes(const FD3D12BuddyAllocatorPrivateData &AllocatorPrivateData) const
Definition D3D12Allocation.h:179
uint64 GetLastUsedFrameFence() const
Definition D3D12Allocation.h:176
void Destroy()
Definition D3D12Allocation.cpp:350
TRefCountPtr< FD3D12Heap > BackingHeap
Definition D3D12Allocation.h:195
void CleanUpAllocations()
Definition D3D12Allocation.cpp:596
uint32 GetTotalSizeUsed() const
Definition D3D12Allocation.h:178
bool IsEmpty()
Definition D3D12Allocation.h:172
const uint32 MaxBlockSize
Definition D3D12Allocation.h:190
TRefCountPtr< FD3D12Resource > BackingResource
Definition D3D12Allocation.h:194
void Reset()
Definition D3D12Allocation.cpp:737
bool IsOwner(FD3D12ResourceLocation &ResourceLocation)
Definition D3D12Allocation.h:183
void Deallocate(FD3D12ResourceLocation &ResourceLocation)
Definition D3D12Allocation.cpp:530
void Initialize()
Definition D3D12Allocation.cpp:261
const EResourceAllocationStrategy AllocationStrategy
Definition D3D12Allocation.h:192
void DumpAllocatorStats(class FOutputDevice &Ar)
Definition D3D12Allocation.cpp:663
const uint32 MinBlockSize
Definition D3D12Allocation.h:191
FD3D12Heap * GetBackingHeap()
Definition D3D12Allocation.h:181
void UpdateMemoryStats(uint32 &IOMemoryAllocated, uint32 &IOMemoryUsed, uint32 &IOMemoryFree, uint32 &IOAlignmentWaste, uint32 &IOAllocatedPageCount, uint32 &IOFullPageCount)
Definition D3D12Allocation.cpp:692
void ReleaseAllResources()
Definition D3D12Allocation.cpp:627
bool TryAllocate(uint32 SizeInBytes, uint32 Alignment, FD3D12ResourceLocation &ResourceLocation)
Definition D3D12Allocation.cpp:514
Definition D3D12View.h:336
Definition D3D12CommandContext.h:1193
Definition D3D12Allocation.h:440
void UpdateMemoryStats()
Definition D3D12Allocation.cpp:1755
void FreeDefaultBufferPools()
Definition D3D12Allocation.cpp:1679
void AllocDefaultResource(D3D12_HEAP_TYPE InHeapType, const D3D12_RESOURCE_DESC &pDesc, EBufferUsageFlags InBufferUsage, ED3D12ResourceStateMode InResourceStateMode, ED3D12Access InCreateD3D12Access, FD3D12ResourceLocation &ResourceLocation, uint32 Alignment, const TCHAR *Name)
Definition D3D12Allocation.cpp:1577
void CleanupFreeBlocks(uint64 InFrameLag)
Definition D3D12Allocation.cpp:1742
static ED3D12Access GetDefaultInitialD3D12Access(D3D12_HEAP_TYPE InHeapType, EBufferUsageFlags InBufferFlags, ED3D12ResourceStateMode InResourceStateMode)
Definition D3D12Allocation.cpp:1543
static bool IsPlacedResource(D3D12_RESOURCE_FLAGS InResourceFlags, ED3D12ResourceStateMode InResourceStateMode, uint32 Alignment)
Definition D3D12Allocation.cpp:1536
Definition D3D12Allocation.h:406
static FD3D12ResourceInitConfig GetResourceAllocatorInitConfig(D3D12_HEAP_TYPE InHeapType, D3D12_RESOURCE_FLAGS InResourceFlags, EBufferUsageFlags InBufferUsage)
Definition D3D12Allocation.cpp:1247
void UpdateMemoryStats(uint32 &IOMemoryAllocated, uint32 &IOMemoryUsed, uint32 &IOMemoryFree, uint32 &IOMemoryEndFree, uint32 &IOAlignmentWaste, uint32 &IOAllocatedPageCount, uint32 &IOFullPageCount)
Definition D3D12Allocation.cpp:1452
~FD3D12DefaultBufferPool()
Definition D3D12Allocation.h:409
static EResourceAllocationStrategy GetResourceAllocationStrategy(D3D12_RESOURCE_FLAGS InResourceFlags, ED3D12ResourceStateMode InResourceStateMode, uint32 Alignment)
Definition D3D12Allocation.cpp:1290
void CleanUpAllocations(uint64 InFrameLag)
Definition D3D12Allocation.cpp:1330
bool SupportsAllocation(D3D12_HEAP_TYPE InHeapType, D3D12_RESOURCE_FLAGS InResourceFlags, EBufferUsageFlags InBufferUsage, ED3D12ResourceStateMode InResourceStateMode, uint32 Alignment) const
Definition D3D12Allocation.cpp:1322
void AllocDefaultResource(D3D12_HEAP_TYPE InHeapType, const D3D12_RESOURCE_DESC &InDesc, EBufferUsageFlags InBufferUsage, ED3D12ResourceStateMode InResourceStateMode, ED3D12Access InCreateD3D12Access, uint32 InAlignment, const TCHAR *InName, FD3D12ResourceLocation &ResourceLocation)
Definition D3D12Allocation.cpp:1336
Definition D3D12RHICommon.h:78
FORCEINLINE FD3D12Device * GetParentDevice() const
Definition D3D12RHICommon.h:85
FD3D12Device * Parent
Definition D3D12RHICommon.h:80
Definition D3D12Device.h:176
Definition D3D12Allocation.h:508
FD3D12FastAllocatorPage * RequestFastAllocatorPage()
Definition D3D12Allocation.cpp:2310
void CleanupPages(uint64 FrameLag)
Definition D3D12Allocation.cpp:2376
uint32 GetPageSize() const
Definition D3D12Allocation.h:518
void ReturnFastAllocatorPage(FD3D12FastAllocatorPage *Page)
Definition D3D12Allocation.cpp:2368
void Destroy()
Definition D3D12Allocation.cpp:2406
const D3D12_HEAP_PROPERTIES HeapProperties
Definition D3D12Allocation.h:528
D3D12_HEAP_TYPE GetHeapType() const
Definition D3D12Allocation.h:520
TArray< FD3D12FastAllocatorPage * > Pool
Definition D3D12Allocation.h:530
const uint32 PageSize
Definition D3D12Allocation.h:527
bool IsCPUWritable() const
Definition D3D12Allocation.h:521
Definition D3D12Allocation.h:534
FD3D12FastAllocatorPagePool PagePool
Definition D3D12Allocation.h:545
FCriticalSection CS
Definition D3D12Allocation.h:549
FD3D12FastAllocatorPage * CurrentAllocatorPage
Definition D3D12Allocation.h:547
void Destroy()
Definition D3D12Allocation.cpp:2284
void CleanupPages(uint64 FrameLag)
Definition D3D12Allocation.cpp:2278
void * Allocate(uint32 Size, uint32 Alignment, class FD3D12ResourceLocation *ResourceLocation)
Definition D3D12Allocation.cpp:2208
Definition D3D12Allocation.h:553
void ClearResource()
Definition D3D12Allocation.h:558
void * Allocate(uint32 Bytes, class FD3D12ResourceLocation &OutLocation, FD3D12ConstantBufferView *OutCBView)
Definition D3D12Allocation.cpp:2431
SGPU_CONSTEXPR FRHIGPUMask GetVisibilityMask() const
Definition D3D12RHICommon.h:116
Definition D3D12Resources.h:73
void SetHeap(ID3D12Heap *HeapIn, const TCHAR *const InName, bool bTrack=true, bool bForceGetGPUAddress=false)
Definition D3D12Resources.cpp:704
void BeginTrackingResidency(uint64 Size)
Definition D3D12Resources.cpp:757
Definition D3D12Allocation.h:254
const EResourceAllocationStrategy GetAllocationStrategy() const
Definition D3D12Allocation.h:268
TArray< FD3D12BuddyAllocator * > Allocators
Definition D3D12Allocation.h:295
void DumpAllocatorStats(class FOutputDevice &Ar)
Definition D3D12Allocation.cpp:849
void ReleaseAllResources()
Definition D3D12Allocation.cpp:866
~FD3D12MultiBuddyAllocator()
Definition D3D12Allocation.cpp:770
FD3D12BuddyAllocator * CreateNewAllocator(uint32 InMinSizeInBytes)
Definition D3D12Allocation.cpp:797
const EResourceAllocationStrategy AllocationStrategy
Definition D3D12Allocation.h:291
const uint32 DefaultPoolSize
Definition D3D12Allocation.h:293
void Deallocate(FD3D12ResourceLocation &ResourceLocation)
Definition D3D12Allocation.cpp:791
bool TryAllocate(uint32 SizeInBytes, uint32 Alignment, FD3D12ResourceLocation &ResourceLocation)
Definition D3D12Allocation.cpp:775
void CleanUpAllocations(uint64 InFrameLag)
Definition D3D12Allocation.cpp:823
void Destroy()
Definition D3D12Allocation.cpp:818
const uint32 MinBlockSize
Definition D3D12Allocation.h:292
void Initialize()
Definition D3D12Allocation.cpp:813
void UpdateMemoryStats(uint32 &IOMemoryAllocated, uint32 &IOMemoryUsed, uint32 &IOMemoryFree, uint32 &IOAlignmentWaste, uint32 &IOAllocatedPageCount, uint32 &IOFullPageCount)
Definition D3D12Allocation.cpp:854
void Reset()
Definition D3D12Allocation.cpp:880
Definition D3D12RHICommon.h:153
D3D12 specific implementation of the FRHIPoolAllocator.
Definition D3D12PoolAllocator.h:130
Definition D3D12Allocation.h:84
bool Initialized
Definition D3D12Allocation.h:101
const uint32 GetMaximumAllocationSizeForPooling() const
Definition D3D12Allocation.h:95
~FD3D12ResourceAllocator()
Definition D3D12Allocation.cpp:222
uint32 PeakUsage
Definition D3D12Allocation.h:113
uint32 SpaceActualUsed
Definition D3D12Allocation.h:111
const FD3D12ResourceInitConfig & GetInitConfig() const
Definition D3D12Allocation.h:94
uint32 NumBlocksInDeferredDeletionQueue
Definition D3D12Allocation.h:112
uint32 SpaceAlignedUsed
Definition D3D12Allocation.h:110
FCriticalSection CS
Definition D3D12Allocation.h:107
const FD3D12ResourceInitConfig InitConfig
Definition D3D12Allocation.h:99
const FString DebugName
Definition D3D12Allocation.h:100
uint32 FailedAllocationSpace
Definition D3D12Allocation.h:114
const uint32 MaximumAllocationSizeForPooling
Definition D3D12Allocation.h:105
Definition D3D12Resources.h:641
FD3D12BaseAllocatorType * GetAllocator()
Definition D3D12Resources.h:697
void Clear()
Definition D3D12Resources.cpp:1179
Definition D3D12Resources.h:181
Definition D3D12Allocation.h:572
Definition D3D12Allocation.h:761
FD3D12SegListAllocator & operator=(FD3D12SegListAllocator &&)=delete
uint32 Allocate(uint64 SizeInBytes, uint64 Alignment, TRefCountPtr< FD3D12SegHeap > &OutHeap)
Definition D3D12Allocation.h:788
void Destroy()
Definition D3D12Allocation.cpp:2591
FD3D12SegListAllocator(FD3D12SegListAllocator &&)=delete
void CleanUpAllocations()
Definition D3D12Allocation.cpp:2559
FD3D12SegListAllocator & operator=(const FD3D12SegListAllocator &)=delete
FD3D12SegListAllocator(const FD3D12SegListAllocator &)=delete
static constexpr uint32 InvalidOffset
Definition D3D12Allocation.h:763
void Deallocate(FD3D12Resource *PlacedResource, uint32 Offset, uint32 SizeInBytes)
Definition D3D12Allocation.cpp:2510
~FD3D12SegListAllocator()
Definition D3D12Allocation.h:774
bool GetMemoryStats(uint64 &OutTotalAllocated, uint64 &OutTotalUnused) const
Definition D3D12Allocation.h:833
Definition D3D12Allocation.h:636
Definition D3D12Allocation.h:1013
bool GetMemoryStats(uint64 &OutTotalAllocated, uint64 &OutTotalUnused) const
Definition D3D12Allocation.h:1030
HRESULT AllocateTexture(FD3D12ResourceDesc Desc, const D3D12_CLEAR_VALUE *ClearValue, EPixelFormat UEFormat, FD3D12ResourceLocation &TextureLocation, ED3D12Access InInitialD3D12Access, ED3D12Access InDefaultD3D12Access, const TCHAR *Name)
Definition D3D12Allocation.cpp:2152
void BeginFrame(FD3D12ContextArray const &Contexts)
Definition D3D12Allocation.h:1026
void Destroy()
Definition D3D12Allocation.h:1029
void CleanUpAllocations()
Definition D3D12Allocation.h:1027
Definition D3D12Allocation.h:997
HRESULT AllocateTexture(FD3D12ResourceDesc Desc, const D3D12_CLEAR_VALUE *ClearValue, FD3D12ResourceLocation &TextureLocation, ED3D12Access InInitialD3D12Access, ED3D12Access InDefaultD3D12Access, const TCHAR *Name)
Definition D3D12Allocation.cpp:2082
~FD3D12TextureAllocator()
Definition D3D12Allocation.cpp:2078
Definition D3D12Allocation.h:375
void Destroy()
Definition D3D12Allocation.cpp:1148
void CleanUpAllocations(uint64 InFrameLag)
Definition D3D12Allocation.cpp:1204
void * AllocUploadResource(uint32 InSize, uint32 InAlignment, FD3D12ResourceLocation &ResourceLocation)
Definition D3D12Allocation.cpp:1156
void Init()
Definition D3D12Allocation.h:380
void * AllocFastConstantAllocationPage(uint32 InSize, uint32 InAlignment, FD3D12ResourceLocation &ResourceLocation)
Definition D3D12Allocation.cpp:1193
void UpdateMemoryStats()
Definition D3D12Allocation.cpp:1215
Definition OutputDevice.h:133
Definition RHICommandList.h:455
Definition ScopeRWLock.h:199
Definition ScopeLock.h:141
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2083
UE_FORCEINLINE_HINT void RemoveAtSwap(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2185
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
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
UE_FORCEINLINE_HINT ReferencedType * GetReference() const
Definition RefCounting.h:584
int
Definition TestServer.py:515
UE_STRING_CLASS Result(Forward< LhsType >(Lhs), RhsLen)
Definition String.cpp.inl:732
Definition D3D12Resources.h:589
Definition D3D12Allocation.h:477
FD3D12FastAllocatorPage(uint32 Size)
Definition D3D12Allocation.h:484
void Reset()
Definition D3D12Allocation.h:492
const uint32 PageSize
Definition D3D12Allocation.h:500
void UpdateFence()
Definition D3D12Allocation.cpp:2359
TRefCountPtr< FD3D12Resource > FastAllocBuffer
Definition D3D12Allocation.h:501
uint32 NextFastAllocOffset
Definition D3D12Allocation.h:502
uint64 FrameFence
Definition D3D12Allocation.h:504
void * FastAllocData
Definition D3D12Allocation.h:503
FD3D12FastAllocatorPage()
Definition D3D12Allocation.h:478
~FD3D12FastAllocatorPage()
Definition D3D12Allocation.cpp:2351
Definition D3D12Resources.h:134
Definition D3D12PoolAllocator.h:24
Definition D3D12Allocation.h:55
uint32 Size
Definition D3D12Allocation.h:58
void * Heap
Definition D3D12Allocation.h:57
bool operator==(const FD3D12SegListAllocatorLeakTrack &Other) const
Definition D3D12Allocation.h:61
uint32 Offset
Definition D3D12Allocation.h:56
uint64 Stack[D3D12RHI_SEGLIST_ALLOC_TRACK_LEAK_STACK_DEPTH]
Definition D3D12Allocation.h:60
uint32 StackDepth
Definition D3D12Allocation.h:59
Definition D3D12Util.h:275