Merge branch 'better_vk_commands' into indev

This commit is contained in:
kbz_8
2024-01-03 15:47:31 +01:00
committed by GitHub
12 changed files with 763 additions and 27 deletions

View File

@@ -14,16 +14,18 @@
#include <renderer/core/render_core.h>
#include <renderer/command/cmd_manager.h>
#include <renderer/core/vk_semaphore.h>
#include <renderer/buffers/vk_buffer.h>
namespace mlx
{
void CmdBuffer::init(CmdManager* manager)
void CmdBuffer::init(kind type, CmdManager* manager)
{
init(&manager->getCmdPool());
init(type, &manager->getCmdPool());
}
void CmdBuffer::init(CmdPool* pool)
void CmdBuffer::init(kind type, CmdPool* pool)
{
_type = type;
_pool = pool;
VkCommandBufferAllocateInfo allocInfo{};
@@ -59,6 +61,18 @@ namespace mlx
_state = state::recording;
}
void CmdBuffer::bindVertexBuffer(Buffer& buffer) const noexcept
{
if(!isRecording())
{
core::error::report(e_kind::warning, "Vulkan : trying to bind a vertex buffer to a non recording command buffer");
return;
}
VkDeviceSize offset[] = { buffer.getOffset() };
vkCmdBindVertexBuffers(_cmd_buffer, 0, 1, &buffer.get(), offset);
buffer.recordedInCmdBuffer();
}
void CmdBuffer::endRecord()
{
if(!isInit())