Ask Your Question

Revision history [back]

DMA directly into UMat data

I capture images with a frame grabber and process them using plain old CPU-based Mats. This works because I allocate a Mat and tell my frame grabber to dump the frame into Mat.data. To accelerate the process, I can capture the frame into a Mat, convert my Mat to UMat, and watch the GPU make short work of it. This also works. My frame grabber is able to DMA directly to an OpenCL buffer which is resident on the GPU, and I want to eliminate the latency of the Mat-to-UMat conversion by dumping the frame directly into UMat.data. I know that a UMat's data is not normally directly accessible, and my GPU-resident memory is available to me in the form of an OpenCL buffer handle or as a physical PCIe address. Is there a way to force a UMat to 'position itself' at this address? Thanks!