I recently started learning about software development on Jetson Nano and GStreamer,I found capabilities reported by some elements has the “memory:NVMM” words, so what is the meaing of “memory:NVMM”? Is it the GPU memory ? Can I transfer data between NVMM memory with CPU memory directly?
NVMM buffer is hardware DMA buffer. You can access the buffer on GPU or CPU, through NvBuffer APIs. Please refer to this sample:
Nano not using GPU with gstreamer/python. Slow FPS, dropped frames - #8 by DaneLLL
I had viewed the code in gst_cv_gpumat.cpp,now I think NVMM memory is a memory type used by nvidia’s v4l2 elements,such as “nvv4l2camerasrc”,“nvv4l2decoder”,“nvv4l2encoder”,…,these elements’ sink and src pad all use NVMM memory, if the elements that use cpu memory or cuda memory going to work with them,there will be a memory type conversion operation to perform, what I said is right?
Our plugins is to utilize hardware engines in Jetson chips, and support NVMM buffer. In some cases you may link our plugins to native plugins. And need to copy data from CPU buffer to NVMM buffer like:
... ! video/x-raw ! nvvidconv ! video/x-raw(memory:NVMM) ! ...
nvvidconv is response for transfer data between NVMM memory and cpu memory,and so which element is response for transfer between NVMM memory and CUDA memory?
You can access the buffer through CUDA directly. Please check sample in the comment