summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-08-23 15:33:40 -0400
committerJonathan Bradley <jcb@pikum.xyz>2023-08-23 15:33:40 -0400
commit998ed84c26da259c5b19e228af245e58e0daa7d6 (patch)
treebfbe872975fabe74d29f59eeca00718cf4a41fa2 /src
parent70a7b74aba8c8337188d0c5047bff3a8a1e12525 (diff)
create command pool
Diffstat (limited to 'src')
-rw-r--r--src/window.cpp15
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() {