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