Manage buffers in VkBufferManager

This commit is contained in:
Magnus Norddahl 2022-06-11 03:27:18 +02:00 committed by Christoph Oelckers
commit 69cfadf411
11 changed files with 190 additions and 154 deletions

View file

@ -23,37 +23,12 @@
#include "vk_renderstate.h"
#include "vulkan/system/vk_framebuffer.h"
#include "vulkan/system/vk_builders.h"
#include "vulkan/system/vk_buffer.h"
#include "vulkan/renderer/vk_streambuffer.h"
VkStreamBuffer::VkStreamBuffer(VulkanFrameBuffer* fb, size_t structSize, size_t count)
{
mBlockSize = static_cast<uint32_t>((structSize + screen->uniformblockalignment - 1) / screen->uniformblockalignment * screen->uniformblockalignment);
UniformBuffer = (VkHardwareDataBuffer*)fb->CreateDataBuffer(-1, false, false);
UniformBuffer->SetData(mBlockSize * count, nullptr, BufferUsageType::Persistent);
}
VkStreamBuffer::~VkStreamBuffer()
{
delete UniformBuffer;
}
uint32_t VkStreamBuffer::NextStreamDataBlock()
{
mStreamDataOffset += mBlockSize;
if (mStreamDataOffset + (size_t)mBlockSize >= UniformBuffer->Size())
{
mStreamDataOffset = 0;
return 0xffffffff;
}
return mStreamDataOffset;
}
/////////////////////////////////////////////////////////////////////////////
VkStreamBufferWriter::VkStreamBufferWriter(VulkanFrameBuffer* fb)
{
mBuffer = fb->StreamBuffer;
mBuffer = fb->GetBufferManager()->StreamBuffer;
}
bool VkStreamBufferWriter::Write(const StreamData& data)
@ -82,7 +57,7 @@ void VkStreamBufferWriter::Reset()
VkMatrixBufferWriter::VkMatrixBufferWriter(VulkanFrameBuffer* fb)
{
mBuffer = fb->MatrixBuffer;
mBuffer = fb->GetBufferManager()->MatrixBuffer;
mIdentityMatrix.loadIdentity();
}