Tool/software: Linux
I'm using EGLImage for read RGBA texture to the GPU, The version of PSDK I am using is 04.00.00.04 and I've also tried ddk-um [cf8cd62] (um: gles2: Fix PVR_DBG level in 1RGB FBO completeness check)
When my application executes below code, it runs successfully for ~1 minutes befeore I begin to get repeating console message :
In case of using CMEM:
eglCreateImageKHR(...) returns error 0x300C
PVR:(Error): [ 1165-> 1178] < CreateBuffer():866|ERROR> cannot mmap buffer : Cannot allocate memo
ry [0, ]
PVR:(Error): [ 1165-> 1178] < CreateDrawable():938|ERROR> Error mapping 0 buffer [0, ]
In case of using OMAP:
omapdrm omapdrm.0: could not remap: -12 (3)
PVR_K:(Error): DmaBufImportAndAcquirePhysAddr: dma_buf_map_attachment failed: -885075008
eglCreateImageKHR(...) returns error 0x300C
Here is my code (using cmem):
for (;;) { // --> Alloc CMEM CMEM_AllocParams cmemParams = {0,}; cmemParams->type = CMEM_HEAP; cmemParams->flags = CMEM_CACHED; cmemParams->alignment = 0; void* cmem_buf = CMEM_alloc2( 2, Width * Height * 4, (CMEM_AllocParams*)&cmemParams ); // --> GBM Import struct gbm_import_fd_data GbmImportData; GbmImportData.fd = CMEM_export_dmabuf( cmem_buf ); GbmImportData.width = Width; GbmImportData.height = Height; GbmImportData.stride = Width * 4; GbmImportData.format = GBM_BO_FORMAT_ARGB8888; struct gbm_bo* lpGbmBo = gbm_bo_import( GbmDev, GBM_BO_IMPORT_FD, &GbmImportData, GBM_BO_USE_RENDERING | GBM_BO_USE_SCANOUT ); // --> Create EGLImage, Texture EGLImageKHR EglImage = eglCreateImageKHR( EGLDisplay, EGL_NO_CONTEXT, EGL_NATIVE_PIXMAP_KHR, static_cast<EGLClientBuffer>(lpGbmBo), NULL ); GLuint Tb; glGenTextures( 1, &Tb ); glBindTexture( GL_TEXTURE_EXTERNAL_OES, Tb ); glEGLImageTargetTexture2DOES( GL_TEXTURE_EXTERNAL_OES, EglImage ); // <-- Destroy EGLImage, Texture glDeleteTextures( 1, &Tb ); eglDestroyImageKHR( EGLDisplay, EglImage ); // <-- Destroy GBM Object gbm_bo_destroy( lpGbmBo ); // <-- Destroy CMEM buf close( GbmImportData.fd ); CMEM_free( cmem_buf, (CMEM_AllocParams*)&cmemParams ); }
1. Without eglCreateImageKHR(), gbm-omap alloc/dealloc has no problem
2. I tested with EGL_LINUX_DMA_BUF(YUYV), but there is no memory leak