add function for checking swapchain
This commit is contained in:
parent
5c2a3ab5ef
commit
65ac576cb0
14
vulkan.d
14
vulkan.d
@ -2719,6 +2719,20 @@ CreateSwapchain(Vulkan* vk)
|
||||
return success;
|
||||
}
|
||||
|
||||
void
|
||||
CheckAndRecreateSwapchain(Vulkan* vk)
|
||||
{
|
||||
VkResult result = vkGetSwapchainStatusKHR(vk.device, vk.swapchain);
|
||||
if (result == VK_ERROR_OUT_OF_DATE_KHR)
|
||||
{
|
||||
RecreateSwapchain(vk);
|
||||
}
|
||||
else if (result != VK_SUBOPTIMAL_KHR)
|
||||
{
|
||||
VkCheckA("BeginFrame failure: vkAcquireNextImageKHR error", result);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RecreateSwapchain(Vulkan* vk)
|
||||
{
|
||||
|
||||
@ -66,6 +66,7 @@ PFN_vkCreateImage vkCreateImage = null;
|
||||
PFN_vkCreateImageView vkCreateImageView = null;
|
||||
PFN_vkCreateBufferView vkCreateBufferView = null;
|
||||
PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = null;
|
||||
PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = null;
|
||||
PFN_vkGetDeviceQueue vkGetDeviceQueue = null;
|
||||
PFN_vkCreateSemaphore vkCreateSemaphore = null;
|
||||
PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = null;
|
||||
@ -169,6 +170,7 @@ LoadDeviceFunctions(Vulkan* vk)
|
||||
vkQueueSubmit2 = cast(PFN_vkQueueSubmit2KHR)vkGetDeviceProcAddr(vk.device, "vkQueueSubmit2KHR");
|
||||
vkCreateBufferView = cast(PFN_vkCreateBufferView)vkGetDeviceProcAddr(vk.device, "vkCreateBufferView");
|
||||
vkGetSwapchainImagesKHR = cast(PFN_vkGetSwapchainImagesKHR)vkGetDeviceProcAddr(vk.device, "vkGetSwapchainImagesKHR");
|
||||
vkGetSwapchainStatusKHR = cast(PFN_vkGetSwapchainStatusKHR)vkGetDeviceProcAddr(vk.device, "vkGetSwapchainStatusKHR");
|
||||
vkGetDeviceQueue = cast(PFN_vkGetDeviceQueue)vkGetDeviceProcAddr(vk.device, "vkGetDeviceQueue");
|
||||
vkCreateSemaphore = cast(PFN_vkCreateSemaphore)vkGetDeviceProcAddr(vk.device, "vkCreateSemaphore");
|
||||
vkAllocateCommandBuffers = cast(PFN_vkAllocateCommandBuffers)vkGetDeviceProcAddr(vk.device, "vkAllocateCommandBuffers");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user