<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX ProcessorsのトピックJavaFX applications on iMX6+Vivante</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/JavaFX-applications-on-iMX6-Vivante/m-p/446448#M68864</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;We currently have a project on an I.MX6 processor [1] where we would like to get JavaFX working on Frame Buffer support, but without using X11.&lt;/P&gt;&lt;P&gt;The openjdk wiki[2] mentions about two ways to have JavaFX running on iMX6: &lt;/P&gt;&lt;OL style="list-style-type: decimal;"&gt;&lt;LI&gt;Direct to Frame buffer (no X11). This is the targeted path for JavaFX on ARM and the most tested&lt;/LI&gt;&lt;LI&gt;Using X11 to obtain the EGL context, but acting as if we are the only application ...&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are aiming for the 1 option. So instead of using the *–x11.so, we are using the *-fb.so libraries flavor from Vivante (libVIVANTE-fb.so, libEGL-fb.so, libGAL-fb.so) as described in the openjdk wiki link [2]. Everything is working,&amp;nbsp; however, even when using fb set of libs, the X11 server seems to still be required in order for the EGL surface to be created.&lt;/P&gt;&lt;P&gt;Without x server running, javaFX will return “Could not get EGL surface” error: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;root@varsomimx6:~# ./java-fb.sh -jar TurnUI.jar&lt;/P&gt;&lt;P&gt;Prism pipeline init order: es2&lt;/P&gt;&lt;P&gt;Using native-based Pisces rasterizer&lt;/P&gt;&lt;P&gt;Using dirty region optimizations&lt;/P&gt;&lt;P&gt;Using system sized mask for primitives&lt;/P&gt;&lt;P&gt;Not forcing power of 2 sizes for textures&lt;/P&gt;&lt;P&gt;Using hardware CLAMP_TO_ZERO mode&lt;/P&gt;&lt;P&gt;Opting in for HiDPI pixel scaling&lt;/P&gt;&lt;P&gt;Prism pipeline name = com.sun.prism.es2.ES2Pipeline&lt;/P&gt;&lt;P&gt;Loading ES2 native library ... prism_es2_monocle&lt;/P&gt;&lt;P&gt;Loaded /opt/java_se_embedded_8_full_release_(v1.000.002.b36)/lib/ext/../arm/libprism_es2_monocle.so from relative path&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; succeeded.&lt;/P&gt;&lt;P&gt;GLFactory using com.sun.prism.es2.MonocleGLFactory&lt;/P&gt;&lt;P&gt;Loaded /opt/java_se_embedded_8_full_release_(v1.000.002.b36)/lib/ext/../arm/libglass_monocle.so from relative path&lt;/P&gt;&lt;OL style="list-style-type: lower-alpha;"&gt;&lt;LI&gt;com.sun.glass.ui.monocle.GLException: 0x3003: Could not get EGL surface&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.glass.ui.monocle.AcceleratedScreen.&amp;lt;init&amp;gt;(AcceleratedScreen.java:110)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.glass.ui.monocle.MX6AcceleratedScreen.&amp;lt;init&amp;gt;(MX6AcceleratedScreen.java:39)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.glass.ui.monocle.MX6Platform.getAcceleratedScreen(MX6Platform.java:39)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.prism.es2.MonocleGLFactory.initialize(MonocleGLFactory.java:107)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.prism.es2.ES2Pipeline.&amp;lt;clinit&amp;gt;(ES2Pipeline.java:81)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.Class.forName0(Native Method)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.Class.forName(Unknown Source)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:187)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.Thread.run(Unknown Source)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It appears that the libEGL-fb.so library that is responsible for creating a surface to draw into is returning EGL_NO_SURFACE from the eglCreateWindowSurface(...) method.&lt;/P&gt;&lt;P&gt;The method above egl.eglCreateWindowSurface(…) calls thru to a native monocle JaveNativeInterface(JNI) method in EGL.c which marshals arguments and passes them to the libEGL function eglCreateWindowSurface(…) and returns a handle to it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What we would like to find out is why it can’t create a surface, for example if it can’t load a particular library i.e libx11.so&lt;/P&gt;&lt;P&gt;Are there any debug versions of libEGL libraries that you could provide us or is there an environmental variable (like mesa LIBGL_DEBUG=true) that can be exported to get debugging information from libEGL?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;More general, is there anything else required, besides the proper Vivante *-fb.so libs, to have JavaFX without needing X11?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Razvan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[1] &lt;A href="http://variwiki.com/index.php?title=DART-MX6"&gt;http://variwiki.com/index.php?title=DART-MX6&lt;/A&gt;&lt;/P&gt;&lt;P&gt;[2] &lt;A href="https://wiki.openjdk.java.net/display/OpenJFX/OpenJFX+on+Freescale+i.MX6"&gt;https://wiki.openjdk.java.net/display/OpenJFX/OpenJFX+on+Freescale+i.MX6&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 26 Nov 2015 11:40:12 GMT</pubDate>
    <dc:creator>razvangrama</dc:creator>
    <dc:date>2015-11-26T11:40:12Z</dc:date>
    <item>
      <title>JavaFX applications on iMX6+Vivante</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/JavaFX-applications-on-iMX6-Vivante/m-p/446448#M68864</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;We currently have a project on an I.MX6 processor [1] where we would like to get JavaFX working on Frame Buffer support, but without using X11.&lt;/P&gt;&lt;P&gt;The openjdk wiki[2] mentions about two ways to have JavaFX running on iMX6: &lt;/P&gt;&lt;OL style="list-style-type: decimal;"&gt;&lt;LI&gt;Direct to Frame buffer (no X11). This is the targeted path for JavaFX on ARM and the most tested&lt;/LI&gt;&lt;LI&gt;Using X11 to obtain the EGL context, but acting as if we are the only application ...&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are aiming for the 1 option. So instead of using the *–x11.so, we are using the *-fb.so libraries flavor from Vivante (libVIVANTE-fb.so, libEGL-fb.so, libGAL-fb.so) as described in the openjdk wiki link [2]. Everything is working,&amp;nbsp; however, even when using fb set of libs, the X11 server seems to still be required in order for the EGL surface to be created.&lt;/P&gt;&lt;P&gt;Without x server running, javaFX will return “Could not get EGL surface” error: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;root@varsomimx6:~# ./java-fb.sh -jar TurnUI.jar&lt;/P&gt;&lt;P&gt;Prism pipeline init order: es2&lt;/P&gt;&lt;P&gt;Using native-based Pisces rasterizer&lt;/P&gt;&lt;P&gt;Using dirty region optimizations&lt;/P&gt;&lt;P&gt;Using system sized mask for primitives&lt;/P&gt;&lt;P&gt;Not forcing power of 2 sizes for textures&lt;/P&gt;&lt;P&gt;Using hardware CLAMP_TO_ZERO mode&lt;/P&gt;&lt;P&gt;Opting in for HiDPI pixel scaling&lt;/P&gt;&lt;P&gt;Prism pipeline name = com.sun.prism.es2.ES2Pipeline&lt;/P&gt;&lt;P&gt;Loading ES2 native library ... prism_es2_monocle&lt;/P&gt;&lt;P&gt;Loaded /opt/java_se_embedded_8_full_release_(v1.000.002.b36)/lib/ext/../arm/libprism_es2_monocle.so from relative path&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; succeeded.&lt;/P&gt;&lt;P&gt;GLFactory using com.sun.prism.es2.MonocleGLFactory&lt;/P&gt;&lt;P&gt;Loaded /opt/java_se_embedded_8_full_release_(v1.000.002.b36)/lib/ext/../arm/libglass_monocle.so from relative path&lt;/P&gt;&lt;OL style="list-style-type: lower-alpha;"&gt;&lt;LI&gt;com.sun.glass.ui.monocle.GLException: 0x3003: Could not get EGL surface&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.glass.ui.monocle.AcceleratedScreen.&amp;lt;init&amp;gt;(AcceleratedScreen.java:110)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.glass.ui.monocle.MX6AcceleratedScreen.&amp;lt;init&amp;gt;(MX6AcceleratedScreen.java:39)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.glass.ui.monocle.MX6Platform.getAcceleratedScreen(MX6Platform.java:39)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.prism.es2.MonocleGLFactory.initialize(MonocleGLFactory.java:107)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.prism.es2.ES2Pipeline.&amp;lt;clinit&amp;gt;(ES2Pipeline.java:81)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.Class.forName0(Native Method)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.Class.forName(Unknown Source)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.prism.GraphicsPipeline.createPipeline(GraphicsPipeline.java:187)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:91)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.Thread.run(Unknown Source)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It appears that the libEGL-fb.so library that is responsible for creating a surface to draw into is returning EGL_NO_SURFACE from the eglCreateWindowSurface(...) method.&lt;/P&gt;&lt;P&gt;The method above egl.eglCreateWindowSurface(…) calls thru to a native monocle JaveNativeInterface(JNI) method in EGL.c which marshals arguments and passes them to the libEGL function eglCreateWindowSurface(…) and returns a handle to it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What we would like to find out is why it can’t create a surface, for example if it can’t load a particular library i.e libx11.so&lt;/P&gt;&lt;P&gt;Are there any debug versions of libEGL libraries that you could provide us or is there an environmental variable (like mesa LIBGL_DEBUG=true) that can be exported to get debugging information from libEGL?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;More general, is there anything else required, besides the proper Vivante *-fb.so libs, to have JavaFX without needing X11?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Razvan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[1] &lt;A href="http://variwiki.com/index.php?title=DART-MX6"&gt;http://variwiki.com/index.php?title=DART-MX6&lt;/A&gt;&lt;/P&gt;&lt;P&gt;[2] &lt;A href="https://wiki.openjdk.java.net/display/OpenJFX/OpenJFX+on+Freescale+i.MX6"&gt;https://wiki.openjdk.java.net/display/OpenJFX/OpenJFX+on+Freescale+i.MX6&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 26 Nov 2015 11:40:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/JavaFX-applications-on-iMX6-Vivante/m-p/446448#M68864</guid>
      <dc:creator>razvangrama</dc:creator>
      <dc:date>2015-11-26T11:40:12Z</dc:date>
    </item>
  </channel>
</rss>

