Diligent Engine  v.2.4.g
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
VulkanUtilities::VulkanMemoryManager Class Reference

#include <VulkanMemoryManager.hpp>

Classes

struct  MemoryPageIndex
 

Public Member Functions

 VulkanMemoryManager (std::string MgrName, const VulkanLogicalDevice &LogicalDevice, const VulkanPhysicalDevice &PhysicalDevice, Diligent::IMemoryAllocator &Allocator, VkDeviceSize DeviceLocalPageSize, VkDeviceSize HostVisiblePageSize, VkDeviceSize DeviceLocalReserveSize, VkDeviceSize HostVisibleReserveSize)
 
 VulkanMemoryManager (VulkanMemoryManager &&rhs) noexcept
 
 ~VulkanMemoryManager ()
 
 VulkanMemoryManager (const VulkanMemoryManager &)=delete
 
VulkanMemoryManageroperator= (const VulkanMemoryManager &)=delete
 
VulkanMemoryManageroperator= (VulkanMemoryManager &&)=delete
 
VulkanMemoryAllocation Allocate (VkDeviceSize Size, VkDeviceSize Alignment, uint32_t MemoryTypeIndex, bool HostVisible, VkMemoryAllocateFlags AllocateFlags)
 
VulkanMemoryAllocation Allocate (const VkMemoryRequirements &MemReqs, VkMemoryPropertyFlags MemoryProps, VkMemoryAllocateFlags AllocateFlags)
 
void ShrinkMemory ()
 

Protected Member Functions

virtual void OnNewPageCreated (VulkanMemoryPage &NewPage)
 
virtual void OnPageDestroy (VulkanMemoryPage &Page)
 
void OnFreeAllocation (VkDeviceSize Size, bool IsHostVisble)
 

Protected Attributes

std::string m_MgrName
 
const VulkanLogicalDevicem_LogicalDevice
 
const VulkanPhysicalDevicem_PhysicalDevice
 
Diligent::IMemoryAllocatorm_Allocator
 
std::mutex m_PagesMtx
 
std::unordered_multimap< MemoryPageIndex, VulkanMemoryPage, MemoryPageIndex::Hasherm_Pages
 
const VkDeviceSize m_DeviceLocalPageSize
 
const VkDeviceSize m_HostVisiblePageSize
 
const VkDeviceSize m_DeviceLocalReserveSize
 
const VkDeviceSize m_HostVisibleReserveSize
 
std::array< std::atomic_int64_t, 2 > m_CurrUsedSize = {}
 
std::array< VkDeviceSize, 2 > m_PeakUsedSize = {}
 
std::array< VkDeviceSize, 2 > m_CurrAllocatedSize = {}
 
std::array< VkDeviceSize, 2 > m_PeakAllocatedSize = {}
 

Friends

class VulkanMemoryPage
 

Constructor & Destructor Documentation

◆ VulkanMemoryManager() [1/3]

VulkanUtilities::VulkanMemoryManager::VulkanMemoryManager ( std::string  MgrName,
const VulkanLogicalDevice LogicalDevice,
const VulkanPhysicalDevice PhysicalDevice,
Diligent::IMemoryAllocator Allocator,
VkDeviceSize  DeviceLocalPageSize,
VkDeviceSize  HostVisiblePageSize,
VkDeviceSize  DeviceLocalReserveSize,
VkDeviceSize  HostVisibleReserveSize 
)
inline

◆ VulkanMemoryManager() [2/3]

VulkanUtilities::VulkanMemoryManager::VulkanMemoryManager ( VulkanMemoryManager &&  rhs)
inlinenoexcept

◆ ~VulkanMemoryManager()

VulkanUtilities::VulkanMemoryManager::~VulkanMemoryManager ( )

◆ VulkanMemoryManager() [3/3]

VulkanUtilities::VulkanMemoryManager::VulkanMemoryManager ( const VulkanMemoryManager )
delete

Member Function Documentation

◆ Allocate() [1/2]

