514{
517 "Cannot dispatch without pipeline and descriptors");
518 return;
519 }
520
523
525
528
530
532
534 compute_press.push_constants(
535 cmd_id,
539 }
540
542
544 compute_press.dispatch(cmd_id, dispatch_size[0], dispatch_size[1], dispatch_size[2]);
545
547
548 foundry.buffer_barrier(
549 cmd_id,
550 buffer->get_buffer(),
551 vk::AccessFlagBits::eShaderWrite,
552 vk::AccessFlagBits::eShaderRead | vk::AccessFlagBits::eTransferRead,
553 vk::PipelineStageFlagBits::eComputeShader,
554 vk::PipelineStageFlagBits::eComputeShader | vk::PipelineStageFlagBits::eTransfer);
555
556 foundry.submit_and_wait(cmd_id);
557}
#define MF_ERROR(comp, ctx,...)
Portal::Graphics::CommandBufferID m_last_command_buffer
virtual void on_before_dispatch(Portal::Graphics::CommandBufferID cmd_id, const std::shared_ptr< VKBuffer > &buffer)
Called before each dispatch.
std::vector< uint8_t > m_push_constant_data
Portal::Graphics::ComputePipelineID m_pipeline_id
virtual std::array< uint32_t, 3 > calculate_dispatch_size(const std::shared_ptr< VKBuffer > &buffer)
Calculate dispatch size from buffer.
std::shared_ptr< VKBuffer > m_last_processed_buffer
virtual void on_after_dispatch(Portal::Graphics::CommandBufferID cmd_id, const std::shared_ptr< VKBuffer > &buffer)
Called after each dispatch.
std::vector< Portal::Graphics::DescriptorSetID > m_descriptor_set_ids
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.
MAYAFLUX_API ShaderFoundry & get_shader_foundry()
Get the global shader compiler instance.
constexpr ComputePipelineID INVALID_COMPUTE_PIPELINE
MAYAFLUX_API ComputePress & get_compute_press()