fixing bugs

This commit is contained in:
2024-09-20 21:43:23 +02:00
parent f9c05d6d7b
commit 2e08c37624
3 changed files with 4 additions and 12 deletions

View File

@@ -60,27 +60,16 @@ namespace mlx
return; return;
bool is_single_time_cmd_buffer = (cmd == VK_NULL_HANDLE); bool is_single_time_cmd_buffer = (cmd == VK_NULL_HANDLE);
if(is_single_time_cmd_buffer) if(is_single_time_cmd_buffer)
{
cmd = kvfCreateCommandBuffer(RenderCore::Get().GetDevice()); cmd = kvfCreateCommandBuffer(RenderCore::Get().GetDevice());
kvfBeginCommandBuffer(cmd, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
}
KvfImageType kvf_type = KVF_IMAGE_OTHER; KvfImageType kvf_type = KVF_IMAGE_OTHER;
switch(m_type) switch(m_type)
{ {
case ImageType::Color: kvf_type = KVF_IMAGE_COLOR; break; case ImageType::Color: kvf_type = KVF_IMAGE_COLOR; break;
case ImageType::Depth: kvf_type = KVF_IMAGE_DEPTH; break; case ImageType::Depth: kvf_type = KVF_IMAGE_DEPTH; break;
default: break; default: break;
} }
kvfTransitionImageLayout(RenderCore::Get().GetDevice(), m_image, kvf_type, cmd, m_format, m_layout, new_layout, is_single_time_cmd_buffer); kvfTransitionImageLayout(RenderCore::Get().GetDevice(), m_image, kvf_type, cmd, m_format, m_layout, new_layout, is_single_time_cmd_buffer);
m_layout = new_layout; m_layout = new_layout;
if(is_single_time_cmd_buffer)
{
RenderCore::Get().vkEndCommandBuffer(cmd);
VkFence fence = kvfCreateFence(RenderCore::Get().GetDevice());
kvfSubmitSingleTimeCommandBuffer(RenderCore::Get().GetDevice(), cmd, KVF_GRAPHICS_QUEUE, fence);
kvfDestroyFence(RenderCore::Get().GetDevice(), fence);
}
} }
void Image::Clear(VkCommandBuffer cmd, Vec4f color) void Image::Clear(VkCommandBuffer cmd, Vec4f color)

View File

@@ -14,7 +14,7 @@ namespace mlx
default : FatalError("wtf"); break; default : FatalError("wtf"); break;
} }
m_module = kvfCreateShaderModule(RenderCore::Get().GetDevice(), reinterpret_cast<std::uint32_t*>(m_bytecode.data()), m_bytecode.size() * 4); m_module = kvfCreateShaderModule(RenderCore::Get().GetDevice(), reinterpret_cast<std::uint32_t*>(m_bytecode.data()), m_bytecode.size() / 4);
DebugLog("Vulkan : shader module created"); DebugLog("Vulkan : shader module created");
GeneratePipelineLayout(m_layout); GeneratePipelineLayout(m_layout);

View File

@@ -90,6 +90,8 @@ namespace mlx
LoadKVFDeviceVulkanFunctionPointers(); LoadKVFDeviceVulkanFunctionPointers();
vkDestroySurfaceKHR(m_instance, surface, nullptr); vkDestroySurfaceKHR(m_instance, surface, nullptr);
m_allocator.Init();
} }
#undef MLX_LOAD_FUNCTION #undef MLX_LOAD_FUNCTION
@@ -191,6 +193,7 @@ namespace mlx
RenderCore::~RenderCore() RenderCore::~RenderCore()
{ {
WaitDeviceIdle(); WaitDeviceIdle();
m_allocator.Destroy();
kvfDestroyDevice(m_device); kvfDestroyDevice(m_device);
DebugLog("Vulkan : logical device destroyed"); DebugLog("Vulkan : logical device destroyed");
kvfDestroyInstance(m_instance); kvfDestroyInstance(m_instance);