UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VulkanRHI::FVulkanResourceHeap Class Reference

#include <VulkanMemory.h>

Public Member Functions

 FVulkanResourceHeap (FMemoryManager *InOwner, uint32 InMemoryTypeIndex, uint32 InOverridePageSize=0)
 
 ~FVulkanResourceHeap ()
 
void FreePage (FVulkanSubresourceAllocator *InPage)
 
void ReleasePage (FVulkanSubresourceAllocator *InPage)
 
FMemoryManagerGetOwner ()
 
bool IsHostCachedSupported () const
 
bool IsLazilyAllocatedSupported () const
 
uint32 GetMemoryTypeIndex () const
 
uint64 EvictOne (FVulkanDevice &Device, const FVulkanContextArray &Contexts)
 
void DefragTick (FVulkanDevice &Device, const FVulkanContextArray &Contexts, uint32 Count)
 
void DumpMemory (FResourceHeapStats &Stats)
 
void SetDefragging (FVulkanSubresourceAllocator *Allocator)
 
bool GetIsDefragging (FVulkanSubresourceAllocator *Allocator)
 
uint32 GetPageSizeBucket (FVulkanPageSizeBucket &BucketOut, EType Type, uint32 AllocationSize, bool bForceSingleAllocation)
 

Protected Types

enum  { MAX_BUCKETS = 5 }
 

Protected Member Functions

uint32 GetPageSize ()
 
bool TryRealloc (FVulkanAllocation &OutAllocation, FVulkanEvictable *AllocationOwner, EType Type, uint32 Size, uint32 Alignment, EVulkanAllocationMetaType MetaType)
 
bool AllocateResource (FVulkanAllocation &OutAllocation, FVulkanEvictable *AllocationOwner, EType Type, uint32 Size, uint32 Alignment, bool bMapAllocation, bool bForceSeparateAllocation, EVulkanAllocationMetaType MetaType, bool bExternal, const char *File, uint32 Line)
 
bool AllocateDedicatedImage (FVulkanAllocation &OutAllocation, FVulkanEvictable *AllocationOwner, VkImage Image, uint32 Size, uint32 Alignment, EVulkanAllocationMetaType MetaType, bool bExternal, const char *File, uint32 Line)
 

Protected Attributes

TArray< FVulkanPageSizeBucket, TFixedAllocator< MAX_BUCKETS > > PageSizeBuckets
 
FMemoryManagerOwner
 
uint16 MemoryTypeIndex
 
const uint16 HeapIndex
 
bool bIsHostCachedSupported
 
bool bIsLazilyAllocatedSupported
 
uint8 DefragCountDown = 0
 
uint32 OverridePageSize
 
uint32 PeakPageSize
 
uint64 UsedMemory
 
uint32 PageIDCounter
 
FCriticalSection PagesLock
 
TArray< FVulkanSubresourceAllocator * > ActivePages [MAX_BUCKETS]
 
TArray< FVulkanSubresourceAllocator * > UsedDedicatedImagePages
 

Friends

class FMemoryManager
 
class FVulkanSubresourceAllocator
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
MAX_BUCKETS 

Constructor & Destructor Documentation

◆ FVulkanResourceHeap()

VulkanRHI::FVulkanResourceHeap::FVulkanResourceHeap ( FMemoryManager InOwner,
uint32  InMemoryTypeIndex,
uint32  InOverridePageSize = 0 
)

◆ ~FVulkanResourceHeap()

VulkanRHI::FVulkanResourceHeap::~FVulkanResourceHeap ( )

Member Function Documentation

◆ AllocateDedicatedImage()

bool VulkanRHI::FVulkanResourceHeap::AllocateDedicatedImage ( FVulkanAllocation OutAllocation,
FVulkanEvictable AllocationOwner,
VkImage  Image,
uint32  Size,
uint32  Alignment,
EVulkanAllocationMetaType  MetaType,
bool  bExternal,
const char File,
uint32  Line 
)
protected

◆ AllocateResource()

bool VulkanRHI::FVulkanResourceHeap::AllocateResource ( FVulkanAllocation OutAllocation,
FVulkanEvictable AllocationOwner,
EType  Type,
uint32  Size,
uint32  Alignment,
bool  bMapAllocation,
bool  bForceSeparateAllocation,
EVulkanAllocationMetaType  MetaType,
bool  bExternal,
const char File,
uint32  Line 
)
protected

◆ DefragTick()

