Skip to content

Commit e7ea056

Browse files
committed
Revert Swapchain Related Changes to VulkanDevice.cpp
- Being worked on by another branch.
1 parent f45414e commit e7ea056

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

ZEngine/ZEngine/Hardwares/VulkanDevice.cpp

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,23 +1060,26 @@ namespace ZEngine::Hardwares
10601060
{
10611061
VkSurfaceCapabilitiesKHR capabilities{};
10621062
vkGetPhysicalDeviceSurfaceCapabilitiesKHR(PhysicalDevice, Surface, &capabilities);
1063-
SwapchainImageWidth = std::clamp(CurrentWindow->GetWidth(), capabilities.minImageExtent.width, capabilities.maxImageExtent.width);
1064-
SwapchainImageHeight = std::clamp(CurrentWindow->GetHeight(), capabilities.minImageExtent.height, capabilities.maxImageExtent.height);
1063+
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max())
1064+
{
1065+
SwapchainImageWidth = capabilities.currentExtent.width;
1066+
SwapchainImageHeight = capabilities.currentExtent.height;
1067+
}
10651068

1066-
auto min_image_count = SwapchainImageCount < capabilities.minImageCount ? capabilities.minImageCount : SwapchainImageCount;
1069+
auto min_image_count = std::clamp(capabilities.minImageCount, capabilities.minImageCount + 1, capabilities.maxImageCount);
10671070
VkSwapchainCreateInfoKHR swapchain_create_info = {
10681071
.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, .pNext = nullptr, .surface = Surface, .minImageCount = min_image_count, .imageFormat = SurfaceFormat.format, .imageColorSpace = SurfaceFormat.colorSpace, .imageExtent = VkExtent2D{.width = SwapchainImageWidth, .height = SwapchainImageHeight},
10691072
.imageArrayLayers = 1, .imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, .preTransform = capabilities.currentTransform, .compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR, .presentMode = PresentMode, .clipped = VK_TRUE
10701073
};
10711074

10721075
if (SwapchainImageViews.capacity() <= 0)
10731076
{
1074-
SwapchainImageViews.init(Arena, SwapchainImageCount);
1077+
SwapchainImageViews.init(Arena, SwapchainImageCount, SwapchainImageCount);
10751078
}
10761079

10771080
if (SwapchainFramebuffers.capacity() <= 0)
10781081
{
1079-
SwapchainFramebuffers.init(Arena, SwapchainImageCount);
1082+
SwapchainFramebuffers.init(Arena, SwapchainImageCount, SwapchainImageCount);
10801083
}
10811084

10821085
auto scratch = ZGetScratch(Arena);
@@ -1095,12 +1098,18 @@ namespace ZEngine::Hardwares
10951098

10961099
ZENGINE_VALIDATE_ASSERT(vkCreateSwapchainKHR(LogicalDevice, &swapchain_create_info, nullptr, &SwapchainHandle) == VK_SUCCESS, "Failed to create Swapchain")
10971100

1098-
ZENGINE_VALIDATE_ASSERT(vkGetSwapchainImagesKHR(LogicalDevice, SwapchainHandle, &SwapchainImageCount, nullptr) == VK_SUCCESS, "Failed to get Images count from Swapchain")
1101+
uint32_t image_count = 0;
1102+
ZENGINE_VALIDATE_ASSERT(vkGetSwapchainImagesKHR(LogicalDevice, SwapchainHandle, &image_count, nullptr) == VK_SUCCESS, "Failed to get Images count from Swapchain")
10991103

1100-
Array<VkImage> SwapchainImages = {};
1104+
if (image_count < SwapchainImageCount)
1105+
{
1106+
ZENGINE_CORE_WARN("Max Swapchain image count supported is {}, but requested {}", image_count, SwapchainImageCount);
1107+
SwapchainImageCount = image_count;
1108+
ZENGINE_CORE_WARN("Swapchain image count has changed from {} to {}", SwapchainImageCount, image_count);
1109+
}
11011110

1111+
Array<VkImage> SwapchainImages = {};
11021112
SwapchainImages.init(scratch.Arena, SwapchainImageCount, SwapchainImageCount);
1103-
11041113
ZENGINE_VALIDATE_ASSERT(vkGetSwapchainImagesKHR(LogicalDevice, SwapchainHandle, &SwapchainImageCount, SwapchainImages.data()) == VK_SUCCESS, "Failed to get VkImages from Swapchain")
11051114

11061115
/*Transition Image from Undefined to Present_src*/
@@ -1127,12 +1136,12 @@ namespace ZEngine::Hardwares
11271136

11281137
for (int i = 0; i < SwapchainImageCount; ++i)
11291138
{
1130-
SwapchainImageViews.push(CreateImageView(SwapchainImages[i], SurfaceFormat.format, VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT));
1139+
SwapchainImageViews[i] = CreateImageView(SwapchainImages[i], SurfaceFormat.format, VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT);
11311140

11321141
Array<VkImageView> fb_images_views;
11331142
fb_images_views.init(scratch.Arena, 1);
11341143
fb_images_views.push(SwapchainImageViews[i]);
1135-
SwapchainFramebuffers.push(CreateFramebuffer(ArrayView{fb_images_views}, SwapchainAttachment->GetHandle(), SwapchainImageWidth, SwapchainImageHeight));
1144+
SwapchainFramebuffers[i] = CreateFramebuffer(ArrayView{fb_images_views}, SwapchainAttachment->GetHandle(), SwapchainImageWidth, SwapchainImageHeight);
11361145
}
11371146

11381147
ZReleaseScratch(scratch);

0 commit comments

Comments
 (0)