MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Yantra::VisionGpuExecutor Class Reference

Stateful GPU dispatch engine for VisionSequence execution. More...

#include <VisionGpuDispatch.hpp>

+ Collaboration diagram for MayaFlux::Yantra::VisionGpuExecutor:

Public Member Functions

VisionGpuExecutoroperator= (const VisionGpuExecutor &)=delete
 
VisionGpuExecutoroperator= (VisionGpuExecutor &&)=delete
 
Kinesis::Vision::VisionResult run (const Kinesis::Vision::VisionSequence &sequence, const std::shared_ptr< Core::VKImage > &image, uint32_t w, uint32_t h)
 Execute a VisionSequence on the GPU using this instance's own lazily-constructed context set.
 
Kinesis::Vision::VisionResult run (VisionGpuContexts &contexts, const Kinesis::Vision::VisionSequence &sequence, const std::shared_ptr< Core::VKImage > &image, uint32_t w, uint32_t h)
 Execute a VisionSequence on the GPU through an explicit context set.
 
 VisionGpuExecutor ()=default
 
 VisionGpuExecutor (const VisionGpuExecutor &)=delete
 
 VisionGpuExecutor (VisionGpuExecutor &&)=delete
 
 ~VisionGpuExecutor ()=default
 

Static Public Member Functions

static GpuComputeConfig config (Kinesis::Vision::VisionOp op, const Kinesis::Vision::VisionParams &params)
 GpuComputeConfig for a given VisionOp and its parameters.
 

Private Attributes

std::unique_ptr< VisionGpuContextsm_contexts
 

Detailed Description

Stateful GPU dispatch engine for VisionSequence execution.

Owns a lazily-constructed VisionGpuContexts (m_contexts) plus any op-specific persistent GPU state that doesn't belong on a shared context (e.g. ConnectedComponents' ping-pong output image). Mirrors VisionExecutor's ownership model on the CPU side: construct one instance per independent pipeline, hold it, call run() every frame.

Immovable: TextureExecutionContext owns GPU resource handles with no copy or move constructor, so VisionGpuContexts and therefore VisionGpuExecutor cannot be copied or moved either. Construct once, hold by reference, pointer, or shared_ptr, reuse indefinitely.

Not safe to call run() concurrently from multiple threads on the same instance. Independent pipelines running concurrently should each own a separate VisionGpuExecutor instance.

Definition at line 89 of file VisionGpuDispatch.hpp.


The documentation for this class was generated from the following files: