recreateSwapchain: create/destroy renderSemaphores
This commit is contained in:
parent
9b0ba08ccb
commit
b5f769a3a5
40
src/main.cpp
40
src/main.cpp
@ -10,6 +10,24 @@
|
|||||||
#include "new.h"
|
#include "new.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline static constexpr T min(T a, T b)
|
||||||
|
{
|
||||||
|
return (a < b) ? a : b;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline static constexpr T max(T a, T b)
|
||||||
|
{
|
||||||
|
return (a > b) ? a : b;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
inline static constexpr T clamp(T n, T minVal, T maxVal)
|
||||||
|
{
|
||||||
|
return min(max(n, minVal), maxVal);
|
||||||
|
}
|
||||||
|
|
||||||
#define SDL_CHECK(f) \
|
#define SDL_CHECK(f) \
|
||||||
{ \
|
{ \
|
||||||
bool result = (f); \
|
bool result = (f); \
|
||||||
@ -236,6 +254,12 @@ void recreateSwapchain(VkSurfaceFormatKHR surfaceFormat, VkFormat depthFormat, V
|
|||||||
}
|
}
|
||||||
free(swapchainImageViews);
|
free(swapchainImageViews);
|
||||||
}
|
}
|
||||||
|
if (renderSemaphores != nullptr) {
|
||||||
|
for (uint32_t i = 0; i < swapchainImageCount; i++) {
|
||||||
|
vkDestroySemaphore(device, renderSemaphores[i], nullptr);
|
||||||
|
}
|
||||||
|
free(renderSemaphores);
|
||||||
|
}
|
||||||
|
|
||||||
VK_CHECK(vkGetSwapchainImagesKHR(device, swapchain, &swapchainImageCount, nullptr));
|
VK_CHECK(vkGetSwapchainImagesKHR(device, swapchain, &swapchainImageCount, nullptr));
|
||||||
swapchainImages = NewM<VkImage>(swapchainImageCount);
|
swapchainImages = NewM<VkImage>(swapchainImageCount);
|
||||||
@ -260,6 +284,18 @@ void recreateSwapchain(VkSurfaceFormatKHR surfaceFormat, VkFormat depthFormat, V
|
|||||||
vkDestroySwapchainKHR(device, swapchainCreateInfo.oldSwapchain, nullptr);
|
vkDestroySwapchainKHR(device, swapchainCreateInfo.oldSwapchain, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// render semaphores
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
VkSemaphoreCreateInfo semaphoreCreateInfo{
|
||||||
|
.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
|
||||||
|
};
|
||||||
|
renderSemaphores = NewM<VkSemaphore>(swapchainImageCount);
|
||||||
|
for (uint32_t i = 0; i < swapchainImageCount; i++) {
|
||||||
|
VK_CHECK(vkCreateSemaphore(device, &semaphoreCreateInfo, nullptr, &renderSemaphores[i]));
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// depth
|
// depth
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
@ -651,10 +687,6 @@ int main()
|
|||||||
VK_CHECK(vkCreateFence(device, &fenceCreateInfo, nullptr, &fences[i]));
|
VK_CHECK(vkCreateFence(device, &fenceCreateInfo, nullptr, &fences[i]));
|
||||||
VK_CHECK(vkCreateSemaphore(device, &semaphoreCreateInfo, nullptr, &presentSemaphores[i]));
|
VK_CHECK(vkCreateSemaphore(device, &semaphoreCreateInfo, nullptr, &presentSemaphores[i]));
|
||||||
}
|
}
|
||||||
renderSemaphores = NewM<VkSemaphore>(swapchainImageCount);
|
|
||||||
for (uint32_t i = 0; i < swapchainImageCount; i++) {
|
|
||||||
VK_CHECK(vkCreateSemaphore(device, &semaphoreCreateInfo, nullptr, &renderSemaphores[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// command
|
// command
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user