95 explicit ComputeProcessor(
const std::string& shader_path, uint32_t workgroup_x = 256);
107 void set_workgroup_size(uint32_t x, uint32_t y = 1, uint32_t z = 1);
121 void set_manual_dispatch(uint32_t x, uint32_t y = 1, uint32_t z = 1);
127 void set_custom_dispatch(std::function<std::array<uint32_t, 3>(
const std::shared_ptr<VKBuffer>&)> calculator);
137 bool is_pipeline_ready()
const {
return m_pipeline_id != Portal::Graphics::INVALID_COMPUTE_PIPELINE; }
148 virtual std::array<uint32_t, 3> calculate_dispatch_size(
const std::shared_ptr<VKBuffer>& buffer);
150 void initialize_pipeline(
const std::shared_ptr<VKBuffer>& buffer)
override;
152 void initialize_descriptors(
const std::shared_ptr<VKBuffer>& buffer)
override;
154 void cleanup()
override;
159 void execute_shader(
const std::shared_ptr<VKBuffer>& buffer)
override;