fixing issue when destroying an image in the loop hook, begenning single time command buffers manager

This commit is contained in:
Kbz-8
2023-12-15 21:08:46 +01:00
parent 8e33b2fa30
commit b28b144edb
12 changed files with 127 additions and 12 deletions

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/17 23:33:34 by maldavid #+# #+# */
/* Updated: 2023/12/15 15:21:26 by maldavid ### ########.fr */
/* Updated: 2023/12/15 20:32:01 by maldavid ### ########.fr */
/* */
/* ************************************************************************** */
@@ -97,6 +97,7 @@ namespace mlx
volkLoadDevice(_device.get());
_queues.init();
_allocator.init();
_cmd_manager.init();
_is_init = true;
}
@@ -107,6 +108,7 @@ namespace mlx
vkDeviceWaitIdle(_device());
_cmd_manager.destroy();
_allocator.destroy();
_device.destroy();
_layers.destroy();

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/08 19:16:32 by maldavid #+# #+# */
/* Updated: 2023/12/12 15:45:39 by kbz_8 ### ########.fr */
/* Updated: 2023/12/15 20:31:08 by maldavid ### ########.fr */
/* */
/* ************************************************************************** */
@@ -16,6 +16,7 @@
#include <volk.h>
#include <optional>
#include <renderer/command/single_time_cmd_manager.h>
#include "vk_queues.h"
#include "vk_device.h"
#include "vk_instance.h"
@@ -57,11 +58,13 @@ namespace mlx
inline Queues& getQueue() noexcept { return _queues; }
inline GPUallocator& getAllocator() noexcept { return _allocator; }
inline ValidationLayers& getLayers() noexcept { return _layers; }
inline CmdBuffer& getSingleTimeCmdBuffer() noexcept { return _cmd_manager.getCmdBuffer(); }
~Render_Core() = default;
private:
ValidationLayers _layers;
SingleTimeCmdManager _cmd_manager;
Queues _queues;
Device _device;
Instance _instance;

View File

@@ -6,11 +6,12 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/02 17:53:06 by maldavid #+# #+# */
/* Updated: 2023/12/12 15:50:48 by kbz_8 ### ########.fr */
/* Updated: 2023/12/15 20:31:29 by maldavid ### ########.fr */
/* */
/* ************************************************************************** */
#include <renderer/core/vk_fence.h>
#include <renderer/core/render_core.h>
namespace mlx
{
@@ -38,6 +39,11 @@ namespace mlx
vkResetFences(Render_Core::get().getDevice().get(), 1, &_fence);
}
bool Fence::isReady() const noexcept
{
return vkGetFenceStatus(Render_Core::get().getDevice().get(), _fence) == VK_SUCCESS;
}
void Fence::destroy() noexcept
{
if(_fence != VK_NULL_HANDLE)

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/04/02 17:52:09 by maldavid #+# #+# */
/* Updated: 2023/12/08 19:08:01 by kbz_8 ### ########.fr */
/* Updated: 2023/12/15 20:31:25 by maldavid ### ########.fr */
/* */
/* ************************************************************************** */
@@ -15,7 +15,6 @@
#include <volk.h>
#include <mlx_profile.h>
#include <renderer/core/render_core.h>
namespace mlx
{
@@ -29,6 +28,7 @@ namespace mlx
inline VkFence& get() noexcept { return _fence; }
void wait() noexcept;
void reset() noexcept;
bool isReady() const noexcept;
inline void waitAndReset() noexcept { wait(); reset(); }
void destroy() noexcept;