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

◆ execute()

output_type MayaFlux::Yantra::TextureExecutionContext::execute ( const input_type input,
const ExecutionContext ctx 
)
inlineoverridevirtual

Override for CHAINED mode: skips collect_gpu_outputs().

Callers driving multi-pass image dispatch (e.g. ConnectedComponents merge loop) may flip an image slot to INPUT_OUTPUT for the cross-pass barrier in dispatch_batched, which leaves no OUTPUT-direction slot for collect_gpu_outputs' output_slot() lookup to find. Non-CHAINED modes are unaffected and fall through to the base implementation.

Parameters
inputIgnored for CHAINED mode (image already staged manually).
ctxExecutionContext; CHAINED mode requires pass_count and pc_updater.

Reimplemented from MayaFlux::Yantra::GpuExecutionContext< std::vector< Kakshya::DataVariant >, std::vector< Kakshya::DataVariant > >.

Definition at line 262 of file TextureExecutionContext.hpp.

263 {
264 if (ctx.mode != ExecutionMode::CHAINED && ctx.mode != ExecutionMode::CHAINED_INDIRECT)
265 return Base::execute(input, ctx);
266
267 if (!ensure_gpu_ready()) {
268 error<std::runtime_error>(
271 std::source_location::current(),
272 "TextureExecutionContext: GPU initialisation failed");
273 }
274
275 auto [ch_copies, structure_info] = extract_inputs(input);
276
277 if (ctx.mode == ExecutionMode::CHAINED_INDIRECT) {
278 dispatch_core_chained_indirect(ch_copies, structure_info, ctx);
279 } else {
280 dispatch_core_chained(ch_copies, structure_info, ctx);
281 }
282
283 return output_type {};
284 }
Core::GlobalInputConfig input
Definition Config.cpp:38
bool ensure_gpu_ready()
Ensure GPU resources are initialised.
GpuChannelResult dispatch_core_chained(const std::vector< std::vector< double > > &channels, const DataStructureInfo &structure_info, const ExecutionContext &ctx)
Multi-pass (chained) dispatch.
GpuChannelResult dispatch_core_chained_indirect(const std::vector< std::vector< double > > &channels, const DataStructureInfo &structure_info, const ExecutionContext &ctx)
Multi-pass dispatch where a GPU-resident indirect buffer gates each pass's workgroup count instead of...
virtual output_type execute(const input_type &input, const ExecutionContext &ctx)
Dispatch to GPU and reconstruct a typed output Datum.
std::pair< std::vector< std::vector< double > >, DataStructureInfo > extract_inputs(const input_type &input) override
Stashes the TextureContainer from datum.container for use in on_before_gpu_dispatch; returns empty ch...
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Yantra
DSP algorithms, computational units, matrix operations, Grammar.
@ CHAINED
Part of a sequential chain.
@ CHAINED_INDIRECT
Chained dispatch where a GPU-written indirect buffer gates each pass's workgroup count.

References input, and MayaFlux::Yantra::ExecutionContext::mode.