MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Portal::Graphics::ComputePress Class Reference

Compute-specific pipeline and dispatch orchestration. More...

#include <ComputePress.hpp>

+ Collaboration diagram for MayaFlux::Portal::Graphics::ComputePress:

Classes

struct  PipelineState
 

Public Member Functions

 ComputePress (const ComputePress &)=delete
 
ComputePressoperator= (const ComputePress &)=delete
 
 ComputePress (ComputePress &&) noexcept=delete
 
ComputePressoperator= (ComputePress &&) noexcept=delete
 
bool initialize ()
 
void shutdown ()
 
ComputePipelineID create_pipeline (ShaderID shader_id, const std::vector< std::vector< DescriptorBindingConfig > > &descriptor_sets={}, size_t push_constant_size=0)
 Create compute pipeline.
 
ComputePipelineID create_pipeline_auto (ShaderID shader_id, size_t push_constant_size=0)
 Create pipeline with auto-reflection.
 
void destroy_pipeline (ComputePipelineID pipeline_id)
 
void bind_pipeline (CommandBufferID cmd_id, ComputePipelineID pipeline_id)
 Bind pipeline to active command buffer.
 
void bind_descriptor_sets (CommandBufferID cmd_id, ComputePipelineID pipeline_id, const std::vector< DescriptorSetID > &descriptor_set_ids)
 Bind descriptor sets to active command buffer.
 
void push_constants (CommandBufferID cmd_id, ComputePipelineID pipeline_id, const void *data, size_t size)
 Push constants to active command buffer.
 
void dispatch (CommandBufferID cmd_id, uint32_t x, uint32_t y, uint32_t z)
 Dispatch compute workgroups.
 
void dispatch_indirect (CommandBufferID cmd_id, vk::Buffer indirect_buffer, vk::DeviceSize offset=0)
 Dispatch compute workgroups indirectly.
 
std::vector< DescriptorSetIDallocate_pipeline_descriptors (ComputePipelineID pipeline_id)
 All-in-one: allocate descriptors for pipeline.
 
void bind_all (CommandBufferID cmd_id, ComputePipelineID pipeline_id, const std::vector< DescriptorSetID > &descriptor_set_ids, const void *push_constants_data=nullptr, size_t push_constant_size=0)
 All-in-one: bind pipeline + descriptors + push constants.
 

Static Public Member Functions

static ComputePressinstance ()
 

Private Member Functions

 ComputePress ()=default
 
 ~ComputePress ()
 

Private Attributes

std::shared_ptr< Core::VKDescriptorManagerm_descriptor_manager
 
std::unordered_map< ComputePipelineID, PipelineStatem_pipelines
 
std::atomic< uint64_t > m_next_pipeline_id { 1 }
 
ShaderFoundrym_shader_foundry = nullptr
 

Static Private Attributes

static bool s_initialized = false
 

Detailed Description

Compute-specific pipeline and dispatch orchestration.

Responsibilities:

  • Create compute pipelines
  • Bind compute pipelines
  • Dispatch compute workgroups (direct + indirect)
  • Compute-specific optimizations

Uses ShaderFoundry for:

  • Shaders, descriptors, commands, sync, barriers

Definition at line 24 of file ComputePress.hpp.


The documentation for this class was generated from the following files: