diff options
Diffstat (limited to 'src/vk/graphics_pipeline_3d_layout.cpp')
-rw-r--r-- | src/vk/graphics_pipeline_3d_layout.cpp | 129 |
1 files changed, 3 insertions, 126 deletions
diff --git a/src/vk/graphics_pipeline_3d_layout.cpp b/src/vk/graphics_pipeline_3d_layout.cpp index 644aac9..e5a0c82 100644 --- a/src/vk/graphics_pipeline_3d_layout.cpp +++ b/src/vk/graphics_pipeline_3d_layout.cpp @@ -25,134 +25,14 @@ namespace { void -load_descriptor_set_world(void *obj) -{ - auto self = static_cast<VK::GraphicsPipeline3DLayout*>(obj); - - std::array<VkDescriptorSetLayoutBinding, 2> set_layouts{}; - set_layouts[0].binding = 0; - set_layouts[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - set_layouts[0].descriptorCount = 1; - set_layouts[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT; - set_layouts[0].pImmutableSamplers = nullptr; - - set_layouts[1].binding = 1; - set_layouts[1].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - set_layouts[1].descriptorCount = 1; - set_layouts[1].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; - set_layouts[1].pImmutableSamplers = nullptr; - - VkDescriptorSetLayoutCreateInfo layout_info{}; - layout_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; - layout_info.pNext = nullptr; - layout_info.flags = 0; - layout_info.bindingCount = set_layouts.size(); - layout_info.pBindings = set_layouts.data(); - - if(vkCreateDescriptorSetLayout( - cg_core.vk_device_with_swapchain->device, &layout_info, nullptr, - &self->descriptor_set_world) != VK_SUCCESS) - throw CommandError{ - "Failed to create Vulkan descriptor set layout for world view."}; -} - -void -unload_descriptor_set_world(void *obj) -{ - auto self = static_cast<VK::GraphicsPipeline3DLayout*>(obj); - - vkDestroyDescriptorSetLayout( - cg_core.vk_device_with_swapchain->device, self->descriptor_set_world, - nullptr); -} - -void -load_descriptor_set_view(void *obj) -{ - auto self = static_cast<VK::GraphicsPipeline3DLayout*>(obj); - - std::array<VkDescriptorSetLayoutBinding, 1> set_layouts{}; - set_layouts[0].binding = 0; - set_layouts[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - set_layouts[0].descriptorCount = 1; - set_layouts[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT; - set_layouts[0].pImmutableSamplers = nullptr; - - VkDescriptorSetLayoutCreateInfo layout_info{}; - layout_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; - layout_info.pNext = nullptr; - layout_info.flags = 0; - layout_info.bindingCount = set_layouts.size(); - layout_info.pBindings = set_layouts.data(); - - if(vkCreateDescriptorSetLayout( - cg_core.vk_device_with_swapchain->device, &layout_info, nullptr, - &self->descriptor_set_view) != VK_SUCCESS) - throw CommandError{ - "Failed to create Vulkan descriptor set layout for world view."}; -} - -void -unload_descriptor_set_view(void *obj) -{ - auto self = static_cast<VK::GraphicsPipeline3DLayout*>(obj); - - vkDestroyDescriptorSetLayout( - cg_core.vk_device_with_swapchain->device, self->descriptor_set_view, - nullptr); -} - -void -load_descriptor_set_model(void *obj) -{ - auto self = static_cast<VK::GraphicsPipeline3DLayout*>(obj); - - std::array<VkDescriptorSetLayoutBinding, 2> layout_bindings; - layout_bindings[0].binding = 0; - layout_bindings[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; - layout_bindings[0].descriptorCount = 1; - layout_bindings[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT; - layout_bindings[0].pImmutableSamplers = nullptr; - layout_bindings[1].binding = 1; - layout_bindings[1].descriptorType = - VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - layout_bindings[1].descriptorCount = 1; - layout_bindings[1].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; - layout_bindings[1].pImmutableSamplers = nullptr; - - VkDescriptorSetLayoutCreateInfo layout_info{}; - layout_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; - layout_info.pNext = nullptr; - layout_info.flags = 0; - layout_info.bindingCount = static_cast<uint32_t>(layout_bindings.size()); - layout_info.pBindings = layout_bindings.data(); - - if(vkCreateDescriptorSetLayout( - cg_core.vk_device_with_swapchain->device, &layout_info, nullptr, - &self->descriptor_set_model) != VK_SUCCESS) - throw CommandError{ - "Failed to create Vulkan descriptor set layout for model instance."}; -} - -void -unload_descriptor_set_model(void *obj) -{ - auto self = static_cast<VK::GraphicsPipeline3DLayout*>(obj); - - vkDestroyDescriptorSetLayout( - cg_core.vk_device_with_swapchain->device, - self->descriptor_set_model, nullptr); -} - -void load_pipeline(void *obj) { auto self = static_cast<VK::GraphicsPipeline3DLayout*>(obj); std::array<VkDescriptorSetLayout, 3> set_layouts{ - self->descriptor_set_world, - self->descriptor_set_view, - self->descriptor_set_model}; + cg_core.vk_descriptor_set_layout->world, + cg_core.vk_descriptor_set_layout->view, + cg_core.vk_descriptor_set_layout->model}; VkPipelineLayoutCreateInfo pipeline_layout_info{}; pipeline_layout_info.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; @@ -263,9 +143,6 @@ unload_render_pass(void *obj) } const CommandChain loader{ - {&load_descriptor_set_world, &unload_descriptor_set_world}, - {&load_descriptor_set_view, &unload_descriptor_set_view}, - {&load_descriptor_set_model, &unload_descriptor_set_model}, {&load_pipeline, &unload_pipeline}, {&load_render_pass, &unload_render_pass} }; |