Summary
The OpenVX Pipelining, Streaming & Batch Processing KHR extension includes streaming APIs (vxEnableGraphStreaming, vxStartGraphStreaming, vxStopGraphStreaming). In rustVX these functions are present in openvx-core/src/pipelining_api.rs, but they do not implement real streaming behavior.
Current behavior
vxEnableGraphStreaming only sets a flag and stores a trigger-node ID.
vxStartGraphStreaming spawns a thread whose streaming_loop repeatedly sleeps for 10 ms and updates a pending counter, but never actually executes the graph.
vxStopGraphStreaming signals the thread to stop and joins it.
As a result, no graph processing occurs while streaming is "active", and conformance tests for GraphStreaming.* cannot pass against rustVX.
Expected behavior
vxStartGraphStreaming should begin continuous, asynchronous graph execution (e.g., by repeatedly calling vxScheduleGraph / vxProcessGraph or integrating with the existing pipelining executor) until vxStopGraphStreaming is called. The implementation should:
- Respect the optional trigger node semantics from the spec.
- Handle pipeup-to-steady-state transitions correctly.
- Work with the existing QUEUE_AUTO / QUEUE_MANUAL pipelining modes where applicable.
- Emit relevant events if eventing is enabled.
References
- OpenVX 1.3.1 KHR extension: "Pipelining, Streaming & Batch Processing"
- Related implementation work in the Khronos OpenVX sample implementation (streaming extension)
Suggested next steps
- Decide whether streaming will reuse the pipelining executor or have its own scheduler loop.
- Implement the actual graph execution loop in
streaming_loop.
- Add CTS coverage for
GraphStreaming.* once implemented.
If streaming is intentionally not supported yet, it would be helpful to document that clearly in the README and extension-conformance matrix.
Summary
The OpenVX Pipelining, Streaming & Batch Processing KHR extension includes streaming APIs (
vxEnableGraphStreaming,vxStartGraphStreaming,vxStopGraphStreaming). In rustVX these functions are present inopenvx-core/src/pipelining_api.rs, but they do not implement real streaming behavior.Current behavior
vxEnableGraphStreamingonly sets a flag and stores a trigger-node ID.vxStartGraphStreamingspawns a thread whosestreaming_looprepeatedly sleeps for 10 ms and updates a pending counter, but never actually executes the graph.vxStopGraphStreamingsignals the thread to stop and joins it.As a result, no graph processing occurs while streaming is "active", and conformance tests for
GraphStreaming.*cannot pass against rustVX.Expected behavior
vxStartGraphStreamingshould begin continuous, asynchronous graph execution (e.g., by repeatedly callingvxScheduleGraph/vxProcessGraphor integrating with the existing pipelining executor) untilvxStopGraphStreamingis called. The implementation should:References
Suggested next steps
streaming_loop.GraphStreaming.*once implemented.If streaming is intentionally not supported yet, it would be helpful to document that clearly in the README and extension-conformance matrix.