ULRE/src/SceneGraph/Vulkan/VKMemoryAllocator.cpp

49 lines
921 B
C++
Raw Normal View History

2021-03-25 20:00:19 +08:00
#include<hgl/graph/VKMemoryAllocator.h>
#include<hgl/graph/VKDevice.h>
#include<hgl/graph/VKPhysicalDevice.h>
#include<hgl/graph/VKBuffer.h>
VK_NAMESPACE_BEGIN
VKMemoryAllocator::VKMemoryAllocator(GPUDevice *d,const uint32_t flags,const VkDeviceSize r)
2021-03-25 20:00:19 +08:00
{
device=d;
buffer_usage_flag_bits=flags;
gpu_buffer=nullptr;
range=r;
2021-03-25 20:00:19 +08:00
SetAllocUnitSize(range);
2021-03-25 20:00:19 +08:00
}
VKMemoryAllocator::~VKMemoryAllocator()
{
if(gpu_buffer)
{
gpu_buffer->Unmap();
delete gpu_buffer;
}
2021-03-25 20:00:19 +08:00
}
bool VKMemoryAllocator::AllocMemory()
2021-03-25 20:00:19 +08:00
{
if(gpu_buffer)
delete gpu_buffer;
gpu_buffer=device->CreateBuffer(buffer_usage_flag_bits,range,alloc_size);
2021-03-25 20:00:19 +08:00
if(!gpu_buffer)
{
memory_block=nullptr;
return(false);
}
memory_block=gpu_buffer->Map();
return(true);
}
void VKMemoryAllocator::Flush(const VkDeviceSize size)
{
gpu_buffer->Flush(size);
}
2021-03-25 20:00:19 +08:00
VK_NAMESPACE_END