[Mesa-users] yocto 1.8 emgd_dri.so missing depencies

Jean-Francois Dagenais jeff.dagenais at gmail.com
Fri Oct 30 09:04:46 PDT 2015


Hi guys,

Getting a bit desparate here, hence the mass e-mail on top of the mesa-user list. Sorry for the interruption.

Note that although I am getting pretty good in kernel and yocto development, I am a mesa/xorg newbie.

While migrating from dylan 1.4 to fido 1.8, I ran into the missing emgd. Since we need it, I am trying to restore emgd onto 1.8. To do so, I have imported the related files from meta-intel, at the commit just before the emgd recipes and xserver-xorg were removed, into my machine layer. It looks like this:

 meta-sonatest/meta-osprey/classes/emgd-gl.bbclass
 meta-sonatest/meta-osprey/conf/machine/include/meta-intel-emgd.inc                                              
 meta-sonatest/meta-osprey/conf/machine/osprey-common.inc                                                        
 meta-sonatest/meta-osprey/custom-licenses/Intel-software-license-emgd-1.18                                      
 meta-sonatest/meta-osprey/custom-licenses/Intel-user-space-graphics-driver-binary-license-emgd-1.18             
 meta-sonatest/meta-osprey/recipes-graphics/xorg-driver/emgd-driver-bin/egl.pc                                   
 meta-sonatest/meta-osprey/recipes-graphics/xorg-driver/emgd-driver-bin/glchar.patch                             
 meta-sonatest/meta-osprey/recipes-graphics/xorg-driver/emgd-driver-bin/gles_cm.pc                               
 meta-sonatest/meta-osprey/recipes-graphics/xorg-driver/emgd-driver-bin/glesv2.pc                                
 meta-sonatest/meta-osprey/recipes-graphics/xorg-driver/emgd-driver-bin_1.18.bb                                  
 meta-sonatest/meta-osprey/recipes-graphics/xorg-xserver/xserver-xorg-1.9.3.inc                                  
 meta-sonatest/meta-osprey/recipes-graphics/xorg-xserver/xserver-xorg-1.9.3/crosscompile.patch                   
 meta-sonatest/meta-osprey/recipes-graphics/xorg-xserver/xserver-xorg-1.9.3/fix_open_max_preprocessor_error.patch
 meta-sonatest/meta-osprey/recipes-graphics/xorg-xserver/xserver-xorg-1.9.3/macro_tweak.patch                    
 meta-sonatest/meta-osprey/recipes-graphics/xorg-xserver/xserver-xorg-1.9.3/nodolt.patch                         
 meta-sonatest/meta-osprey/recipes-graphics/xorg-xserver/xserver-xorg-1.9.3/ptr-to-int-cast-fix.patch            
 meta-sonatest/meta-osprey/recipes-graphics/xorg-xserver/xserver-xorg-1.9.3/werror-address-fix.patch             
 meta-sonatest/meta-osprey/recipes-graphics/xorg-xserver/xserver-xorg_1.9.3.bb                                   
 meta-sonatest/meta-osprey/recipes-multimedia/gstreamer/gst-va-intel.bb                                          
 meta-sonatest/meta-osprey/recipes-multimedia/libva/va-intel.bbappend                                            

I have adjusted my machine to mimic the last state of crownbay-emgd to prefer xserver-xorg 1.9.3.

I have manually added the emgd drm stuff from https://github.com/EMGD-Community/intel-binaries-linux/tree/master/drm into my linux-yocto_3.19 based kernel.

The result is a working system, except for glx which fails to initialize emgd_dri.so because of missing symbols:

root at jfdprismadev:~# ldd -r /usr/lib/dri/emgd_dri.so 
	linux-gate.so.1 (0xb775a000)
	libm.so.6 => /lib/libm.so.6 (0xb74c4000)
	libpthread.so.0 => /lib/libpthread.so.0 (0xb74a8000)
	libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7480000)
	libdl.so.2 => /lib/libdl.so.2 (0xb747b000)
	libdrm.so.2 => /usr/lib/libdrm.so.2 (0xb746d000)
	libEMGDOGL.so => /usr/lib/libEMGDOGL.so (0xb71bd000)
	libEMGD2d.so => /usr/lib/libEMGD2d.so (0xb71b5000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb70bf000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb70ab000)
	libc.so.6 => /lib/libc.so.6 (0xb6f30000)
	/lib/ld-linux.so.2 (0x43bb6000)
	libemgdsrv_um.so => /usr/lib/libemgdsrv_um.so (0xb6f0d000)
undefined symbol: _glapi_Dispatch	(/usr/lib/dri/emgd_dri.so)
undefined symbol: _glapi_Context	(/usr/lib/dri/emgd_dri.so)
undefined symbol: _glapi_get_dispatch_table_size	(/usr/lib/dri/emgd_dri.so)
undefined symbol: _glapi_get_dispatch	(/usr/lib/dri/emgd_dri.so)
undefined symbol: _glapi_get_context	(/usr/lib/dri/emgd_dri.so)
undefined symbol: _glapi_add_dispatch	(/usr/lib/dri/emgd_dri.so)
undefined symbol: _glapi_set_context	(/usr/lib/dri/emgd_dri.so)
undefined symbol: _glapi_set_dispatch	(/usr/lib/dri/emgd_dri.so)

Digging a bit more:
dagenaisj at jfddesk:/export/ospreyfs/usr$ for lib in $(find -mount -type f -name "*.so*" 2>/dev/null); do \
if readelf -Ws $lib 2>/dev/null | grep _glapi_Dispatch ; then \
	echo found in $lib; \
fi ;\
done
   135: 0006d970     4 OBJECT  GLOBAL DEFAULT   26 _glapi_Dispatch
found in ./lib/xorg/modules/extensions/libglx.so
  2298: 0006d970     4 OBJECT  GLOBAL DEFAULT   26 _glapi_Dispatch
found in ./lib/xorg/modules/extensions/.debug/libglx.so
   907: 00000000     4 OBJECT  GLOBAL DEFAULT  ABS _glapi_Dispatch
found in ./lib/libglapi.so.0.0.0
   489: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND _glapi_Dispatch
found in ./lib/dri/emgd_dri.so

So emgd_dri.so needs it, and libglx.so provides it but as I understand it, as an extension, it is not available for generic consumption.

In my reference dylan rootfs, libglapi.so.0.0.0 provides the symbol instead of needing it (ABS instead of UND).

Of couse, the mesa package and recipe has changed between dylan and fido, but from my newbie pespective, the --enable-shared-glapi has not changed. I will try to pull in the old dylan recipe for mesa into my machine layer and prefer it.

Any clues would be appreciated!

Thank you all
/jfd



More information about the mesa-users mailing list