CUDA-VMM bounce buffers imported into Vulkan — the bridge between QRhi-owned resources and a vendor DMA engine. More...
Detailed Description
CUDA-VMM bounce buffers imported into Vulkan — the bridge between QRhi-owned resources and a vendor DMA engine.
The GL path bridges via cuGraphicsGLRegisterBuffer + one DtoD copy into a CUDA-owned bounce (only CUDA-allocator memory is pinnable by DMABufferLock-style vendor APIs). Vulkan has no equivalent of registering a QRhi buffer with CUDA (QRhi VMA-allocates without export info), so the bridge is inverted: allocate the bounce with CUDA VMM (gpuDirectRDMACapable, POSIX-fd exportable — verified pinnable and transfer-correct by probe), import that same memory INTO Vulkan as a VkBuffer, and record ONE vkCmdCopyBuffer (or vkCmdCopyBufferToImage) per frame between the QRhi resource and the bounce. Zero sysmem in the path, symmetric with GL.
Per-slot cost: BAR1 aperture (256 MiB on most Quadros) — callers size slot counts like the GL path does at large rasters.
Ordering: callers use QRhi::finish() (output) or the vendor's blocking DMA + slot publish (capture), exactly like the GL path. Timeline semaphores can replace finish() later without changing this interface.