Fix crash on windows because msvc does not like forward declarations of deleter classes
This commit is contained in:
@@ -27,6 +27,10 @@ namespace OpenVulkano::Vulkan
|
|||||||
vk::MemoryPropertyFlags properties;
|
vk::MemoryPropertyFlags properties;
|
||||||
void* mapped = nullptr;
|
void* mapped = nullptr;
|
||||||
|
|
||||||
|
ManagedBuffer(MemoryAllocation* alloc, vk::DeviceSize offset, vk::DeviceSize size, vk::Buffer buffer, vk::BufferUsageFlags usageFlags, vk::MemoryPropertyFlags memProperties)
|
||||||
|
: allocation(alloc), offset(offset), size(size), buffer(buffer), usage(usageFlags), properties(memProperties), mapped(nullptr)
|
||||||
|
{}
|
||||||
|
|
||||||
~ManagedBuffer()
|
~ManagedBuffer()
|
||||||
{
|
{
|
||||||
allocation->device.destroy(buffer);
|
allocation->device.destroy(buffer);
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ namespace OpenVulkano::Vulkan
|
|||||||
uint32_t offset = Utils::Align(allocation->used, memoryRequirements.alignment);
|
uint32_t offset = Utils::Align(allocation->used, memoryRequirements.alignment);
|
||||||
device->device.bindBufferMemory(buffer, allocation->memory, offset);
|
device->device.bindBufferMemory(buffer, allocation->memory, offset);
|
||||||
allocation->used += size + (offset - allocation->used);
|
allocation->used += size + (offset - allocation->used);
|
||||||
return ManagedBufferPtr{ new ManagedBuffer({allocation, offset, size, buffer, usage, properties, nullptr}) };
|
return ManagedBufferPtr{ new ManagedBuffer(allocation, offset, size, buffer, usage, properties) };
|
||||||
}
|
}
|
||||||
|
|
||||||
MemoryPool::ManagedBufferPtr MemoryPool::CreateSharedMemoryBuffer(size_t size)
|
MemoryPool::ManagedBufferPtr MemoryPool::CreateSharedMemoryBuffer(size_t size)
|
||||||
@@ -150,4 +150,9 @@ namespace OpenVulkano::Vulkan
|
|||||||
}
|
}
|
||||||
return CreateBuffer(size, vk::BufferUsageFlagBits::eVertexBuffer, vk::MemoryPropertyFlagBits::eHostCoherent/* | vk::MemoryPropertyFlagBits::eDeviceLocal*/);
|
return CreateBuffer(size, vk::BufferUsageFlagBits::eVertexBuffer, vk::MemoryPropertyFlagBits::eHostCoherent/* | vk::MemoryPropertyFlagBits::eDeviceLocal*/);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ManagedBufferDeleter::operator()(ManagedBuffer* buffer)
|
||||||
|
{
|
||||||
|
MemoryPool::ReleaseBuffer(buffer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,11 @@ namespace OpenVulkano::Vulkan
|
|||||||
class Device;
|
class Device;
|
||||||
class MemoryAllocation;
|
class MemoryAllocation;
|
||||||
class ManagedBuffer;
|
class ManagedBuffer;
|
||||||
struct ManagedBufferDeleter;
|
|
||||||
|
struct ManagedBufferDeleter
|
||||||
|
{
|
||||||
|
void operator()(ManagedBuffer* buffer);
|
||||||
|
};
|
||||||
|
|
||||||
class MemoryPool
|
class MemoryPool
|
||||||
{
|
{
|
||||||
@@ -55,12 +59,4 @@ namespace OpenVulkano::Vulkan
|
|||||||
|
|
||||||
static void ReleaseBuffer(ManagedBuffer* buffer);
|
static void ReleaseBuffer(ManagedBuffer* buffer);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ManagedBufferDeleter
|
|
||||||
{
|
|
||||||
void operator()(ManagedBuffer* buffer)
|
|
||||||
{
|
|
||||||
MemoryPool::ReleaseBuffer(buffer);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user