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

◆ setup_backend_service()

void MayaFlux::Core::BackendPipelineManager::setup_backend_service ( const std::shared_ptr< Registry::Service::ComputeService > &  compute_service)

Definition at line 19 of file BackendPipelineManager.cpp.

20{
21 compute_service->create_shader_module = [this](const std::string& path, uint32_t stage) -> std::shared_ptr<void> {
22 return std::static_pointer_cast<void>(this->create_shader_module(path, stage));
23 };
24 compute_service->create_descriptor_manager = [this](uint32_t pool_size) -> std::shared_ptr<void> {
25 return std::static_pointer_cast<void>(this->create_descriptor_manager(pool_size));
26 };
27 compute_service->create_descriptor_layout = [this](const std::shared_ptr<void>& mgr,
28 const std::vector<std::pair<uint32_t, uint32_t>>& bindings) -> void* {
29 auto manager = std::static_pointer_cast<VKDescriptorManager>(mgr);
30 vk::DescriptorSetLayout layout = this->create_descriptor_layout(manager, bindings);
31 return reinterpret_cast<void*>(static_cast<VkDescriptorSetLayout>(layout));
32 };
33 compute_service->create_compute_pipeline = [this](const std::shared_ptr<void>& shdr,
34 const std::vector<void*>& layouts,
35 uint32_t push_size) -> std::shared_ptr<void> {
36 auto shader = std::static_pointer_cast<VKShaderModule>(shdr);
37 std::vector<vk::DescriptorSetLayout> vk_layouts;
38
39 vk_layouts.reserve(layouts.size());
40 for (auto* ptr : layouts) {
41 vk_layouts.emplace_back(reinterpret_cast<VkDescriptorSetLayout>(ptr));
42 }
43
44 return std::static_pointer_cast<void>(this->create_compute_pipeline(shader, vk_layouts, push_size));
45 };
46 compute_service->cleanup_resource = [this](const std::shared_ptr<void>& res) {
47 this->cleanup_compute_resource(res.get());
48 };
49}
vk::DescriptorSetLayout create_descriptor_layout(const std::shared_ptr< VKDescriptorManager > &manager, const std::vector< std::pair< uint32_t, uint32_t > > &bindings)
Create a descriptor set layout.
void cleanup_compute_resource(void *resource)
Cleanup a compute resource allocated by the backend.
std::shared_ptr< VKDescriptorManager > create_descriptor_manager(uint32_t pool_size)
Create a descriptor manager for managing descriptor sets.
std::shared_ptr< VKShaderModule > create_shader_module(const std::string &spirv_path, uint32_t stage)
Create a shader module from SPIR-V binary.
std::shared_ptr< VKComputePipeline > create_compute_pipeline(const std::shared_ptr< VKShaderModule > &shader, const std::vector< vk::DescriptorSetLayout > &layouts, uint32_t push_constant_size)
Create a compute pipeline.

References cleanup_compute_resource(), create_compute_pipeline(), create_descriptor_layout(), create_descriptor_manager(), and create_shader_module().

+ Here is the call graph for this function: