Chinasaur
Posts: 116
Joined: Tue Sep 11, 2012 10:15 pm

libEGL missing/erroneous links to GLESv2

Sun Oct 14, 2012 7:59 pm

Hey guys, as discussed at the bottom of this thread: http://www.raspberrypi.org/phpBB3/viewt ... 90&p=94769
when linking against libEGL you frequently run into a series of errors where you are missing things in libGLESv2, e.g.

Code: Select all

/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GetRenderbufferParameteriv'
/opt/vc/lib/libEGL.so: undefined reference to `gl20_client_state_init'
/opt/vc/lib/libEGL.so: undefined reference to `gl11_client_state_init'
/opt/vc/lib/libEGL.so: undefined reference to `glintAttribPointer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GenFramebuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_buffer_info_get'
/opt/vc/lib/libEGL.so: undefined reference to `glDiscardFramebufferEXT'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_FramebufferTexture2D'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_IsRenderbuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_set_error'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_BindFramebuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GenRenderbuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_set_error_api'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_BindRenderbuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glBufferSubData'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GetFramebufferAttachmentParameteriv'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_CheckFramebufferStatus'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_FramebufferRenderbuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_RenderbufferStorage'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_DeleteRenderbuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_GenerateMipmap'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_buffer_info_set'
/opt/vc/lib/libEGL.so: undefined reference to `glPointSizePointerOES'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_DeleteFramebuffers'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_IsFramebuffer'
/opt/vc/lib/libEGL.so: undefined reference to `glxx_client_state_free'
Adding -lGLESv2 works around the errors.

But I'm confused by this; if EGL needs GLESv2 constitutively, why doesn't it link to it itself? (I'm also not clear why EGL needs GLESv2 in the first place; I'm trying to build Cairo with EGL/VG support so it will work without X. As an initial attempt, I wasn't planning to include GLESv2 features but it seems EGL thinks it needs them anyway.)

Some people have said that this only started happening in more recent versions of the firmware? Shall I post an issue on Git? I assume this has already been discussed somewhere but I haven't found it.

williamaadams
Posts: 19
Joined: Thu Oct 11, 2012 4:48 pm

Re: libEGL missing/erroneous links to GLESv2

Mon Oct 15, 2012 10:59 pm

As far as I can tell, EGL depends on a point structure that is located in then GLESv2 library. This bit me as well. It seems kind of pointless to bring in such a huge dependency for a single data structure, but there it is. Perhaps it was a mistake. Can't really say.


Return to “Graphics programming”