UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GPUDefragAllocator.cpp File Reference
#include "GPUDefragAllocator.h"
#include "HAL/IConsoleManager.h"
#include "Stats/StatsMisc.h"
#include "RHI.h"
#include "Stats/Stats.h"

Macros

#define PARTIALDEFRAG_TIMELIMIT   (1.0/1000.0)
 
#define DEFRAG_SMALL_CHUNK_SIZE   (16*1024-1)
 
#define DEFRAG_SMALL_CHUNK_COUNTER_MIN   (5*30)
 
#define DEFRAG_SMALL_CHUNK_COUNTER_MAX   (10*30)
 
#define DEFRAG_CHUNK_COUNTER_MIN   (20)
 
#define DEFRAG_CHUNK_COUNTER_MAX   (80)
 
#define FGPUDEFRAGALLOCATOR_FMEMORYCHUNK_MAINTAIN_SORT_ORDER   1
 
#define GPU_DEFRAG_SANITYCHECK   0
 

Functions

 DECLARE_STATS_GROUP (TEXT("TexturePool"), STATGROUP_TexturePool, STATCAT_ADVANCED)
 
 DECLARE_CYCLE_STAT (TEXT("Defragmentation"), STAT_TexturePool_DefragTime, STATGROUP_TexturePool)
 
 DECLARE_CYCLE_STAT (TEXT("Blocked By GPU Relocation"), STAT_TexturePool_Blocked, STATGROUP_TexturePool)
 
 DECLARE_MEMORY_STAT_POOL (TEXT("Allocated"), STAT_TexturePool_Allocated, STATGROUP_TexturePool, FPlatformMemory::MCR_GPUDefragPool)
 
 DECLARE_MEMORY_STAT_POOL (TEXT("Free"), STAT_TexturePool_Free, STATGROUP_TexturePool, FPlatformMemory::MCR_GPUDefragPool)
 
 DECLARE_MEMORY_STAT_POOL (TEXT("Largest Hole"), STAT_TexturePool_LargestHole, STATGROUP_TexturePool, FPlatformMemory::MCR_GPUDefragPool)
 
 DECLARE_MEMORY_STAT_POOL (TEXT("Relocating Memory"), STAT_TexturePool_RelocatedSize, STATGROUP_TexturePool, FPlatformMemory::MCR_GPUDefragPool)
 
 DECLARE_DWORD_ACCUMULATOR_STAT (TEXT("Num Relocations"), STAT_TexturePool_NumRelocations, STATGROUP_TexturePool)
 
 DECLARE_DWORD_ACCUMULATOR_STAT (TEXT("Num Holes"), STAT_TexturePool_NumHoles, STATGROUP_TexturePool)
 
 DECLARE_DWORD_ACCUMULATOR_STAT (TEXT("Total Async Reallocs"), STAT_TexturePool_TotalAsyncReallocations, STATGROUP_TexturePool)
 
 DECLARE_DWORD_ACCUMULATOR_STAT (TEXT("Total Async Allocs"), STAT_TexturePool_TotalAsyncAllocations, STATGROUP_TexturePool)
 
 DECLARE_DWORD_ACCUMULATOR_STAT (TEXT("Total Async Cancels"), STAT_TexturePool_TotalAsyncCancellations, STATGROUP_TexturePool)
 
void FillVizualizeData (FColor *TextureData, int32 &X, int32 &Y, int32 &NumBytes, const FColor &Color1, const FColor &Color2, const int32 SizeX, const int32 SizeY, const int32 Pitch, const int32 PixelSize)
 

Variables

voidGBestFitAllocatorFreePointer = nullptr
 

Macro Definition Documentation

◆ DEFRAG_CHUNK_COUNTER_MAX

#define DEFRAG_CHUNK_COUNTER_MAX   (80)

◆ DEFRAG_CHUNK_COUNTER_MIN

#define DEFRAG_CHUNK_COUNTER_MIN   (20)

◆ DEFRAG_SMALL_CHUNK_COUNTER_MAX

#define DEFRAG_SMALL_CHUNK_COUNTER_MAX   (10*30)

◆ DEFRAG_SMALL_CHUNK_COUNTER_MIN

#define DEFRAG_SMALL_CHUNK_COUNTER_MIN   (5*30)

