95 explicit ComputeProcessor(
const std::string& shader_path, uint32_t workgroup_x = 256);
123 void set_workgroup_size(uint32_t x, uint32_t y = 1, uint32_t z = 1);
137 void set_manual_dispatch(uint32_t x, uint32_t y = 1, uint32_t z = 1);
143 void set_custom_dispatch(std::function<std::array<uint32_t, 3>(
const std::shared_ptr<VKBuffer>&)> calculator);
154 void set_iteration_count(uint32_t
count);
167 bool is_pipeline_ready()
const {
return m_pipeline_id != Portal::Graphics::INVALID_COMPUTE_PIPELINE; }
178 virtual std::array<uint32_t, 3> calculate_dispatch_size(
const std::shared_ptr<VKBuffer>&
buffer);
191 virtual bool on_iteration(
193 const std::shared_ptr<VKBuffer>&
buffer,
206 virtual void on_iteration_barrier(
208 const std::shared_ptr<VKBuffer>&
buffer,
211 void initialize_pipeline(
const std::shared_ptr<VKBuffer>&
buffer)
override;
213 void initialize_descriptors(
const std::shared_ptr<VKBuffer>&
buffer)
override;
217 void cleanup()
override;
224 void execute_shader(
const std::shared_ptr<VKBuffer>&
buffer)
override;
std::shared_ptr< NetworkGeometryBuffer > buffer
std::vector< uint8_t > m_push_constant_scratch
Merged push constant block, reused across iterations.
~ComputeProcessor() override
bool tracks_pipeline_layout() const override
Whether the owner builds its pipeline layout from this processor's bindings, staged descriptors and p...
ShaderDispatchConfig m_dispatch_config
const ShaderDispatchConfig & get_dispatch_config() const
Get current dispatch configuration.
bool is_pipeline_ready() const
Check if pipeline is created.
uint32_t get_iteration_count() const
Dispatches recorded per execute cycle.
Specialized ShaderProcessor for Compute Pipelines.
Abstract base class for shader-based buffer processing.
uint64_t ComputePipelineID
enum MayaFlux::Buffers::ShaderDispatchConfig::DispatchMode mode
std::function< std::array< uint32_t, 3 >(const std::shared_ptr< VKBuffer > &)> custom_calculator
@ CUSTOM
User-provided calculation function.
@ BUFFER_SIZE
Calculate from buffer byte size.
@ MANUAL
Use explicit group counts.
@ ELEMENT_COUNT
Calculate from buffer element count.
ShaderDispatchConfig()=default
uint32_t workgroup_x
Workgroup size X (should match shader)
uint32_t iteration_count
Dispatches recorded per execute cycle.
Configuration for compute shader dispatch.
Complete declarative description of a generated compute shader.