MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ bind_descriptor_sets()

void MayaFlux::Core::VKComputePipeline::bind_descriptor_sets ( vk::CommandBuffer  cmd,
const std::vector< vk::DescriptorSet > &  descriptor_sets,
uint32_t  first_set = 0,
const std::vector< uint32_t > &  dynamic_offsets = {} 
) const

Bind descriptor sets to pipeline.

Parameters
cmdCommand buffer
descriptor_setsVector of descriptor sets to bind
first_setFirst set index (default 0 for set=0)
dynamic_offsetsOptional dynamic offsets for dynamic buffers

Binds descriptor sets for use by the shader. Set indices must match the layout(set=X) declarations in the shader.

Example: // Shader has: layout(set=0, binding=0) buffer Data { ... }; pipeline.bind_descriptor_sets(cmd, {desc_set_0});

// Multiple sets: layout(set=0, ...) and layout(set=1, ...) pipeline.bind_descriptor_sets(cmd, {desc_set_0, desc_set_1});

Definition at line 193 of file VKComputePipeline.cpp.

198{
199 if (!m_layout) {
201 "Cannot bind descriptor sets without pipeline layout");
202 return;
203 }
204
205 if (descriptor_sets.empty()) {
207 "Binding empty descriptor sets");
208 return;
209 }
210
211 for (size_t i = 0; i < descriptor_sets.size(); ++i) {
212 if (!descriptor_sets[i]) {
214 "Descriptor set at index {} is null", first_set + i);
215 return;
216 }
217 }
218
219 cmd.bindDescriptorSets(
220 vk::PipelineBindPoint::eCompute,
221 m_layout,
222 first_set,
223 static_cast<uint32_t>(descriptor_sets.size()),
224 descriptor_sets.data(),
225 static_cast<uint32_t>(dynamic_offsets.size()),
226 dynamic_offsets.empty() ? nullptr : dynamic_offsets.data());
227}
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.

References MayaFlux::Journal::Core, MayaFlux::Journal::GraphicsBackend, m_layout, MF_ERROR, and MF_WARN.