- I create a nvbuffer by NvBufferCreate(&fd, …); (it used for video converter)
- I want to get an gpu address from the nvbuffer, so that I can write the image data to the address directly in cuda kernel without any memcpy.
From NvBufferCreate(&fd, …), I can only get a mmaped cpu end address and the fd used for video converter. How to get the corresponding gpu end address?
Please refer to nvbuf_utils.h
* This method must be used for getting `EGLImage` from `dmabuf-fd`.
* @param[in] display `EGLDisplay` object used during the creation of `EGLImage`.
* @param[in] dmabuf_fd `DMABUF FD` of buffer from which `EGLImage` to be created.
* @returns `EGLImageKHR` for success, `NULL` for failure
EGLImageKHR NvEGLImageFromFd (EGLDisplay display, int dmabuf_fd);
* This method must be used for destroying `EGLImage` object.
* @param[in] display `EGLDisplay` object used for destroying `EGLImage`.
* @param[in] eglImage `EGLImageKHR` object to be destroyed.
* @returns 0 for success, -1 for failure
int NvDestroyEGLImage (EGLDisplay display, EGLImageKHR eglImage);
I tried with the sample in NvCudaProc.cpp , in this sample , It was used to copy data from fd to a gpu address, the eglImage will be destroyed after that, I want to get a fixed and long time hold gpu address like mapEGLImage2Float does. I have four cameras, the eglImage was create with EGLDisplay, if I hold one of them, other cameras will be blocked.
I will try this on my board, will be feedback soon.