[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Re: Cross build JavaFX for iMX6
From:       "Daniel." <danielhilst () gmail ! com>
Date:       2015-07-29 12:26:53
Message-ID: CAF3SDA4_n1oFNkq+goboqkHTQeAtGgtcxpM8qKcceZtU-zxmDg () mail ! gmail ! com
[Download RAW message or body]

Hi again everybody, I'm attaching an .bbappend that I use to get right EGL
libraries on /opt/VIVANTE-fb. Remembering that
I'm using Dizzy release of Yocto.

Best regards,
- dhs

2015-07-08 17:37 GMT-03:00 Daniel. <danielhilst@gmail.com>:

> Hi everybody!
> 
> I finally got it working! Here is what I have to do:
> 
> Build fsl-image-gui on Yocto. I'm using Dizzy release, no
> DISTRO_FEATURES_removed was used. After that I have to move this libraries
> to image, I create a directory on rootfs, /opt/VIVANTE-fb, and add it to
> LD_LIBRARY_PATH, more on this below. The libraries I have to use was this
> ones:
> 
> [geckos@csi24 build_x11]$ find
> tmp/work/cortexa9hf-vfp-neon-mx6-poky-linux-gnueabi/imx-gpu-viv/ -name
> "*[-.]fb.so"
> 
> tmp/work/cortexa9hf-vfp-neon-mx6-poky-linux-gnueabi/imx-gpu-viv/1_5.0.11.p4.4-hfp-r0/imx-gpu-viv-5.0.11.p4.4-hfp/gpu-core/usr/lib/libGLESv2-fb.so
>  
> tmp/work/cortexa9hf-vfp-neon-mx6-poky-linux-gnueabi/imx-gpu-viv/1_5.0.11.p4.4-hfp-r0/imx-gpu-viv-5.0.11.p4.4-hfp/gpu-core/usr/lib/libVIVANTE-fb.so
>  
> tmp/work/cortexa9hf-vfp-neon-mx6-poky-linux-gnueabi/imx-gpu-viv/1_5.0.11.p4.4-hfp-r0/imx-gpu-viv-5.0.11.p4.4-hfp/gpu-core/usr/lib/
>  libVIVANTE.fb.so
> 
> tmp/work/cortexa9hf-vfp-neon-mx6-poky-linux-gnueabi/imx-gpu-viv/1_5.0.11.p4.4-hfp-r0/imx-gpu-viv-5.0.11.p4.4-hfp/gpu-core/usr/lib/libEGL-fb.so
>  
> tmp/work/cortexa9hf-vfp-neon-mx6-poky-linux-gnueabi/imx-gpu-viv/1_5.0.11.p4.4-hfp-r0/imx-gpu-viv-5.0.11.p4.4-hfp/gpu-core/usr/lib/libGAL-fb.so
>  
> tmp/work/cortexa9hf-vfp-neon-mx6-poky-linux-gnueabi/imx-gpu-viv/1_5.0.11.p4.4-hfp-r0/imx-gpu-viv-5.0.11.p4.4-hfp/gpu-core/usr/lib/
>  libGAL_egl.fb.so
> 
> I copied they to /opt/VIVANTE-fb and have to create some soft links. The
> libraries are the same as the above, but without -fb and .fb in their
> names. Here is what's looks like:
> root@varsomimx6:/opt/VIVANTE-fb# ls -l
> total 26900
> lrwxrwxrwx 1 root root       11 Jul  8 19:41 libEGL.so -> libEGL.so.1
> -rwxr-xr-x 1 root root   552721 Jul  8 19:16 libEGL.so.1
> lrwxrwxrwx 1 root root       11 Jul  8 19:39 libEGL.so.1.0 -> libEGL.so.1
> -rwxr-xr-x 1 root root  4671490 Jul  8 19:16 libGAL.so
> -rwxr-xr-x 1 root root    86183 Jul  8 19:33 libGAL_egl.so
> -rwxr-xr-x 1 root root  4426838 Jul  8 19:16 libGLESv2.so
> -rwxr-xr-x 1 root root 17797204 Jul  8 19:16 libVIVANTE.so
> root@varsomimx6:/opt/VIVANTE-fb#
> 
> I also explode the jdk to image's /opt folder and the java samples. Here
> is the ones used:
> jdk-8u60-ea-bin-b21-linux-arm-vfp-hflt-23_jun_2015.tar.gz
> javafx_samples-8_0_0-ea-linux.zip
> 
> Then I compile the javafx. I'm using this JDK
> (jdk-8u60-ea-bin-b22-linux-x64-01_jul_2015.tar.gz). I have to setup
> JAVA_HOME and JDK_HOME to the right place as everybody has to do, also
> removed the jfxrt.jar. I just run the script to get the toolchain for
> armv6hf, also I copy the mxcfb.h to the toolchain, I don't know if this is
> needed to get iMX.6 support but I did it anyway. This file can be found at
> Yocto's sysroot (build_x11/tmp/sysroots/), here is how is it:
> [geckos@csi24 crosslibs]$ find . -name "mxcfb.h"
> ./armv6hf-02/usr/include/linux/mxcfb.h
> 
> After that I just compiled the javafx as in wiki:
> $ gradle -PCOMPILE_TARGETS=armv6hf
> 
> Then copy the sdk to my image, since I'm using NFS I did it this way:
> sudo cp -a build/armv6hf-sdk/ /srv/nfs/rootfs/opt/
> 
> This puts it on /opt/armv6hf-sdk of my rootfs. I changed the script that
> Jörg provided, now it looks like this:
> root@varsomimx6:~# cat java-fb.sh
> #!/bin/sh
> 
> export LD_LIBRARY_PATH=/opt/VIVANTE-fb/
> 
> /opt/jdk1.8.0_60/bin/java \
> -Xms128m \
> -Xmx128m \
> -Dprism.verbose=true \
> -Dglass.platform=Monocle \
> -Dembedded=monocle \
> -Dmonocle.input.touchRadius=1 \
> -Dmonocle.platform.traceConfig=true \
> -Djava.ext.dirs=/opt/armv6hf-sdk/rt/lib/ext \
> $@
> 
> 
> And then run the sample, here is its outputs:
> root@varsomimx6:~# ./java-fb.sh -jar
> /opt/javafx-samples-8.0.0-ea/BouncingBalls.
> jar
> Prism pipeline init order: es2 sw
> Using native-based Pisces rasterizer
> Using dirty region optimizations
> Using system sized 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_monocle
> succeeded.
> GLFactory using com.sun.prism.es2.MonocleGLFactory
> traceConfig: Trying platform MX6 with class
> com.sun.glass.ui.monocle.MX6PlatformFactory
> traceConfig: Matched MX6
> (X) Got class = class com.sun.prism.es2.ES2Pipeline
> Initialized prism pipeline: com.sun.prism.es2.ES2Pipeline
> Maximum supported texture size: 8192
> Maximum texture size clamped to 4096
> Non power of two texture support = true
> Maximum number of vertex attributes = 16
> Maximum number of uniform vertex components = 672
> Maximum number of uniform fragment components = 256
> Maximum number of varying components = 44
> Maximum number of texture units usable in a vertex shader = 4
> Maximum number of texture units usable in a fragment shader = 8
> Graphics Vendor: Vivante Corporation
> Renderer: Vivante GC2000
> Version: OpenGL ES 3.0 V5.0.11.p4.25762
> vsync: true vpipe: true
> max rectangle texture cell size = 89
> wrap rectangle texture = 2 x 2
> ES2ResourceFactory: Prism - createStockShader: AlphaTexture_Color.frag
> ES2ResourceFactory: Prism - createStockShader: Texture_Color.frag
> ES2ResourceFactory: Prism - createStockShader: FillRoundRect_Color.frag
> ES2ResourceFactory: Prism - createStockShader:
> FillRoundRect_LinearGradient_PAD.frag
> ES2ResourceFactory: Prism - createStockShader: Mask_TextureSuper.frag
> ES2ResourceFactory: Prism - createStockShader: AlphaOne_Color.frag
> ES2ResourceFactory: Prism - createStockShader:
> AlphaTexture_RadialGradient.frag
> ES2ResourceFactory: Prism - createStockShader: Solid_TextureRGB.frag
> 
> 
> The touch is working fine, at least the balls are released and paused when
> I press it :)
> 
> Thank you very much Jörg and Kevin, I really appreciated the help!
> 
> Best regards,
> 
> - dhs
> 
> 
> 
> 
> 
> 2015-07-07 18:13 GMT-03:00 Daniel. <danielhilst@gmail.com>:
> 
> > Hi all,
> > 
> > I'm still trying to run JavaFX on iMX6 using fsl-image-gui image from
> > Yocto Dizzy with DISTRO_FEATURES_remove = "x11 wayland directfb". After
> > compiling the image and javafx I tried to run Modena.jar with the script
> > provided by Jörg.
> > 
> > I'm facing this exception:
> > 
> > Java HotSpot(TM) Client VM warning: You have loaded library
> > /opt/armv6hf-sdk/rt/lib/arm/libjfxwebkit.so which might have disabled stack
> > guard. The VM will try to fix the stack guard now.
> > It's highly recommended that you fix the library with 'execstack -c
> > <libfile>', or link it with '-z noexecstack'.
> > Jul 07, 2015 8:32:06 PM javafx.scene.control.Control loadSkinClass
> > SEVERE: Failed to load skin
> > 'com.sun.javafx.scene.web.skin.HTMLEditorSkin' for control
> > SamplePage$1@1986d5
> > java.lang.UnsatisfiedLinkError:
> > /opt/armv6hf-sdk/rt/lib/arm/libjfxwebkit.so:
> > /opt/armv6hf-sdk/rt/lib/arm/libjfxwebkit.so: wrong ELF class: ELFCLASS64
> > (Possible cause: architecture word width mismatch)
> > 
> > So I browse to fresh built sdk, and find this:
> > [geckos@csi24 build]$ find . -name "*.so" -exec file {} + | grep x86-64
> > ./armv6hf-sdk/rt/lib/arm/libgstreamer-lite.so:       ELF 64-bit LSB
> > shared object, x86-64, version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=653c81ccc1dfd6fedf946c34a4c2e07d6d3cbed5, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libfxplugins.so:            ELF 64-bit LSB
> > shared object, x86-64, version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=b18524ebc26cd8381b0c33cb2d91a4de68a721fa, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libjfxmedia.so:             ELF 64-bit LSB
> > shared object, x86-64, version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=af8c5754f6a4823ecf22d707b1f604321eb57f22, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libjfxwebkit.so:            ELF 64-bit LSB
> > shared object, x86-64, version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=3143cf3f8ed8d00c2c4048fb835fb3fd86b68f79, stripped
> > 
> > It seems that this libraries ar not being cross compiled, is that normal?
> > The another libraries seems good:
> > [geckos@csi24 build]$ find . -name "*.so" -exec file {} + | grep ARM
> > ./armv6hf-sdk/rt/lib/arm/libglass.so:                ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=8efdb3236c43fc4abaaae956ffba0bfca336c28b, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libprism_es2_eglfb.so:      ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=25264a33f919a3a925ef2d2f8ec5d4a10bfbdbf9, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libglass_monocle_x11.so:    ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=d1735e47b13e56d58d4e9b7a7f6dee338ccccd9f, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libdecora_sse.so:           ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=8052ae5d7f230ee0629743f9ee421371e3522538, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libprism_common.so:         ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=658886a9bead9068f4111679e8f5f350386d235b, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libjavafx_font.so:          ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=c84058878ffaeebf60be04eb0d138ecf3fdf5cd1, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libglass_monocle.so:        ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=ea65233624f7cb0d220ce974aa122866fff659a2, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libprism_es2_monocle.so:    ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=6827d044682876f8ace57cfdc3417e026688701c, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libprism_sw.so:             ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=eba0d9ddc0bc463e92008e90ded9a3ff17295337, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libjavafx_font_pango.so:    ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=be19332b8b460d6e97486cf3d91cf056fefa550b, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libjavafx_font_freetype.so: ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=a2e42e950718d3c926ced01a014fa6475347cdf2, not stripped
> > ./armv6hf-sdk/rt/lib/arm/libjavafx_iio.so:           ELF 32-bit LSB
> > shared object, ARM, EABI5 version 1 (SYSV), dynamically linked,
> > BuildID[sha1]=1f879805f5dca1ce97d4d2798b8f40a32eeb547a, not stripped
> > [geckos@csi24 build]$
> > 
> > To compile run this:
> > gradle -PCOMPILE_TARGETS=armv6hf
> > 
> > Best regards,
> > - dhs
> > 
> > 
> > 2015-07-06 16:47 GMT-03:00 Daniel. <danielhilst@gmail.com>:
> > 
> > > I see, so I'll keep usign armv6hf, I'm compiling a new fsl-image-gui
> > > from scratch (have to update yocto) using Dizzy release. What version of
> > > Yocto you're using and what image you use for testing?
> > > 
> > > Best regards,
> > > 
> > > - dhs
> > > 
> > > 2015-07-06 10:57 GMT-03:00 Kevin Rushforth <kevin.rushforth@oracle.com>:
> > > 
> > > > We do most of our (limited) testing on iMX6 using armv6hf binaries,
> > > > but armv7hf should work, too.
> > > > 
> > > > -- Kevin
> > > > 
> > > > 
> > > > 
> > > > Daniel. wrote:
> > > > 
> > > > Hi Jörg,
> > > > 
> > > > So did you compile for armv7hf? Where can I get the toolchain for armv7hf??
> > > > 
> > > > Best regards
> > > > 
> > > > - dhs
> > > > 
> > > > 2015-07-05 21:48 GMT-03:00 Daniel. <danielhilst@gmail.com> \
> > > > <danielhilst@gmail.com>: 
> > > > 
> > > > 
> > > > Hi Jörg, I'm in home right now, tomorrow I'll try it. Thanks for the tip!
> > > > - dhs
> > > > Em 05/07/2015 18:47, "Jörg Wille" <joerg.wille@gmail.com> \
> > > > <joerg.wille@gmail.com> escreveu: 
> > > > 
> > > > 
> > > > Hi Daniel,
> > > > did you try running javafx with monocle? Also sudo is required.
> > > > I am also using yocto and using following bash-script to run ui-apps on
> > > > i.MX6:
> > > > #!/bin/sh
> > > > sudo java \
> > > > -Xms128m \
> > > > -Xmx128m \
> > > > -Dprism.verbose=true \
> > > > -Dglass.platform=Monocle \
> > > > -Dembedded=monocle \
> > > > -Dmonocle.input.touchRadius=1 \
> > > > -Dmonocle.platform.traceConfig=true \
> > > > -Djava.ext.dirs=build/armv7hf-sdk/rt/lib/ext \
> > > > -jar $@
> > > > 
> > > > The last line depend whether you have build overlay
> > > > <https://wiki.openjdk.java.net/display/OpenJFX/Building+OpenJFX#BuildingOpenJFX-Overlay-JDK8
> > > >  
> > > > (gradle -PCOMPILE_TARGETS=armv7hf zips) or just copied the build path (as
> > > > I
> > > > do here).
> > > > 
> > > > Are you also using a touch-screen? I stumbled across errors
> > > > in monocle/LinuxStatefulMultiTouchProcessor.java. But other than that,
> > > > javafx/monocle works on I.MX6.
> > > > 
> > > > Regards,
> > > > Jörg
> > > > 
> > > > 
> > > > 
> > > > 
> > > 
> > > 
> > > --
> > > *"Do or do not. There is no try"*
> > > *Yoda Master*
> > > 
> > 
> > 
> > 
> > --
> > *"Do or do not. There is no try"*
> > *Yoda Master*
> > 
> 
> 
> 
> --
> *"Do or do not. There is no try"*
> *Yoda Master*
> 



-- 
*"Do or do not. There is no try"*
  *Yoda Master*


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic