15#include <vsg/state/DescriptorSet.h>
16#include <vsg/state/PipelineLayout.h>
17#include <vsg/state/StateCommand.h>
18#include <vsg/vk/DescriptorPool.h>
32 pipelineBindPoint(in_bindPoint),
34 firstSet(in_firstSet),
35 descriptorSets(in_descriptorSets)
41 pipelineBindPoint(in_bindPoint),
44 descriptorSets(in_descriptorSets)
52 DescriptorSets descriptorSets;
53 std::vector<uint32_t> dynamicOffsets;
58 template<
class N,
class V>
59 static void t_traverse(N& bds, V& visitor)
61 if (bds.layout) bds.layout->accept(visitor);
62 for (
auto& ds : bds.descriptorSets) ds->accept(visitor);
65 void traverse(
Visitor& visitor)
override { t_traverse(*
this, visitor); }
66 void traverse(ConstVisitor& visitor)
const override { t_traverse(*
this, visitor); }
68 void read(Input& input)
override;
69 void write(Output& output)
const override;
72 void compile(Context& context)
override;
74 void record(CommandBuffer& commandBuffer)
const override;
77 virtual ~BindDescriptorSets() {}
81 VkPipelineLayout _vkPipelineLayout = 0;
82 std::vector<VkDescriptorSet> _vkDescriptorSets;
99 pipelineBindPoint(in_bindPoint),
100 layout(in_pipelineLayout),
101 firstSet(in_firstSet),
102 descriptorSet(in_descriptorSet)
108 pipelineBindPoint(in_bindPoint),
109 layout(in_pipelineLayout),
111 descriptorSet(in_descriptorSet)
118 pipelineBindPoint(in_bindPoint),
119 layout(in_pipelineLayout),
120 firstSet(in_firstSet),
121 descriptorSet(vsg::
DescriptorSet::create(in_pipelineLayout->setLayouts[in_firstSet], in_descriptors))
126 VkPipelineBindPoint pipelineBindPoint;
130 std::vector<uint32_t> dynamicOffsets;
135 template<
class N,
class V>
136 static void t_traverse(N& bds, V& visitor)
138 if (bds.layout) bds.layout->accept(visitor);
139 if (bds.descriptorSet) bds.descriptorSet->accept(visitor);
142 void traverse(
Visitor& visitor)
override { t_traverse(*
this, visitor); }
143 void traverse(ConstVisitor& visitor)
const override { t_traverse(*
this, visitor); }
145 void read(Input& input)
override;
146 void write(Output& output)
const override;
149 void compile(Context& context)
override;
151 void record(CommandBuffer& commandBuffer)
const override;
154 virtual ~BindDescriptorSet() {}
158 VkPipelineLayout _vkPipelineLayout = 0;
159 VkDescriptorSet _vkDescriptorSet;
Definition BindDescriptorSet.h:92
BindDescriptorSet(VkPipelineBindPoint in_bindPoint, PipelineLayout *in_pipelineLayout, uint32_t in_firstSet, const vsg::Descriptors &in_descriptors)
convenience BindDescriptorSet constructor which creates and assigns the DescriptorSet required for sp...
Definition BindDescriptorSet.h:116
ref_ptr< Object > clone(const CopyOp ©op={}) const override
Definition BindDescriptorSet.h:132
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,...
BindDescriptorSets state command encapsulates vkCmdBindDescriptorSets call and associated settings fo...
Definition BindDescriptorSet.h:25
ref_ptr< Object > clone(const CopyOp ©op={}) const override
Definition BindDescriptorSet.h:55
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,...
VkPipelineBindPoint pipelineBindPoint
vkCmdBindDescriptorSets settings
Definition BindDescriptorSet.h:49
DescriptorSet encapsulates VkDescriptorSet and VkDescriptorSetAllocateInfo settings used to describe ...
Definition DescriptorSet.h:26
PipelineLayout encapsulates VkPipelineLayout and the VkPipelineLayoutCreateInfo settings used to set ...
Definition PipelineLayout.h:27
Definition BindDescriptorSet.h:157
Definition BindDescriptorSet.h:80
vk_buffer that manages a single logical device supported.
Definition vk_buffer.h:28