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);
VkPipelineLayoutCreateInfo linf;
memset(&linf, 0, sizeof linf);
linf.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
- linf.setLayoutCount = dset_layouts.size();
- linf.pSetLayouts = dset_layouts.data();
+ linf.setLayoutCount = res_layouts.size();
+ linf.pSetLayouts = res_layouts.data();
//TODO find max num dsets vkGetPhysicalDeviceProperties
//maxBoundDescriptorSets of VkPhysicalDeviceLimits
- linf.pushConstantRangeCount = push_const_ranges.size();
- linf.pPushConstantRanges = push_const_ranges.data();
+ //linf.pushConstantRangeCount = push_const_ranges.size();
+ //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;
VkPipeline gpipeline;
if(vkCreateGraphicsPipelines(vk_device, pcache, 1, &gpinf, 0, &gpipeline) !=
- VK_SUCCESS) {
+ VK_SUCCESS) {
fprintf(stderr, "Failed to create graphics pipeline.\n");
return 0;
}
}
void VkuPipelineGenerator::set_shader_modules(VkShaderModule vs,
- VkShaderModule fs)
+ VkShaderModule fs)
{
sdri[0].module = vs;
sdri[1].module = fs;
}
void VkuPipelineGenerator::set_attribute(uint32_t binding, uint32_t stride,
- uint32_t location, VkFormat format)
+ uint32_t location, VkFormat format)
{
VkVertexInputBindingDescription bdsc;
bdsc.binding = binding;
adsc.format = format;
}
-void VkuPipelineGenerator::set_descriptor_set_layout(const vku_descriptor &desc)
+void VkuPipelineGenerator::set_resources_layout(VkDescriptorSetLayout layout)
{
- dset_layouts.push_back(desc.layout);
+ res_layouts.push_back(layout);
}