projects
/
demo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixes
[demo]
/
src
/
vulkan
/
vkutil-pipeline.cc
diff --git
a/src/vulkan/vkutil-pipeline.cc
b/src/vulkan/vkutil-pipeline.cc
index
1d2620d
..
44cf5d6
100644
(file)
--- a/
src/vulkan/vkutil-pipeline.cc
+++ b/
src/vulkan/vkutil-pipeline.cc
@@
-46,9
+46,13
@@
VkuPipelineGenerator::VkuPipelineGenerator()
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);
{
VkPipelineDynamicStateCreateInfo dyni;
memset(&dyni, 0, sizeof dyni);
@@
-79,15
+83,14
@@
VkPipeline VkuPipelineGenerator::generate(VkuDynState dyn_flags) const
VkPipelineLayoutCreateInfo linf;
memset(&linf, 0, sizeof linf);
linf.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
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
//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
//maxPushConstantsSize from VkPhysicalDeviceLimits
- VkPipelineLayout layout;
if(vkCreatePipelineLayout(vk_device, &linf, 0, &layout) != VK_SUCCESS) {
fprintf(stderr, "Failed to create pipeline layout.\n");
return 0;
if(vkCreatePipelineLayout(vk_device, &linf, 0, &layout) != VK_SUCCESS) {
fprintf(stderr, "Failed to create pipeline layout.\n");
return 0;
@@
-120,7
+123,7
@@
VkPipeline VkuPipelineGenerator::generate(VkuDynState dyn_flags) const
VkPipeline gpipeline;
if(vkCreateGraphicsPipelines(vk_device, pcache, 1, &gpinf, 0, &gpipeline) !=
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;
}
fprintf(stderr, "Failed to create graphics pipeline.\n");
return 0;
}
@@
-129,14
+132,14
@@
VkPipeline VkuPipelineGenerator::generate(VkuDynState dyn_flags) const
}
void VkuPipelineGenerator::set_shader_modules(VkShaderModule vs,
}
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,
{
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;
{
VkVertexInputBindingDescription bdsc;
bdsc.binding = binding;
@@
-152,7
+155,7
@@
void VkuPipelineGenerator::set_attribute(uint32_t binding, uint32_t stride,
adsc.format = format;
}
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);
}
}