VulkanMemoryAllocation VulkanUtilities::VulkanMemoryManager::Allocate ( const VkMemoryRequirements &  MemReqs,
VkMemoryPropertyFlags  MemoryProps,
VkMemoryAllocateFlags  AllocateFlags 
)

◆ Allocate() [2/2]

VulkanMemoryAllocation VulkanUtilities::VulkanMemoryManager::Allocate ( VkDeviceSize  Size,
VkDeviceSize  Alignment,
uint32_t  MemoryTypeIndex,
bool  HostVisible,
VkMemoryAllocateFlags  AllocateFlags 
)

◆ OnFreeAllocation()

void VulkanUtilities::VulkanMemoryManager::OnFreeAllocation ( VkDeviceSize  Size,
bool  IsHostVisble 
)
protected

◆ OnNewPageCreated()

virtual void VulkanUtilities::VulkanMemoryManager::OnNewPageCreated ( VulkanMemoryPage NewPage)
inlineprotectedvirtual

◆ OnPageDestroy()

virtual void VulkanUtilities::VulkanMemoryManager::OnPageDestroy ( VulkanMemoryPage Page)
inlineprotectedvirtual

◆ operator=() [1/2]

VulkanMemoryManager& VulkanUtilities::VulkanMemoryManager::operator= ( const VulkanMemoryManager )
delete

◆ operator=() [2/2]

VulkanMemoryManager& VulkanUtilities::VulkanMemoryManager::operator= ( VulkanMemoryManager &&  )
delete

◆ ShrinkMemory()

void VulkanUtilities::VulkanMemoryManager::ShrinkMemory ( )

Friends And Related Function Documentation

◆ VulkanMemoryPage

friend class VulkanMemoryPage
friend

Member Data Documentation

◆ m_Allocator

Diligent::IMemoryAllocator& VulkanUtilities::VulkanMemoryManager::m_Allocator
protected

◆ m_CurrAllocatedSize

std::array<VkDeviceSize, 2> VulkanUtilities::VulkanMemoryManager::m_CurrAllocatedSize = {}
protected

◆ m_CurrUsedSize

std::array<std::atomic_int64_t, 2> VulkanUtilities::VulkanMemoryManager::m_CurrUsedSize = {}
protected

◆ m_DeviceLocalPageSize

const VkDeviceSize VulkanUtilities::VulkanMemoryManager::m_DeviceLocalPageSize
protected

◆ m_DeviceLocalReserveSize

const VkDeviceSize VulkanUtilities::VulkanMemoryManager::m_DeviceLocalReserveSize
protected

◆ m_HostVisiblePageSize

const VkDeviceSize VulkanUtilities::VulkanMemoryManager::m_HostVisiblePageSize
protected

◆ m_HostVisibleReserveSize

const VkDeviceSize VulkanUtilities::VulkanMemoryManager::m_HostVisibleReserveSize
protected

◆ m_LogicalDevice

const VulkanLogicalDevice& VulkanUtilities::VulkanMemoryManager::m_LogicalDevice
protected

◆ m_MgrName

std::string VulkanUtilities::VulkanMemoryManager::m_MgrName
protected

◆ m_Pages

std::unordered_multimap<MemoryPageIndex, VulkanMemoryPage, MemoryPageIndex::Hasher> VulkanUtilities::VulkanMemoryManager::m_Pages
protected

◆ m_PagesMtx

std::mutex VulkanUtilities::VulkanMemoryManager::m_PagesMtx
protected

◆ m_PeakAllocatedSize

std::array<VkDeviceSize, 2> VulkanUtilities::VulkanMemoryManager::m_PeakAllocatedSize = {}
protected

◆ m_PeakUsedSize

std::array<VkDeviceSize, 2> VulkanUtilities::VulkanMemoryManager::m_PeakUsedSize = {}
protected

◆ m_PhysicalDevice

const VulkanPhysicalDevice& VulkanUtilities::VulkanMemoryManager::m_PhysicalDevice
protected

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