Loading...
Searching...
No Matches
VulkanCudaBounce.hpp File Reference

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.

Go to the source code of this file.