From a3b498d11bdb2deb7ffbcffb8197f5b58c235e22 Mon Sep 17 00:00:00 2001 From: Alexandre Date: Thu, 23 Apr 2026 08:54:57 +0200 Subject: [PATCH] Extended the swapchain creation process --- src/engine/engine.h | 67 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/src/engine/engine.h b/src/engine/engine.h index cdb09d3..82b9d4f 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -3,7 +3,9 @@ // Normal header #include "types.h" +#include #include +#include struct FrameData { @@ -391,6 +393,71 @@ void Engine::initSwapchain() { 1 }; + // Hardcoding draw format to a 32 bit float + + _drawImage.imageFormat = VK_FORMAT_R16G16B16A16_SFLOAT; + _drawImage.imageExtent = drawImageExtent; + + VkImageUsageFlags drawImageUsages { + VK_IMAGE_USAGE_TRANSFER_SRC_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT | + VK_IMAGE_USAGE_STORAGE_BIT | + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT + }; + + VkImageCreateInfo rImgInfo = { + vkinit::imageCreateInfo( + _drawImage.imageFormat, + drawImageUsages, + drawImageExtent + ) + }; + + // Use the GPU local memory for the draw image + VmaAllocationCreateInfo rImgAllocInfo = { + .usage = VMA_MEMORY_USAGE_GPU_ONLY, + .requiredFlags = VkMemoryPropertyFlags(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) + }; + + vmaCreateImage( + _allocator, + &rImgInfo, + &_drawImage.image, + &_drawImage.allocation, + nullptr + ); + + VkImageViewCreateInfo rViewInfo = { + vkinit::imageViewCreateInfo( + _drawImage.imageFormat, + _drawImage.image, + VK_IMAGE_ASPECT_DEPTH_BIT + ) + }; + + VK_CHECK( + vkCreateImageView( + _device, + &rViewInfo, + nullptr, + &_drawImage.imageView + ) + ); + + // Add to deletion queues + _mainDeletionQueue.pushFunction([=]() { + vkDestroyImageView( + _device, + _drawImage.imageView, + nullptr + ); + vmaDestroyImage( + _allocator, + _drawImage.image, + _drawImage.allocation + ); + }) + #ifdef DEBUG fmt::println("Swapchain initialized !"); #endif