mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-07 15:31:18 +12:00
Vulkan: Properly free TextureChunkedHeaps
This commit is contained in:
parent
f2096a61cc
commit
95c9701dbf
2 changed files with 12 additions and 2 deletions
|
@ -177,6 +177,14 @@ void VKRSynchronizedRingAllocator::GetStats(uint32& numBuffers, size_t& totalBuf
|
|||
|
||||
/* VkTextureChunkedHeap */
|
||||
|
||||
VkTextureChunkedHeap::~VkTextureChunkedHeap()
|
||||
{
|
||||
for (auto& i : m_list_chunkInfo)
|
||||
{
|
||||
vkFreeMemory(m_device, i.mem, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
uint32 VkTextureChunkedHeap::allocateNewChunk(uint32 chunkIndex, uint32 minimumAllocationSize)
|
||||
{
|
||||
cemu_assert_debug(m_list_chunkInfo.size() == chunkIndex);
|
||||
|
@ -481,7 +489,7 @@ VkImageMemAllocation* VKRMemoryManager::imageMemoryAllocate(VkImage image)
|
|||
map_textureHeap.emplace(typeFilter, texHeap);
|
||||
}
|
||||
else
|
||||
texHeap = it->second;
|
||||
texHeap = it->second.get();
|
||||
|
||||
// alloc mem from heap
|
||||
uint32 allocationSize = (uint32)memRequirements.size;
|
||||
|
|
|
@ -18,6 +18,7 @@ class VkTextureChunkedHeap : private ChunkedHeap
|
|||
{
|
||||
public:
|
||||
VkTextureChunkedHeap(class VKRMemoryManager* memoryManager, uint32 typeFilter, VkDevice device) : m_vkrMemoryManager(memoryManager), m_typeFilter(typeFilter), m_device(device) { };
|
||||
~VkTextureChunkedHeap();
|
||||
|
||||
struct ChunkInfo
|
||||
{
|
||||
|
@ -80,6 +81,7 @@ public:
|
|||
|
||||
VKRSynchronizedRingAllocator(class VulkanRenderer* vkRenderer, class VKRMemoryManager* vkMemoryManager, BUFFER_TYPE bufferType, uint32 minimumBufferAllocSize) : m_vkr(vkRenderer), m_vkrMemMgr(vkMemoryManager), m_bufferType(bufferType), m_minimumBufferAllocSize(minimumBufferAllocSize) {};
|
||||
VKRSynchronizedRingAllocator(const VKRSynchronizedRingAllocator&) = delete; // disallow copy
|
||||
~VKRSynchronizedRingAllocator();
|
||||
|
||||
struct BufferSyncPoint_t
|
||||
{
|
||||
|
@ -148,7 +150,7 @@ public:
|
|||
}
|
||||
|
||||
// texture memory management
|
||||
std::unordered_map<uint32, VkTextureChunkedHeap*> map_textureHeap; // one heap per memory type
|
||||
std::unordered_map<uint32, std::unique_ptr<VkTextureChunkedHeap>> map_textureHeap; // one heap per memory type
|
||||
std::vector<uint8> m_textureUploadBuffer;
|
||||
|
||||
// texture upload buffer
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue