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

◆ release()

void MayaFlux::Buffers::FormaBindingsProcessor::release ( const std::string &  name)
private

Definition at line 159 of file FormaBindingsProcessor.cpp.

160{
161 const auto found = m_bindings.find(name);
162 if (found == m_bindings.end())
163 return;
164
165 const auto& binding = found->second;
166 std::erase_if(m_targets, [](const auto& target) { return target.expired(); });
167
168 for (const auto& weak : m_targets) {
169 const auto target = weak.lock();
170 auto& context = target->get_pipeline_context();
171
172 if (binding.pc) {
173 std::erase_if(context.push_constant_bindings, [&](const auto& entry) {
174 return entry.offset == binding.pc->offset && entry.name == name;
175 });
176 }
177
178 if (binding.desc) {
179 const auto handle = binding.desc->gpu_buffer->get_buffer();
180 std::erase_if(context.descriptor_buffer_bindings, [&](const auto& entry) {
181 return entry.set == binding.desc->set_index
182 && entry.binding == binding.desc->binding_index
183 && entry.buffer_info.buffer == handle;
184 });
185 }
186 }
187
188 if (binding.desc)
189 unbind_buffer(binding.desc->descriptor_name);
190}
std::string name
Definition VKDevice.cpp:123
std::unordered_map< std::string, Binding > m_bindings
std::vector< std::weak_ptr< VKBuffer > > m_targets
void unbind_buffer(const std::string &descriptor_name)
Unbind a buffer from a descriptor.

References m_bindings, m_targets, name, and MayaFlux::Buffers::ShaderProcessor::unbind_buffer().

Referenced by bind_descriptor(), bind_push_constant(), bind_push_constant(), bind_typed_push_constant(), and unbind().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: