bell-sw / Liberica

Free and 100% open source Progressive Java Runtime for modern Java™ deployments supported by a leading OpenJDK contributor
https://bell-sw.com/pages/libericajdk/
GNU General Public License v2.0
331 stars 28 forks source link

libprism_es2.so: undefined symbol: glXQueryExtension #138

Open tinu73 opened 1 year ago

tinu73 commented 1 year ago

I'm using bellsoft-jre17.0.7+7-linux-aarch64-full and try to run the simple JavaFX sample ColorfulCircles:

java -jar ColorfulCircles.jar 
java: symbol lookup error: /usr/lib/jvm/jre-17.0.7-full/lib/libprism_es2.so: undefined symbol: glXQueryExtension

It runs on x86 64 Linux using bellsoft-jre17.0.7+7-linux-amd64-full. What is missing in aarch64 libraries?

Here a more detailes output:

java --add-modules javafx.controls,javafx.fxml \
-Dprism.verbose=true \
-Djavafx.verbose=true \
-Dprism.order=es2 \
-jar ColorfulCircles.jar

JavaFX launchApplication method: launchMode=LM_JAR
Prism pipeline init order: es2 
Using Double Precision Marlin Rasterizer
Using dirty region optimizations
Not using texture mask for primitives
Not forcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Prism pipeline name = com.sun.prism.es2.ES2Pipeline
Loading ES2 native library ... prism_es2
Loaded /usr/lib/jvm/jre-17.0.7-full/lib/libprism_es2.so from relative path
    succeeded.
GLFactory using com.sun.prism.es2.X11GLFactory
java: symbol lookup error: /usr/lib/jvm/jre-17.0.7-full/lib/libprism_es2.so: undefined symbol: glXQueryExtension
voitylov commented 1 year ago

which HW, OS, OS version, and video driver are you using?

Could you post output of ldd libprism_es2.so, find libGLX.so and do nm -D on it?

tinu73 commented 1 year ago

I'm using NXP i.MX 8M Mini | Arm Cortex A53, based on Yocto Linux 5.15.32. What i found out ist that Liberica, JavaFX is using OpenGL (es2) pipeline and it only works with X11, GLX. However NXP does not support X11 anymore. NXP BSP supports DISTRO fslc-xwayland, Distro for Wayland with X11. But this distro does not provide full X11 compatiblity anymore, GLX is missing. There are many information around this topic on the internet, for example here: MX8 does not support X11, GLX won´t work.

So my question is if Liberica Full JRE/JDK offers other graphic pipeline than OpenGL (es2) that work with Wayland making it possible to use HW acceleration.

tinu73 commented 1 year ago

Output of ldd libprism_es2.so

root@imx8mm-var-dart:/# ldd ./usr/lib/jvm/jre-17.0.7-full/lib/libprism_es2.so
ldd: warning: you do not have execution permission for `./usr/lib/jvm/jre-17.0.7-full/lib/libprism_es2.so'
        linux-vdso.so.1 (0x0000ffffb9dba000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0x0000ffffb9bf0000)
        libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x0000ffffb9bd0000)
        libGL.so.1 => /usr/lib/libGL.so.1 (0x0000ffffb9830000)
        libm.so.6 => /lib/libm.so.6 (0x0000ffffb9790000)
        libc.so.6 => /lib/libc.so.6 (0x0000ffffb95e0000)
        /lib/ld-linux-aarch64.so.1 (0x0000ffffb9d81000)
        libxcb.so.1 => /usr/lib/libxcb.so.1 (0x0000ffffb95a0000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0x0000ffffb9570000)
        libGAL.so => /usr/lib/libGAL.so (0x0000ffffb9390000)
        libVSC.so => /usr/lib/libVSC.so (0x0000ffffb83d0000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0x0000ffffb83b0000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x0000ffffb8390000)