Pierre Vorhagen

Freescale EGL extension documentation

Discussion created by Pierre Vorhagen on Mar 9, 2012



I am developing on an i.MX515, and I am currently using the EGL extension defined in eglfslext.h. My goal is to share client buffers with a compositing window system server.

However, I have found no documentation on this header, and the board's libEGL, and hardly any use cases on this extension. The only documented extensions seem to be the GL extensions from AMD, but I don't think that helps me very much...

There is a struct EGLImageinfoFSL, apparently containing virtual and physical addresses, and a eglQueryImageFSL function, which seems to initialize a pointer to a given EGLImage.

I am currently using it that way, by calling eglCreateImageKHR with EGL_NEW_IMAGE_FSL, then binding it as a render target using glEGLImageTargetTexture2DOES, and finally qurying the pointer like so:

eglQueryImageFSL(egldisplay, g_imgHandle, EGL_CLIENTBUFFER_TYPE_FSL, (EGLint *)&gpubuffer);

I can then memcpy() from and into that buffer, and immediately access my EGLImage.

My question is: How can I populate the struct EGLImageFSL ? I know that I have a valid pointer to the EGLImage in gpubuffer, so it can't be that...

Another question; what exactly does the constant EGL_TARGET_TYPE_FSL define?

And finally, and most importantly, is it possible to recreate an EGLImage from that struct, or the pointer, but in anotehr process? Possibly something like calling eglCreateImageKHR but with a particular target or constant?

Does anyone have any experience with this? A Freescale employee/engineer maybe? Did I miss the documentation on this?