MayaFlux 1.0.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 197 of file VKComputePipeline.cpp.

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

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