diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2021-03-07 20:10:31 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2021-03-07 20:10:31 +0100 |
| commit | e6d55c22bee063057c0f7b529baff2936e882f3d (patch) | |
| tree | 1a7fe62cde7e2e23a24389f1efe2248aa686e570 /src/vk-api.cpp | |
| parent | 7e572410bb95a46db3bd3955cc7689ea87973cea (diff) | |
Make imgui backend more flexible (display demo scene)
Diffstat (limited to 'src/vk-api.cpp')
| -rw-r--r-- | src/vk-api.cpp | 55 |
1 files changed, 34 insertions, 21 deletions
diff --git a/src/vk-api.cpp b/src/vk-api.cpp index 0c7d114..117f461 100644 --- a/src/vk-api.cpp +++ b/src/vk-api.cpp @@ -65,14 +65,16 @@ Buffer vkapi::create_buffer(size_t data_size, VkBufferUsageFlags buffer_usage, V VmaAllocationCreateInfo alloc_create_info = {}; alloc_create_info.usage = mem_usage; alloc_create_info.flags = VMA_ALLOCATION_CREATE_MAPPED_BIT; - + VKRESULT(vmaCreateBuffer(context.allocator, &buffer_info, &alloc_create_info, &buffer.handle, &buffer.alloc, &buffer.alloc_info)) + buffer.size = data_size; + return std::move(buffer); } void vkapi::destroy_buffer(Buffer& buffer) { - vmaUnmapMemory(context.allocator, buffer.alloc); + // vmaUnmapMemory(context.allocator, buffer.alloc); vmaDestroyBuffer(context.allocator, buffer.handle, buffer.alloc); } @@ -407,7 +409,7 @@ Pipeline vkapi::create_compute_pipeline(const char* shader_name, std::vector<VkD return std::move(pipeline); } -Pipeline vkapi::create_graphics_pipeline(const char* shader_name, std::vector<VkDescriptorSetLayoutBinding>& bindings, VkShaderStageFlagBits shader_stages, VkRenderPass render_pass) { +Pipeline vkapi::create_graphics_pipeline(const char* shader_name, std::vector<VkDescriptorSetLayoutBinding>& bindings, VkShaderStageFlagBits shader_stages, VkRenderPass render_pass, std::vector<VkDynamicState> dynamic_states) { Pipeline pipeline; std::vector<VkPipelineShaderStageCreateInfo> stages_create_info = {}; @@ -478,32 +480,36 @@ Pipeline vkapi::create_graphics_pipeline(const char* shader_name, std::vector<Vk input_assembly_state_create_info.flags = 0; input_assembly_state_create_info.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; - VkViewport viewport = {}; - viewport.x = 0.f; - viewport.y = 0.f; - viewport.width = 384.f; - viewport.height = 186.f; - viewport.minDepth = 0.f; - viewport.maxDepth = 1.f; + // VkViewport viewport = {}; + // viewport.x = 0.f; + // viewport.y = 0.f; + // viewport.width = 384.f; + // viewport.height = 186.f; + // viewport.minDepth = 0.f; + // viewport.maxDepth = 1.f; - VkRect2D scissor = {}; - scissor.offset = { - 0, - 0, - }; - scissor.extent = { - 384, - 186, - }; + // VkRect2D scissor = {}; + // scissor.offset = { + // 0, + // 0, + // }; + // scissor.extent = { + // 384, + // 186, + // }; VkPipelineViewportStateCreateInfo viewport_state_create_info = {}; viewport_state_create_info.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO; viewport_state_create_info.pNext = nullptr; viewport_state_create_info.flags = 0; viewport_state_create_info.viewportCount = 1; - viewport_state_create_info.pViewports = &viewport; + viewport_state_create_info.pViewports = VK_NULL_HANDLE; viewport_state_create_info.scissorCount = 1; - viewport_state_create_info.pScissors = &scissor; + viewport_state_create_info.pScissors = VK_NULL_HANDLE; + // viewport_state_create_info.viewportCount = 1; + // viewport_state_create_info.pViewports = &viewport; + // viewport_state_create_info.scissorCount = 1; + // viewport_state_create_info.pScissors = &scissor; VkPipelineRasterizationStateCreateInfo rasterization_state_create_info = {}; rasterization_state_create_info.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; @@ -543,6 +549,12 @@ Pipeline vkapi::create_graphics_pipeline(const char* shader_name, std::vector<Vk color_blend_state_create_info.attachmentCount = 1; color_blend_state_create_info.pAttachments = &color_attachment_state; + VkPipelineDynamicStateCreateInfo dynamic_state_create_info = {}; + dynamic_state_create_info.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; + dynamic_state_create_info.pNext = VK_NULL_HANDLE; + dynamic_state_create_info.flags = 0; + dynamic_state_create_info.dynamicStateCount = dynamic_states.size(); + dynamic_state_create_info.pDynamicStates = dynamic_states.data(); VkGraphicsPipelineCreateInfo pipeline_create_info = {}; pipeline_create_info.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; @@ -556,6 +568,7 @@ Pipeline vkapi::create_graphics_pipeline(const char* shader_name, std::vector<Vk pipeline_create_info.pRasterizationState = &rasterization_state_create_info; pipeline_create_info.pMultisampleState = &multisample_state_create_info; pipeline_create_info.pColorBlendState = &color_blend_state_create_info; + pipeline_create_info.pDynamicState = &dynamic_state_create_info; pipeline_create_info.layout = pipeline.layout; pipeline_create_info.renderPass = render_pass; pipeline_create_info.subpass = 0; |
