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 ImportedGpuBufferRing of N CUDA-imported QRhi storage buffers.
  • A per-backend InteropFence for cross-API ordering.
  • A ComputeRingDispatcher that 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() after endOffscreenFrame to 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.