// Copyright (C) 2020 Jérôme Leclercq // This file is part of the "Nazara Engine - Vulkan Renderer" // For conditions of distribution and use, see copyright notice in Config.hpp #include #include #include #include #include #include #include namespace Nz { bool VulkanRenderPipelineLayout::Create(Vk::Device& device, RenderPipelineLayoutInfo layoutInfo) { m_device = &device; m_layoutInfo = std::move(layoutInfo); StackVector layoutBindings = NazaraStackVector(VkDescriptorSetLayoutBinding, m_layoutInfo.bindings.size()); for (const auto& bindingInfo : m_layoutInfo.bindings) { VkDescriptorSetLayoutBinding& layoutBinding = layoutBindings.emplace_back(); layoutBinding.binding = bindingInfo.index; layoutBinding.descriptorCount = 1U; layoutBinding.descriptorType = ToVulkan(bindingInfo.type); layoutBinding.stageFlags = ToVulkan(bindingInfo.shaderStageFlags); } if (!m_descriptorSetLayout.Create(*m_device, UInt32(layoutBindings.size()), layoutBindings.data())) return false; if (!m_pipelineLayout.Create(*m_device, m_descriptorSetLayout)) return false; return true; } }