fixes
[demo] / src / vulkan / vkutil-pipeline.cc
index 4be1d22..44cf5d6 100644 (file)
@@ -46,9 +46,13 @@ VkuPipelineGenerator::VkuPipelineGenerator()
 
 VkuPipelineGenerator::~VkuPipelineGenerator()
 {
+       for(size_t i=0; i<res_layouts.size(); i++) {
+               vkDestroyDescriptorSetLayout(vk_device, res_layouts[i], 0);
+       }
+       vkDestroyPipelineLayout(vk_device, layout, 0);
 }
 
-VkPipeline VkuPipelineGenerator::generate(VkuDynState dyn_flags) const
+VkPipeline VkuPipelineGenerator::generate(VkuDynState dyn_flags)
 {
        VkPipelineDynamicStateCreateInfo dyni;
        memset(&dyni, 0, sizeof dyni);
@@ -87,7 +91,6 @@ VkPipeline VkuPipelineGenerator::generate(VkuDynState dyn_flags) const
        //linf.pPushConstantRanges = push_const_ranges.data();
        //maxPushConstantsSize from VkPhysicalDeviceLimits
 
-       VkPipelineLayout layout;
        if(vkCreatePipelineLayout(vk_device, &linf, 0, &layout) != VK_SUCCESS) {
                fprintf(stderr, "Failed to create pipeline layout.\n");
                return 0;
@@ -151,3 +154,8 @@ void VkuPipelineGenerator::set_attribute(uint32_t binding, uint32_t stride,
        adsc.binding = binding;
        adsc.format = format;
 }
+
+void VkuPipelineGenerator::set_resources_layout(VkDescriptorSetLayout layout)
+{
+       res_layouts.push_back(layout);
+}