SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
VulkanPipelineLayout.h
1#pragma once
2
3#include "spark/render/Pipeline.h"
4#include "spark/render/Resource.h"
5#include "spark/render/vk/Export.h"
6#include "spark/render/vk/Helpers.h"
7#include "spark/render/vk/VulkanDescriptorSetLayout.h"
8#include "spark/render/vk/VulkanPushConstantsLayout.h"
9
10#include <vector>
11
12SPARK_FWD_DECLARE_VK_HANDLE(VkPipelineLayout)
13
14namespace spark::render::vk
15{
16 class VulkanDevice;
17
21 class SPARK_RENDER_VK_EXPORT VulkanPipelineLayout final : public PipelineLayout<VulkanDescriptorSetLayout, VulkanPushConstantsLayout>, public Resource<VkPipelineLayout>
22 {
23 public:
30 explicit VulkanPipelineLayout(const VulkanDevice& device,
31 std::vector<std::unique_ptr<VulkanDescriptorSetLayout>>&& descriptor_set_layouts,
32 std::unique_ptr<VulkanPushConstantsLayout>&& push_constants_layout);
33 ~VulkanPipelineLayout() override;
34
35 VulkanPipelineLayout(const VulkanPipelineLayout& other) = delete;
36 VulkanPipelineLayout(VulkanPipelineLayout&& other) noexcept = delete;
37 VulkanPipelineLayout& operator=(const VulkanPipelineLayout& other) = delete;
38 VulkanPipelineLayout& operator=(VulkanPipelineLayout&& other) noexcept = delete;
39
44 [[nodiscard]] const VulkanDevice& device() const noexcept;
45
47 [[nodiscard]] const VulkanDescriptorSetLayout& descriptorSet(unsigned space) const override;
48
50 [[nodiscard]] std::vector<const VulkanDescriptorSetLayout*> descriptorSets() const noexcept override;
51
53 [[nodiscard]] const VulkanPushConstantsLayout* pushConstants() const noexcept override;
54
55 private:
56 struct Impl;
57 std::unique_ptr<Impl> m_impl;
58 };
59}
Represents a the layout of a RenderPipeline.
Definition Pipeline.h:51
Definition Resource.h:34
Vulkan implementation of IDescriptorSetLayout.
Definition VulkanDescriptorSetLayout.h:25
Vulkan implementation of IGraphicsDevice.
Definition VulkanDevice.h:25
Vulkan implementation of IPipelineLayout.
Definition VulkanPipelineLayout.h:22
Vulkan implementation of IPushConstantsLayout.
Definition VulkanPushConstantsLayout.h:17
Definition VulkanPipelineLayout.cpp:16