◆ DEFRAG_SMALL_CHUNK_SIZE

#define DEFRAG_SMALL_CHUNK_SIZE   (16*1024-1)

◆ FGPUDEFRAGALLOCATOR_FMEMORYCHUNK_MAINTAIN_SORT_ORDER

#define FGPUDEFRAGALLOCATOR_FMEMORYCHUNK_MAINTAIN_SORT_ORDER   1

◆ GPU_DEFRAG_SANITYCHECK

#define GPU_DEFRAG_SANITYCHECK   0

◆ PARTIALDEFRAG_TIMELIMIT

#define PARTIALDEFRAG_TIMELIMIT   (1.0/1000.0)

Function Documentation

◆ DECLARE_CYCLE_STAT() [1/2]

DECLARE_CYCLE_STAT ( TEXT("Blocked By GPU Relocation" ,
STAT_TexturePool_Blocked  ,
STATGROUP_TexturePool   
)

◆ DECLARE_CYCLE_STAT() [2/2]

DECLARE_CYCLE_STAT ( TEXT("Defragmentation")  ,
STAT_TexturePool_DefragTime  ,
STATGROUP_TexturePool   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT() [1/5]

DECLARE_DWORD_ACCUMULATOR_STAT ( TEXT("Num Holes" ,
STAT_TexturePool_NumHoles  ,
STATGROUP_TexturePool   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT() [2/5]

DECLARE_DWORD_ACCUMULATOR_STAT ( TEXT("Num Relocations" ,
STAT_TexturePool_NumRelocations  ,
STATGROUP_TexturePool   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT() [3/5]

DECLARE_DWORD_ACCUMULATOR_STAT ( TEXT("Total Async Allocs" ,
STAT_TexturePool_TotalAsyncAllocations  ,
STATGROUP_TexturePool   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT() [4/5]

DECLARE_DWORD_ACCUMULATOR_STAT ( TEXT("Total Async Cancels" ,
STAT_TexturePool_TotalAsyncCancellations  ,
STATGROUP_TexturePool   
)

◆ DECLARE_DWORD_ACCUMULATOR_STAT() [5/5]

DECLARE_DWORD_ACCUMULATOR_STAT ( TEXT("Total Async Reallocs" ,
STAT_TexturePool_TotalAsyncReallocations  ,
STATGROUP_TexturePool   
)

◆ DECLARE_MEMORY_STAT_POOL() [1/4]

DECLARE_MEMORY_STAT_POOL ( TEXT("Allocated")  ,
STAT_TexturePool_Allocated  ,
STATGROUP_TexturePool  ,
FPlatformMemory::MCR_GPUDefragPool   
)

◆ DECLARE_MEMORY_STAT_POOL() [2/4]

DECLARE_MEMORY_STAT_POOL ( TEXT("Free")  ,
STAT_TexturePool_Free  ,
STATGROUP_TexturePool  ,
FPlatformMemory::MCR_GPUDefragPool   
)

◆ DECLARE_MEMORY_STAT_POOL() [3/4]

DECLARE_MEMORY_STAT_POOL ( TEXT("Largest Hole" ,
STAT_TexturePool_LargestHole  ,
STATGROUP_TexturePool  ,
FPlatformMemory::MCR_GPUDefragPool   
)

◆ DECLARE_MEMORY_STAT_POOL() [4/4]

DECLARE_MEMORY_STAT_POOL ( TEXT("Relocating Memory" ,
STAT_TexturePool_RelocatedSize  ,
STATGROUP_TexturePool  ,
FPlatformMemory::MCR_GPUDefragPool   
)

◆ DECLARE_STATS_GROUP()

DECLARE_STATS_GROUP ( TEXT("TexturePool")  ,
STATGROUP_TexturePool  ,
STATCAT_ADVANCED   
)

◆ FillVizualizeData()

void FillVizualizeData ( FColor TextureData,
int32 X,
int32 Y,
int32 NumBytes,
const FColor Color1,
const FColor Color2,
const int32  SizeX,
const int32  SizeY,
const int32  Pitch,
const int32  PixelSize 
)

Helper function to fill in one gradient bar in the texture, for memory visualization purposes.

Variable Documentation

◆ GBestFitAllocatorFreePointer

void* GBestFitAllocatorFreePointer = nullptr

For debugging minidumps and release builds.