Loading...
Searching...
No Matches
RdmaVideoOutput.hpp File Reference
Vendor-neutral GPU-direct output strategy. More...
Detailed Description
Vendor-neutral GPU-direct output strategy.
Generalises the AJA RDMA output path so any peer device with a "pin GPU memory for P2P DMA" call (AJA DMABufferLock(inRDMA=true), Magewell MWPinVideoBuffer, Rivermax rmx_register_memory, ...) can reuse the same buffer-ring + encoder + fence plumbing.
What the helper owns:
- A
CudaInteropContextHandle(init at create, destroy at release). - A
ImportedGpuBufferRingof N CUDA-imported QRhi storage buffers. - A per-backend
InteropFencefor cross-API ordering. - A
ComputeRingDispatcherthat runs the per-slot encoder.
What the vendor adapter provides via VendorDmaRegistrar:
- A
registerSlot(gpuPtr, size)callback the helper invokes once per slot at init time. Typical impl:card->DMABufferLock(...). - A
releaseSlot(gpuPtr, size)callback invoked at shutdown.
Per-frame, the vendor calls:
encodeFrame(cb)inside the offscreen frame.prepareNextFrame()afterendOffscreenFrameto wait on the fence and get the GPU pointer the peer should DMA from. The adapter passes that pointer to its vendor submission API (AutoCirculateTransfer.SetVideoBuffer,MWCaptureVideoFrame*,rmx_output_*_send_chunk, ...) and then submits the frame.
Pacing stays vendor-specific (AJA VBI wait, Magewell event, Rivermax PTP). This helper is purely the GPU-side plumbing.
Go to the source code of this file.
Classes | |
| struct | score::gfx::interop::RdmaVideoOutputConfig |
| class | score::gfx::interop::RdmaVideoOutput |
| Generic GPU-direct output. Vendor-neutral. More... | |
Namespaces | |
| namespace | score |
| Base toolkit upon which the software is built. | |
| namespace | score::gfx |
| Graphics rendering pipeline for ossia score. | |