94 explicit ComputeProcessor(
const std::string& shader_path, uint32_t workgroup_x = 256);
106 void set_workgroup_size(uint32_t x, uint32_t y = 1, uint32_t z = 1);
120 void set_manual_dispatch(uint32_t x, uint32_t y = 1, uint32_t z = 1);
126 void set_custom_dispatch(std::function<std::array<uint32_t, 3>(
const std::shared_ptr<VKBuffer>&)> calculator);
136 bool is_pipeline_ready()
const {
return m_pipeline_id != Portal::Graphics::INVALID_COMPUTE_PIPELINE; }
147 virtual std::array<uint32_t, 3> calculate_dispatch_size(
const std::shared_ptr<VKBuffer>& buffer);
149 void initialize_pipeline(
const std::shared_ptr<VKBuffer>& buffer)
override;
151 void initialize_descriptors(
const std::shared_ptr<VKBuffer>& buffer)
override;
153 void cleanup()
override;
158 void execute_shader(
const std::shared_ptr<VKBuffer>& buffer)
override;