From 5ab035b07612579ce927f6e540a15f67fe5edc7e Mon Sep 17 00:00:00 2001 From: kearwood Date: Tue, 20 Sep 2022 18:23:45 -0700 Subject: [PATCH] Implemented KRDevice::createDescriptorSets --- kraken/KRDevice.cpp | 13 +++++++++++-- kraken/KRDevice.h | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/kraken/KRDevice.cpp b/kraken/KRDevice.cpp index dd2aea4..46b9e2f 100644 --- a/kraken/KRDevice.cpp +++ b/kraken/KRDevice.cpp @@ -475,9 +475,18 @@ bool KRDevice::initDescriptorPool() return true; } -VkDescriptorPool KRDevice::getDescriptorPool() +void KRDevice::createDescriptorSets(const std::vector& layouts, std::vector& descriptorSets) { - return m_descriptorPool; + VkDescriptorSetAllocateInfo allocInfo{}; + allocInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; + allocInfo.descriptorPool = m_descriptorPool; + allocInfo.descriptorSetCount = descriptorSets.size(); + allocInfo.pSetLayouts = layouts.data(); + if (vkAllocateDescriptorSets(m_logicalDevice, &allocInfo, descriptorSets.data()) != VK_SUCCESS) { + // TODO - Vulkan Refactoring - Error Handling + // In event of failure, should allocate an additional descriptor pool and try again + assert(false); + } } bool KRDevice::initialize(const std::vector& deviceExtensions) diff --git a/kraken/KRDevice.h b/kraken/KRDevice.h index fd96292..51fe1e3 100644 --- a/kraken/KRDevice.h +++ b/kraken/KRDevice.h @@ -83,7 +83,7 @@ public: void graphicsUpload(VkCommandBuffer& commandBuffer, KRDataBlock& data, VkBuffer destination); void graphicsUpload(VkCommandBuffer& commandBuffer, void* data, size_t size, VkBuffer destination); - VkDescriptorPool getDescriptorPool(); + void createDescriptorSets(const std::vector& layouts, std::vector& descriptorSets); VkPhysicalDevice m_device; VkDevice m_logicalDevice;