Runtime ShaderCompilation with Include Features

This commit is contained in:
Metehan Tuncbilek
2024-07-15 17:31:02 +03:00
parent 5aa84db3e2
commit 2b36969a84
8 changed files with 180 additions and 12 deletions

View File

@@ -27,6 +27,10 @@ namespace OpenVulkano::Vulkan
vk::MemoryPropertyFlags properties;
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()
{
allocation->device.destroy(buffer);

View File

@@ -131,7 +131,7 @@ namespace OpenVulkano::Vulkan
uint32_t offset = Utils::Align(allocation->used, memoryRequirements.alignment);
device->device.bindBufferMemory(buffer, allocation->memory, offset);
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)
@@ -150,4 +150,9 @@ namespace OpenVulkano::Vulkan
}
return CreateBuffer(size, vk::BufferUsageFlagBits::eVertexBuffer, vk::MemoryPropertyFlagBits::eHostCoherent/* | vk::MemoryPropertyFlagBits::eDeviceLocal*/);
}
void ManagedBufferDeleter::operator()(ManagedBuffer* buffer)
{
MemoryPool::ReleaseBuffer(buffer);
}
}

View File

@@ -17,7 +17,11 @@ namespace OpenVulkano::Vulkan
class Device;
class MemoryAllocation;
class ManagedBuffer;
struct ManagedBufferDeleter;
struct ManagedBufferDeleter
{
void operator()(ManagedBuffer* buffer);
};
class MemoryPool
{
@@ -55,12 +59,4 @@ namespace OpenVulkano::Vulkan
static void ReleaseBuffer(ManagedBuffer* buffer);
};
struct ManagedBufferDeleter
{
void operator()(ManagedBuffer* buffer)
{
MemoryPool::ReleaseBuffer(buffer);
}
};
}