MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ dispatch_core_dependency_async()

Portal::Graphics::FenceID MayaFlux::Yantra::GpuDispatchCore::dispatch_core_dependency_async ( const std::vector< DependencyStage > &  stages)
protected

Non-blocking variant of dispatch_core_dependency.

Stages are prepared exactly as in dispatch_core_dependency, then the whole sequence is recorded into one command buffer and submitted without waiting. The context's own shader config, bindings and staged data are restored before this returns, so the caller may reconfigure the context immediately. Descriptor sets already written for the stages' shader keys must not be rebound until the returned fence has signaled.

The barrier owed to the final stage's INPUT_OUTPUT hazards is still recorded, which orders anything submitted afterwards behind this sequence's writes.

Unlike dispatch_core_async, no shader-write to host-read barrier is recorded for the stages' buffers. As with dispatch_core_dependency, host reads after the fence has signaled rely on the fence's own visibility guarantee and on the buffers being host coherent.

Parameters
stagesOrdered stage descriptions, as for DependencyParams.
Returns
FenceID to poll with ShaderFoundry::is_fence_signaled and to release once signaled. INVALID_FENCE on submission failure.

Definition at line 369 of file GpuDispatchCore.cpp.

370{
371 const auto plan = prepare_dependency(stages);
372 return m_resources.dispatch_sequence_async(plan.keys, plan.groups, plan.push_constants, plan.hazards, plan.indirect);
373}
DependencyPlan prepare_dependency(const std::vector< DependencyStage > &stages)
Portal::Graphics::FenceID dispatch_sequence_async(const std::vector< std::string > &keys, const std::vector< std::array< uint32_t, 3 > > &groups_per_key, const std::vector< std::vector< uint8_t > > &push_constants_per_key, const std::vector< std::vector< Portal::Graphics::HazardResource > > &hazards_per_key, const std::vector< Portal::Graphics::IndirectDispatch > &indirect_per_key={})
Non-blocking counterpart of dispatch_sequence.

References MayaFlux::Yantra::GpuResourceManager::dispatch_sequence_async(), m_resources, and prepare_dependency().

Referenced by MayaFlux::Yantra::GpuExecutionContext< InputType, OutputType >::execute().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: