@@ -21,6 +21,7 @@ namespace vsg
2121 class Context ;
2222
2323 using DescriptorSetLayoutBindings = std::vector<VkDescriptorSetLayoutBinding>;
24+ using DescriptorSetLayoutBindingFlags = std::vector<VkDescriptorBindingFlags>;
2425 using DescriptorPoolSizes = std::vector<VkDescriptorPoolSize>;
2526
2627 // / DescriptorSetLayout encapsulates VkDescriptorSetLayout and VkDescriptorSetLayoutCreateInfo settings used to set it up.
@@ -34,9 +35,17 @@ namespace vsg
3435 // / Vulkan VkDescriptorSetLayout handle
3536 virtual VkDescriptorSetLayout vk (uint32_t deviceID) const { return _implementation[deviceID]->_descriptorSetLayout ; }
3637
38+ // / VkDescriptorSetLayoutCreateFlags flags
39+ VkDescriptorSetLayoutCreateFlags createFlags = 0 ;
40+
3741 // / VkDescriptorSetLayoutCreateInfo settings
3842 DescriptorSetLayoutBindings bindings;
3943
44+ // / VkDescriptorSetLayoutBindingFlagsCreateInfo settings
45+ DescriptorSetLayoutBindingFlags bindingFlags;
46+
47+ void addBinding (uint32_t binding, VkDescriptorType descriptorType, uint32_t descriptorCount, VkShaderStageFlags stageFlags, VkDescriptorBindingFlags flags = 0 );
48+
4049 // / map the descriptor bindings to the descriptor pool sizes that will be required to represent them.
4150 void getDescriptorPoolSizes (DescriptorPoolSizes& descriptorPoolSizes);
4251
@@ -59,7 +68,7 @@ namespace vsg
5968
6069 struct Implementation : public Inherit <Object, Implementation>
6170 {
62- Implementation (Device* device, const DescriptorSetLayoutBindings& descriptorSetLayoutBindings);
71+ Implementation (Device* device, VkDescriptorSetLayoutCreateFlags createFlags, const DescriptorSetLayoutBindings& descriptorSetLayoutBindings, const DescriptorSetLayoutBindingFlags& descriptorSetLayoutBindingFlags );
6372
6473 virtual ~Implementation ();
6574
0 commit comments