void VulkanRHI::FVulkanResourceHeap::DefragTick ( FVulkanDevice Device,
const FVulkanContextArray Contexts,
uint32  Count 
)

◆ DumpMemory()

void VulkanRHI::FVulkanResourceHeap::DumpMemory ( FResourceHeapStats Stats)

◆ EvictOne()

uint64 VulkanRHI::FVulkanResourceHeap::EvictOne ( FVulkanDevice Device,
const FVulkanContextArray Contexts 
)

◆ FreePage()

void VulkanRHI::FVulkanResourceHeap::FreePage ( FVulkanSubresourceAllocator InPage)

◆ GetIsDefragging()

bool VulkanRHI::FVulkanResourceHeap::GetIsDefragging ( FVulkanSubresourceAllocator Allocator)

◆ GetMemoryTypeIndex()

uint32 VulkanRHI::FVulkanResourceHeap::GetMemoryTypeIndex ( ) const
inline

◆ GetOwner()

FMemoryManager * VulkanRHI::FVulkanResourceHeap::GetOwner ( )
inline

◆ GetPageSize()

uint32 VulkanRHI::FVulkanResourceHeap::GetPageSize ( )
protected

◆ GetPageSizeBucket()

uint32 VulkanRHI::FVulkanResourceHeap::GetPageSizeBucket ( FVulkanPageSizeBucket BucketOut,
EType  Type,
uint32  AllocationSize,
bool  bForceSingleAllocation 
)

◆ IsHostCachedSupported()

bool VulkanRHI::FVulkanResourceHeap::IsHostCachedSupported ( ) const
inline

◆ IsLazilyAllocatedSupported()

bool VulkanRHI::FVulkanResourceHeap::IsLazilyAllocatedSupported ( ) const
inline

◆ ReleasePage()

void VulkanRHI::FVulkanResourceHeap::ReleasePage ( FVulkanSubresourceAllocator InPage)

◆ SetDefragging()

void VulkanRHI::FVulkanResourceHeap::SetDefragging ( FVulkanSubresourceAllocator Allocator)

◆ TryRealloc()

bool VulkanRHI::FVulkanResourceHeap::TryRealloc ( FVulkanAllocation OutAllocation,
FVulkanEvictable AllocationOwner,
EType  Type,
uint32  Size,
uint32  Alignment,
EVulkanAllocationMetaType  MetaType 
)
protected

Friends And Related Symbol Documentation

◆ FMemoryManager

friend class FMemoryManager
friend

◆ FVulkanSubresourceAllocator

Member Data Documentation

◆ ActivePages

TArray<FVulkanSubresourceAllocator*> VulkanRHI::FVulkanResourceHeap::ActivePages[MAX_BUCKETS]
protected

◆ bIsHostCachedSupported

bool VulkanRHI::FVulkanResourceHeap::bIsHostCachedSupported
protected

◆ bIsLazilyAllocatedSupported

bool VulkanRHI::FVulkanResourceHeap::bIsLazilyAllocatedSupported
protected

◆ DefragCountDown

uint8 VulkanRHI::FVulkanResourceHeap::DefragCountDown = 0
protected

◆ HeapIndex

const uint16 VulkanRHI::FVulkanResourceHeap::HeapIndex
protected

◆ MemoryTypeIndex

uint16 VulkanRHI::FVulkanResourceHeap::MemoryTypeIndex
protected

◆ OverridePageSize

uint32 VulkanRHI::FVulkanResourceHeap::OverridePageSize
protected

◆ Owner

FMemoryManager* VulkanRHI::FVulkanResourceHeap::Owner
protected

◆ PageIDCounter

uint32 VulkanRHI::FVulkanResourceHeap::PageIDCounter
protected

◆ PageSizeBuckets

TArray<FVulkanPageSizeBucket, TFixedAllocator<MAX_BUCKETS> > VulkanRHI::FVulkanResourceHeap::PageSizeBuckets
protected

◆ PagesLock

FCriticalSection VulkanRHI::FVulkanResourceHeap::PagesLock
protected

◆ PeakPageSize

uint32 VulkanRHI::FVulkanResourceHeap::PeakPageSize
protected

◆ UsedDedicatedImagePages

TArray<FVulkanSubresourceAllocator*> VulkanRHI::FVulkanResourceHeap::UsedDedicatedImagePages
protected

◆ UsedMemory

uint64 VulkanRHI::FVulkanResourceHeap::UsedMemory
protected

The documentation for this class was generated from the following files: