Lugdunum  0.1.0
PipelineLayout.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <vector>
5 
9 
10 namespace lug {
11 namespace Graphics {
12 namespace Vulkan {
13 namespace API {
14 
15 namespace Builder {
16 class PipelineLayout;
17 } // Builder
18 
19 class Device;
20 
23 
24 public:
25  PipelineLayout() = default;
26 
27  PipelineLayout(const PipelineLayout&) = delete;
29 
30  PipelineLayout& operator=(const PipelineLayout&) = delete;
31  PipelineLayout& operator=(PipelineLayout&& device);
32 
33  ~PipelineLayout();
34 
35  explicit operator VkPipelineLayout() const {
36  return _pipelineLayout;
37  }
38 
45  const std::vector<DescriptorSetLayout>& getDescriptorSetLayouts() const;
46 
52  const Device* getDevice() const;
53 
54  void destroy();
55 
56 private:
57  explicit PipelineLayout(
58  VkPipelineLayout pipelineLayout,
59  const Device* device,
60  std::vector<DescriptorSetLayout> descriptorSetLayouts
61  );
62 
63 private:
64  VkPipelineLayout _pipelineLayout{VK_NULL_HANDLE};
65  const Device* _device{nullptr};
66 
67  std::vector<DescriptorSetLayout> _descriptorSetLayouts{};
68 };
69 
71 
72 } // API
73 } // Vulkan
74 } // Graphics
75 } // lug
#define LUG_GRAPHICS_API
Definition: Export.hpp:11