i.MX6: Where to find fbCreateWindow

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX6: Where to find fbCreateWindow

2,203 Views
matthewdavis
Contributor III

I'm trying to convert my EGL code to use the virtual framebuffer on Android 4.4 and I'm looking for the symbols fbGetDisplayByIndex and fbCreateWindow, but I don't see them in the Vivante EGL libraries.  I pulled libEGL_VIVANTE.so and libGLESv2_VIVANTE.so from the demo BSP and neither one has these functions.  I also pulled the 5.0 BSP and tried the same (newer versions won't work with 4.4 due to linker/loader incompatibilities) with no luck.

Is there a separate library that contains these functions, or am I looking at the wrong version of the libraries?  When I search "GPU SDK" and similar terms in the download center, I find an SDK that contains documents and very nice demo code, but no libraries.  It's not clear to me where I should be getting the libs and headers to support this feature.

Labels (3)
0 Kudos
4 Replies

1,281 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hi Matthew,

I case of yocto, looks like the proper library for fbCreateWindow and fbGetDisplay is libegl-mx6-5.0.11.p7.1+hfp and use the kernel driver: kernel-module-imx-gpu-viv-5.0.11.p7.1+fsl used in weston backend.

in case of android you problably have to port imxeglvivsync:

GStreamer-devel - iMX6 hardware decode issue on Android | Page 2

hope this helps

0 Kudos

1,281 Views
matthewdavis
Contributor III

Thanks for the response.  If I'm reading this correctly, the purpose of imxeglvivsync is to allow gstreamer to use the imx hardware for drawing (looks like a direct texture technique).  I'm using the GPU for image processing and trying to pull the processed images back from GPU memory to the ARM core's userspace.  I glReadPixels is too slow to handle the operation on this platform.

I'm using glTexDirectVIV to get the image into the GPU's buffer and that works as expected.  I'm now trying to rewire my code to render to a texture to see if I can use the same method to pull the data back out of GPU memory.  Will that work?  The documentation for the function doesn't say whether the pointer returned by glTexDirectVIV is read/write or write only, so I'm not sure if I should expect to be able to read texture data after the GPU has written to it or if it's only for writing data in.

0 Kudos

1,281 Views
matthewdavis
Contributor III

I'm starting to feel pretty stupid here as everybody else seems to be able to find different versions of the GPU SDK for Android without any trouble, but I'm not finding them.  It looks like if I build a yocto image using BitBake, I can get the latest straight Linux versions of those libraries, but older versions of Android can't load libraries built with --hash-style=gnu. 

Does anybody know where I can download different versions of the GPU SDK so I can try to find the newest build that will still load on Android 4.4?  I have everything I need up and running, but the performance of glReadPixels() on my current version is horrifying, so I need to get a version that supports the fb* calls.

0 Kudos

1,281 Views
matthewdavis
Contributor III

OK, I've gotten the latest fsl-proprietary pieces for Android through BoundaryDevices, but I'm still not seeing any libraries with the fb* functions.  When I look at the straight Linux SDK, there's a -fb version of the VIVANTE libraries that contain the call.

Is there no way to access these functions in an Android compatible library?  If not, what should Android system developers do to get around the terrible performance of glReadPixels()?

0 Kudos