Create synchronization objects

This commit is contained in:
Grayson Riffe 2025-02-12 03:24:16 -06:00
parent d30b37bfbd
commit ebe78cb4ca
2 changed files with 25 additions and 0 deletions

View File

@ -27,6 +27,9 @@ namespace nf::client::render {
, m_pipelineOutput()
, m_commandPool()
, m_commandBuffer()
, m_semaphoreImageAvailable()
, m_semaphoreRenderFinished()
, m_fenceInFlight()
{
NFLog("Initializing render engine");
m_window->setDisplay(m_display);
@ -39,6 +42,7 @@ namespace nf::client::render {
createOutputRenderPass();
createOutputPipeline();
createCommandBuffer();
createSynchronizationObjects();
m_window->show();
}
@ -396,7 +400,22 @@ namespace nf::client::render {
NFError("Could not create command buffer.");
}
void RenderEngine::createSynchronizationObjects() {
VkSemaphoreCreateInfo semaphoreCI = { VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO };
if (vkCreateSemaphore(m_device, &semaphoreCI, nullptr, &m_semaphoreImageAvailable) != VK_SUCCESS ||
vkCreateSemaphore(m_device, &semaphoreCI, nullptr, &m_semaphoreRenderFinished) != VK_SUCCESS)
NFError("Could not create semaphore.");
VkFenceCreateInfo fenceCI = { VK_STRUCTURE_TYPE_FENCE_CREATE_INFO };
if (vkCreateFence(m_device, &fenceCI, nullptr, &m_fenceInFlight) != VK_SUCCESS)
NFError("Could not create fence.");
}
RenderEngine::~RenderEngine() {
vkDestroyFence(m_device, m_fenceInFlight, nullptr);
vkDestroySemaphore(m_device, m_semaphoreRenderFinished, nullptr);
vkDestroySemaphore(m_device, m_semaphoreImageAvailable, nullptr);
vkDestroyCommandPool(m_device, m_commandPool, nullptr);
for (int i = 0; i < m_swapchainFramebuffers.size(); i++)

View File

@ -19,6 +19,7 @@ namespace nf::client::render {
void createOutputRenderPass();
void createOutputPipeline();
void createCommandBuffer();
void createSynchronizationObjects();
std::shared_ptr<Window> m_window;
DisplayConfig m_display;
@ -46,5 +47,10 @@ namespace nf::client::render {
// Command buffers
VkCommandPool m_commandPool;
VkCommandBuffer m_commandBuffer;
// Synchronization objects
VkSemaphore m_semaphoreImageAvailable;
VkSemaphore m_semaphoreRenderFinished;
VkFence m_fenceInFlight;
};
}