15#include <vsg/vk/Device.h>
16#include <vsg/vk/vk_buffer.h>
23 using DescriptorSetLayoutBindings = std::vector<VkDescriptorSetLayoutBinding>;
24 using DescriptorSetLayoutBindingFlags = std::vector<VkDescriptorBindingFlags>;
25 using DescriptorPoolSizes = std::vector<VkDescriptorPoolSize>;
28 class VSG_DECLSPEC DescriptorSetLayout :
public Inherit<Object, DescriptorSetLayout>
31 DescriptorSetLayout();
32 DescriptorSetLayout(
const DescriptorSetLayout& rhs,
const CopyOp& copyop = {});
33 explicit DescriptorSetLayout(
const DescriptorSetLayoutBindings& descriptorSetLayoutBindings);
36 virtual VkDescriptorSetLayout
vk(uint32_t deviceID)
const {
return _implementation[deviceID]->_descriptorSetLayout; }
47 void addBinding(uint32_t binding, VkDescriptorType descriptorType, uint32_t descriptorCount, VkShaderStageFlags stageFlags, VkDescriptorBindingFlags flags = 0);
53 virtual void compile(
Context& context);
56 void release(uint32_t deviceID) { _implementation[deviceID] = {}; }
57 void release() { _implementation.clear(); }
63 void read(
Input& input)
override;
64 void write(
Output& output)
const override;
67 virtual ~DescriptorSetLayout();
69 struct Implementation :
public Inherit<Object, Implementation>
71 Implementation(
Device* device, VkDescriptorSetLayoutCreateFlags
createFlags,
const DescriptorSetLayoutBindings& descriptorSetLayoutBindings,
const DescriptorSetLayoutBindingFlags& descriptorSetLayoutBindingFlags);
73 virtual ~Implementation();
76 VkDescriptorSetLayout _descriptorSetLayout;
83 using DescriptorSetLayouts = std::vector<vsg::ref_ptr<vsg::DescriptorSetLayout>>;
DescriptorSetLayout encapsulates VkDescriptorSetLayout and VkDescriptorSetLayoutCreateInfo settings u...
Definition DescriptorSetLayout.h:29
VkDescriptorSetLayoutCreateFlags createFlags
VkDescriptorSetLayoutCreateFlags flags.
Definition DescriptorSetLayout.h:39
ref_ptr< Object > clone(const CopyOp ©op={}) const override
Definition DescriptorSetLayout.h:60
void getDescriptorPoolSizes(DescriptorPoolSizes &descriptorPoolSizes)
map the descriptor bindings to the descriptor pool sizes that will be required to represent them.
virtual VkDescriptorSetLayout vk(uint32_t deviceID) const
Vulkan VkDescriptorSetLayout handle.
Definition DescriptorSetLayout.h:36
DescriptorSetLayoutBindings bindings
VkDescriptorSetLayoutCreateInfo settings.
Definition DescriptorSetLayout.h:42
DescriptorSetLayoutBindingFlags bindingFlags
VkDescriptorSetLayoutBindingFlagsCreateInfo settings.
Definition DescriptorSetLayout.h:45
int compare(const Object &rhs_object) const override
compare two objects, return -1 if this object is less than rhs, return 0 if it's equal,...
Device encapsulates VkDevice, a logical handle to the PhysicalDevice with capabilities specified duri...
Definition Device.h:39
vk_buffer that manages a single logical device supported.
Definition vk_buffer.h:29