diff options
Diffstat (limited to 'src/vk/graphics_pipeline_2d_wired_layout.cpp')
-rw-r--r-- | src/vk/graphics_pipeline_2d_wired_layout.cpp | 62 |
1 files changed, 14 insertions, 48 deletions
diff --git a/src/vk/graphics_pipeline_2d_wired_layout.cpp b/src/vk/graphics_pipeline_2d_wired_layout.cpp index ae58a2f..8e06641 100644 --- a/src/vk/graphics_pipeline_2d_wired_layout.cpp +++ b/src/vk/graphics_pipeline_2d_wired_layout.cpp @@ -20,6 +20,7 @@ #include "../core.hpp" #include "graphics_pipeline_2d_solid_layout.hpp" +#include "uniform_data_object.hpp" namespace { @@ -62,63 +63,29 @@ unload_descriptor_set_view(void *obj) } void -load_descriptor_set_instance(void *obj) -{ - auto self = static_cast<VK::GraphicsPipeline2DWiredLayout*>(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_UNIFORM_BUFFER; - 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_instance) != VK_SUCCESS) - throw CommandError{ - "Failed to create Vulkan descriptor set layout for rectangles."}; -} - -void -unload_descriptor_set_instance(void *obj) -{ - auto self = static_cast<VK::GraphicsPipeline2DWiredLayout*>(obj); - - vkDestroyDescriptorSetLayout( - cg_core.vk_device_with_swapchain->device, self->descriptor_set_instance, - nullptr); -} - -void load_pipeline(void *obj) { auto self = static_cast<VK::GraphicsPipeline2DWiredLayout*>(obj); - std::array<VkDescriptorSetLayout, 2> set_layouts{ - self->descriptor_set_view, self->descriptor_set_instance + std::array<VkDescriptorSetLayout, 1> set_layouts{ + self->descriptor_set_view }; + std::array<VkPushConstantRange, 2> push_constants; + push_constants[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT; + push_constants[0].offset = 0; + push_constants[0].size = sizeof(VK::ODOVector4D); + + push_constants[1].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT; + push_constants[1].offset = sizeof(VK::ODOVector4D); + push_constants[1].size = sizeof(VK::ODOVector3D); + VkPipelineLayoutCreateInfo pipeline_layout_info{}; pipeline_layout_info.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; pipeline_layout_info.setLayoutCount = set_layouts.size(); pipeline_layout_info.pSetLayouts = set_layouts.data(); - pipeline_layout_info.pushConstantRangeCount = 0; - pipeline_layout_info.pPushConstantRanges = nullptr; + pipeline_layout_info.pushConstantRangeCount = push_constants.size(); + pipeline_layout_info.pPushConstantRanges = push_constants.data(); if(vkCreatePipelineLayout( cg_core.vk_device_with_swapchain->device, &pipeline_layout_info, @@ -208,7 +175,6 @@ unload_render_pass(void *obj) const CommandChain loader{ {&load_descriptor_set_view, &unload_descriptor_set_view}, - {&load_descriptor_set_instance, &unload_descriptor_set_instance}, {&load_pipeline, &unload_pipeline}, {&load_render_pass, &unload_render_pass} }; |