temp
This commit is contained in:
@@ -5,18 +5,16 @@
|
||||
#include <destrum/Graphics/GfxDevice.h>
|
||||
#include <destrum/Graphics/Init.h>
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
#include <vulkan/vk_enum_string_helper.h>
|
||||
#include "volk.h"
|
||||
|
||||
|
||||
void Swapchain::initSync(VkDevice device)
|
||||
{
|
||||
const auto fenceCreateInfo = VkFenceCreateInfo{
|
||||
void Swapchain::initSync(VkDevice device) {
|
||||
constexpr auto fenceCreateInfo = VkFenceCreateInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
|
||||
.flags = VK_FENCE_CREATE_SIGNALED_BIT,
|
||||
};
|
||||
const auto semaphoreCreateInfo = VkSemaphoreCreateInfo{
|
||||
constexpr auto semaphoreCreateInfo = VkSemaphoreCreateInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
|
||||
};
|
||||
for (std::uint32_t i = 0; i < FRAMES_IN_FLIGHT; ++i) {
|
||||
@@ -57,7 +55,7 @@ void Swapchain::createSwapchain(GfxDevice* gfxDevice, VkFormat format, std::uint
|
||||
.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
|
||||
};
|
||||
|
||||
for (auto& sem : imageRenderSemaphores) {
|
||||
for (auto& sem: imageRenderSemaphores) {
|
||||
VK_CHECK(vkCreateSemaphore(m_gfxDevice->getDevice(), &sci, nullptr, &sem));
|
||||
}
|
||||
|
||||
@@ -150,8 +148,8 @@ std::pair<VkImage, int> Swapchain::acquireNextImage(int index) {
|
||||
void Swapchain::submitAndPresent(
|
||||
VkCommandBuffer cmd,
|
||||
VkQueue graphicsQueue,
|
||||
uint32_t imageIndex, // from vkAcquireNextImageKHR
|
||||
uint32_t frameIndex) // 0..FRAMES_IN_FLIGHT-1
|
||||
uint32_t imageIndex, // from vkAcquireNextImageKHR
|
||||
uint32_t frameIndex) // 0..FRAMES_IN_FLIGHT-1
|
||||
{
|
||||
auto& frame = frames[frameIndex]; // ✅ per-frame
|
||||
|
||||
@@ -164,14 +162,14 @@ void Swapchain::submitAndPresent(
|
||||
};
|
||||
|
||||
VkSemaphoreSubmitInfo waitInfo =
|
||||
vkinit::semaphoreSubmitInfo(
|
||||
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,
|
||||
frame.swapchainSemaphore); // ✅ acquire semaphore (per-frame)
|
||||
vkinit::semaphoreSubmitInfo(
|
||||
VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR,
|
||||
frame.swapchainSemaphore); // ✅ acquire semaphore (per-frame)
|
||||
|
||||
VkSemaphoreSubmitInfo signalInfo =
|
||||
vkinit::semaphoreSubmitInfo(
|
||||
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT,
|
||||
renderFinished); // ✅ signal semaphore (per-image)
|
||||
vkinit::semaphoreSubmitInfo(
|
||||
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT,
|
||||
renderFinished); // ✅ signal semaphore (per-image)
|
||||
|
||||
VkSubmitInfo2 submit = vkinit::submitInfo(&cmdInfo, &waitInfo, &signalInfo);
|
||||
VK_CHECK(vkQueueSubmit2(graphicsQueue, 1, &submit, frame.renderFence)); // ✅ fence (per-frame)
|
||||
@@ -189,4 +187,4 @@ void Swapchain::submitAndPresent(
|
||||
VkResult res = vkQueuePresentKHR(graphicsQueue, &presentInfo);
|
||||
if (res == VK_ERROR_OUT_OF_DATE_KHR || res == VK_SUBOPTIMAL_KHR) dirty = true;
|
||||
else if (res != VK_SUCCESS) dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user