From 7039fdf93e7e6cd6d0bc54263f141be0a93c4d78 Mon Sep 17 00:00:00 2001 From: Jayden Grubb Date: Sat, 3 May 2025 17:28:47 +1000 Subject: [PATCH] Misc bug and typo fixes --- engine/include/nova/render/render_driver.h | 5 ++-- engine/src/drivers/vulkan/render_driver.cpp | 31 +++++++++------------ engine/src/drivers/vulkan/render_driver.h | 5 ++-- 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/engine/include/nova/render/render_driver.h b/engine/include/nova/render/render_driver.h index 9b02343..8adbb96 100644 --- a/engine/include/nova/render/render_driver.h +++ b/engine/include/nova/render/render_driver.h @@ -30,6 +30,8 @@ namespace Nova { [[nodiscard]] virtual bool get_device_supports_surface(u32 index, SurfaceID surface) const = 0; virtual void select_device(u32 index) = 0; + [[nodiscard]] virtual QueueID get_queue() = 0; + [[nodiscard]] virtual SurfaceID create_surface(WindowID window) = 0; virtual void destroy_surface(SurfaceID surface) = 0; @@ -48,9 +50,6 @@ namespace Nova { [[nodiscard]] virtual PipelineID create_pipeline(ComputePipelineParams& params) = 0; virtual void destroy_pipeline(PipelineID pipeline) = 0; - [[nodiscard]] virtual QueueID create_queue() = 0; - virtual void destroy_queue(QueueID queue) = 0; - [[nodiscard]] virtual CommandPoolID create_command_pool(QueueID queue) = 0; virtual void destroy_command_pool(CommandPoolID command_pool) = 0; diff --git a/engine/src/drivers/vulkan/render_driver.cpp b/engine/src/drivers/vulkan/render_driver.cpp index 2419507..2e40e3b 100644 --- a/engine/src/drivers/vulkan/render_driver.cpp +++ b/engine/src/drivers/vulkan/render_driver.cpp @@ -375,6 +375,15 @@ void VulkanRenderDriver::select_device(const u32 p_index) { _init_device(queues); } +QueueID VulkanRenderDriver::get_queue() { + NOVA_AUTO_TRACE(); + NOVA_ASSERT(m_device); + // TODO: Actually create/get a queue + Queue* queue = new Queue(); + queue->family_index = 0; + return queue; +} + SurfaceID VulkanRenderDriver::create_surface(WindowID p_window) { NOVA_AUTO_TRACE(); NOVA_ASSERT(m_window_driver); @@ -456,6 +465,7 @@ SwapchainID VulkanRenderDriver::create_swapchain(SurfaceID p_surface) { // TODO: Change VkRenderPass to VkRenderPass2KHR (Vulkan 1.2+) + resize_swapchain(swapchain); return swapchain; } @@ -607,7 +617,6 @@ void VulkanRenderDriver::destroy_swapchain(SwapchainID p_swapchain) { } if (p_swapchain->render_pass) { destroy_render_pass(p_swapchain->render_pass); - p_swapchain->render_pass = nullptr; } delete p_swapchain; @@ -677,7 +686,6 @@ PipelineID VulkanRenderDriver::create_pipeline(GraphicsPipelineParams& p_params) } std::vector vertex_bindings; - std::vector vertex_attributes; for (const auto& binding : p_params.bindings) { VkVertexInputBindingDescription binding_desc {}; binding_desc.binding = binding.binding; @@ -685,6 +693,7 @@ PipelineID VulkanRenderDriver::create_pipeline(GraphicsPipelineParams& p_params) binding_desc.inputRate = VK_VERTEX_INPUT_RATE_MAP[static_cast(binding.rate)]; vertex_bindings.push_back(binding_desc); } + std::vector vertex_attributes; for (const auto& attribute : p_params.attributes) { VkVertexInputAttributeDescription attribute_desc {}; attribute_desc.binding = attribute.binding; @@ -830,21 +839,6 @@ void VulkanRenderDriver::destroy_pipeline(PipelineID p_pipeline) { delete p_pipeline; } -QueueID VulkanRenderDriver::create_queue() { - NOVA_AUTO_TRACE(); - NOVA_ASSERT(m_device); - // TODO: Actually create/get a queue - Queue* queue = new Queue(); - queue->family_index = 0; - return queue; -} - -void VulkanRenderDriver::destroy_queue(QueueID p_queue) { - NOVA_AUTO_TRACE(); - NOVA_ASSERT(p_queue); - delete p_queue; -} - CommandPoolID VulkanRenderDriver::create_command_pool(QueueID p_queue) { NOVA_AUTO_TRACE(); NOVA_ASSERT(p_queue); @@ -892,10 +886,11 @@ CommandBufferID VulkanRenderDriver::create_command_buffer(CommandPoolID p_pool) NOVA_LOG("VkCommandBuffer created"); p_pool->allocated_buffers.push_back(buffer); - return nullptr; + return buffer; } void VulkanRenderDriver::begin_command_buffer(CommandBufferID p_command_buffer) { + NOVA_ASSERT(p_command_buffer); VkCommandBufferBeginInfo info {}; info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; // TODO: Support flag options diff --git a/engine/src/drivers/vulkan/render_driver.h b/engine/src/drivers/vulkan/render_driver.h index 79de49c..ea35063 100644 --- a/engine/src/drivers/vulkan/render_driver.h +++ b/engine/src/drivers/vulkan/render_driver.h @@ -76,6 +76,8 @@ namespace Nova { [[nodiscard]] bool get_device_supports_surface(u32 index, SurfaceID surface) const override; void select_device(u32 index) override; + [[nodiscard]] QueueID get_queue() override; + [[nodiscard]] SurfaceID create_surface(WindowID window) override; void destroy_surface(SurfaceID surface) override; @@ -94,9 +96,6 @@ namespace Nova { [[nodiscard]] PipelineID create_pipeline(ComputePipelineParams& params) override; void destroy_pipeline(PipelineID pipeline) override; - [[nodiscard]] QueueID create_queue() override; - void destroy_queue(QueueID queue) override; - [[nodiscard]] CommandPoolID create_command_pool(QueueID queue) override; void destroy_command_pool(CommandPoolID command_pool) override;