Use RenderResource for uniform buffers
This commit is contained in:
@@ -335,31 +335,29 @@ namespace OpenVulkano::Vulkan
|
||||
VulkanUniformBuffer* ResourceManager::PrepareUniformBuffer(Scene::UniformBuffer* buffer)
|
||||
{
|
||||
const std::unique_lock lock(mutex);
|
||||
if (buffer->renderBuffer) return static_cast<VulkanUniformBuffer*>(buffer->renderBuffer);
|
||||
if (buffer->HasRenderResource()) return static_cast<VulkanUniformBuffer*>(buffer->GetRenderResource());
|
||||
|
||||
VulkanUniformBuffer* vkBuffer;
|
||||
ManagedBuffer::Ptr mBuffer;
|
||||
const vk::DeviceSize allocSize = Utils::Align(buffer->size, uniformBufferAlignment);
|
||||
UniformBuffer* uBuffer = new UniformBuffer();
|
||||
if (buffer->GetUpdateFrequency() != Scene::UpdateFrequency::Never)
|
||||
{
|
||||
vkBuffer = new VulkanUniformBufferDynamic();
|
||||
const uint32_t imgs = context->swapChain.GetImageCount();
|
||||
mBuffer = memPool.CreateBuffer(imgs * allocSize, vk::BufferUsageFlagBits::eUniformBuffer, vk::MemoryPropertyFlagBits::eHostCoherent | vk::MemoryPropertyFlagBits::eHostVisible);
|
||||
mBuffer->Map();
|
||||
vkBuffer = new VulkanUniformBufferDynamic(buffer, uBuffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
vkBuffer = new VulkanUniformBuffer();
|
||||
mBuffer = CreateDeviceOnlyBufferWithData(Scene::Node::SIZE, vk::BufferUsageFlagBits::eUniformBuffer, buffer->data);
|
||||
buffer->updated = false;
|
||||
vkBuffer = new VulkanUniformBuffer(buffer, uBuffer);
|
||||
}
|
||||
|
||||
|
||||
UniformBuffer* uBuffer = new UniformBuffer();
|
||||
const uint64_t s = mBuffer->size;
|
||||
uBuffer->Init(std::move(mBuffer), 0, s, GetDescriptorLayoutSet(buffer->binding), buffer->binding, buffer->setId);
|
||||
|
||||
vkBuffer->Init(buffer, uBuffer);
|
||||
uniforms.emplace_back(vkBuffer);
|
||||
return vkBuffer;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user