我写了一个演示来显示3D 模型和图像嵌合。
========================================================================================================
将存储器从摄像头收集的数据复制到图形缓冲器时、我遇到了一个问题。
这需要在 crotex-a15上花费12ms 和30%的 CPU 负载。
因此、我想在摄像头和 GPU 之间共享缓冲器。
=========== 这是 数据流=================================
我发现 "memcpy"是测试后占用12ms 和30% CPU 负载的原因。
那么、我想说的是"is it posable to share the buffer between camera and GPU?"(可以在摄像机和 GPU 之间共享缓冲区吗?)
因为摄像机数据缓冲器必须是连续的物理缓冲器!
但图形缓冲器是由 API OMAP-BO_MAP 制作的!
=========================== 这是 内存 allocat====的代码
********* DRM 部分********
int fd = drmOpen ("omapdrm"、NULL);
omap_device* dev = omap_device_new (FD);
******** OMAP 器件*********
struct omap_bo *bo;
BO = omap_bo_new (dev、 width * height * bpp / 8、 bo_flags);
********* OpenGL 部件********
int dfd = omap_bo_dabuf (bo);
EGLint __attr[]={
EGL_width、 nWid、
EGL_Height、 nHgt、
EGL_Linux_DRM_FourCC_EXT、 DRM_FORMAT_YUV、
EGL_DMA_BUF_PLANE0_FD_EXT、 DFD、
EGL_DMA_BUF_PLANE0_OFFSET_EXT、 0、
EGL_DMA_BUF_PLANE0_Pit_EXT、 NPitch、
EGL_NONE
};
m_pKHRImage = eglCreateImageKHR (
m_pGraphic->getDisplay(),
EGL_NO_Context、
EGL_Linux_DMA_BUF_EXT、
null、
_attr);
格网格纹理(1、&m_nTexture);
glBindTexture (GL_纹 理_external_OES、m_nTexture);
GlTextParameteri (GL_turete_external_OES、GL_turete_min_filter、GL_linear_linear);
GlTextParameteri (GL_turete_external_OES、GL_turete_mag_filter、GL_linear);
glEGLImageTargetTexture2DOES (GL_Texture_external_OES、(GLeglImageOES) m_pKHRImage);
(二 获取虚拟地址*********
m_pAddress = OMA_BO_MAP (BO);//获取图形缓冲区
m_pVideoBuffer = getVideoBuffer(); //abstract API_-->摄像机缓冲区,是连续的物理缓冲区,使用"mmap" API
memcpy (m_pAddress、m_pVideoBuffer、npPitch * nHgt); // API 会消耗很多效率
