diff options
| -rw-r--r-- | src/window.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/window.cpp b/src/window.cpp index e8a4b4a..be4dec9 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -45,6 +45,7 @@ VkDescriptorSetLayout vkDescriptorSetLayout; VkPipelineLayout pipelineLayout; VkPipeline graphicsPipeline; VkFramebuffer *swapchainFramebuffers = nullptr; +VkCommandPool vkCommandPool; const std::vector<const char *> REQUIRED_EXTENSIONS = std::vector<const char *> { VK_KHR_SWAPCHAIN_EXTENSION_NAME @@ -673,7 +674,20 @@ void CreateFramebuffers() { } } +void CreateCommandPool() { + VkCommandPoolCreateInfo poolInfo{}; + poolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; + poolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; + poolInfo.queueFamilyIndex = graphicsFamilyIndex; + + auto result = vkCreateCommandPool(vkDevice, &poolInfo, vkAllocator, &vkCommandPool); + if (result != VK_SUCCESS) { + throw "failed to create command pool"; + } +} + void DestroySwapchain() { + vkDestroyCommandPool(vkDevice, vkCommandPool, vkAllocator); if (swapchainFramebuffers != nullptr && swapchainFramebuffers != CAFE_BABE(VkFramebuffer)) { for (long i = 0; i < swapchainLength; ++i) { vkDestroyFramebuffer(vkDevice, swapchainFramebuffers[i], vkAllocator); @@ -714,6 +728,7 @@ void CreateWindow(PKEWindowProperties *wp) { CreateRenderPass(); CreateGraphicsPipeline(); CreateFramebuffers(); + CreateCommandPool(); } void DestroyWindow() { |
