summaryrefslogtreecommitdiff
path: root/src/vk/graphics_pipeline_3d_layout.cpp
diff options
context:
space:
mode:
authorFrederico Linhares <fred@linhares.blue>2023-09-29 14:57:40 -0300
committerFrederico Linhares <fred@linhares.blue>2023-09-29 14:57:40 -0300
commitb44c79e11ba574c74ae650e1430b1d173aacc910 (patch)
treedca509d3b2c07d6e36039cfd6b7102372d0fbba9 /src/vk/graphics_pipeline_3d_layout.cpp
parentfd4279d77fdc64a534a2bbc05b2f5d3852c765f7 (diff)
refa Move all descriptor sets to a new class
* src/vk/descriptor_set_layout.hpp: Moving all descriptor sets in the same class makes it easier to identify code duplication. * src/vk/graphics_pipeline_2d_solid_layout.cpp, src/vk/graphics_pipeline_2d_wired_layout.cpp, src/vk/graphics_pipeline_3d_layout.cpp: Remove redundant descriptor set layouts.
Diffstat (limited to 'src/vk/graphics_pipeline_3d_layout.cpp')
-rw-r--r--src/vk/graphics_pipeline_3d_layout.cpp129
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}
};