SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
VulkanPushConstantsLayout.h
1#pragma once
2
3#include "spark/render/PushConstantsLayout.h"
4#include "spark/render/vk/Export.h"
5#include "spark/render/vk/VulkanPushConstantsRange.h"
6
7#include <memory>
8
9namespace spark::render::vk
10{
11 class VulkanPipelineLayout;
12
16 class SPARK_RENDER_VK_EXPORT VulkanPushConstantsLayout final : public PushConstantsLayout<VulkanPushConstantsRange>
17 {
19
20 public:
28 explicit VulkanPushConstantsLayout(std::vector<std::unique_ptr<VulkanPushConstantsRange>>&& ranges, unsigned int size);
30
33 VulkanPushConstantsLayout& operator=(const VulkanPushConstantsLayout& other) = delete;
34 VulkanPushConstantsLayout& operator=(VulkanPushConstantsLayout&& other) noexcept = delete;
35
40 [[nodiscard]] const VulkanPipelineLayout& pipelineLayout() const;
41
43 [[nodiscard]] unsigned size() const noexcept override;
44
46 [[nodiscard]] const VulkanPushConstantsRange& range(ShaderStage stage) const override;
47
49 [[nodiscard]] std::vector<const VulkanPushConstantsRange*> ranges() const noexcept override;
50
51 private:
56 void setPipelineLayout(const VulkanPipelineLayout& pipeline_layout);
57
58 private:
59 struct Impl;
60 std::unique_ptr<Impl> m_impl;
61 };
62}
Describes the layout of the pipelines push constant ranges.
Definition PushConstantsLayout.h:65
Vulkan implementation of IPipelineLayout.
Definition VulkanPipelineLayout.h:22
Vulkan implementation of IPushConstantsLayout.
Definition VulkanPushConstantsLayout.h:17
VulkanPushConstantsLayout(std::vector< std::unique_ptr< VulkanPushConstantsRange > > &&ranges, unsigned int size)
Initializes a new VulkanPushConstantsLayout.
Vulkan implementation of IPushConstantsRange.
Definition VulkanPushConstantsRange.h:14
Definition VulkanPushConstantsLayout.cpp:12