Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8090336

Add support for Mali GPU initialization

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Won't Fix
    • Icon: P4 P4
    • tbd
    • 8
    • javafx
    • A20-OLinuXino-MICRO with Linux.

      Hey Jasper, Richard,

      We're doing making a JavaFX prototype on ARM together with the University of Antwerp and are running into a technical problem. Would you or any of your colleagues have any idea what's going wrong her? Or any pointers who could help us with this question?

      Thanks in advance,

      Stephan
      -----------------------------------------------------------------------------------------
      As discussed earlier today i hereby send you the details of the issue we are having running a JavaFX application on a ARM board running Linux. We are using JDK8 Build b119.

      The specific board we are using is this one:
      https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-MICRO-4GB/open-source-hardware

      We want to run the application directly on the framebuffer using OpenGL ES2.0, not using X.
      The board is using a Mali GPU and we are using this driver: https://github.com/linux-sunxi/sunxi-mali

      We verified the GPU and drivers are working, by compiling and running a test program included with the driver ( https://github.com/linux-sunxi/sunxi-mali/blob/master/test/test.c),
      which uses libEGL directly.

      When running the JavaFX application using eglb we get a EGL_BAD_NATIVE_WINDOW error when executing eglCreateWindowSurface().
      The test program of the driver uses the same call though.

      I assume JavaFX uses libEGL as well behind the scenes?
      I think this code is not opensource though, so i could not see how it uses libEGL to debug this further.
      We are not sure how to continue with this, so any hints are very much appreciated.

      Below you can find the output when running the application.

      root@A20:~/Downloads/jdk1.8.0/bin# JAVAFX_DEBUG=1 ./java -Djavafx.platform=eglfb -Dprism.verbose=true -jar ~/JavaFXApp.jar
      Prism pipeline init order: es2
      Using platform text rasterizer
      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_eglfb
              succeeded.
      GLFactory using com.sun.prism.es2.EGLFBGLFactory
      eglCreateWindowSurface failed! eglGetError 12299
      eglMakeCurrent failed - 12297
      Failed to create EGLContext(X) Got class = class com.sun.prism.es2.ES2Pipeline
      GraphicsPipeline.createPipeline: error initializing pipeline com.sun.prism.es2.ES2Pipeline
      Graphics Device initialization failed for : es2
      Error initializing QuantumRenderer: no suitable pipeline found
      java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
              at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:300)
              at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:244)
              at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:179)
              at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:210)
              at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:653)
              at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:314)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:483)
              at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:300)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:483)
              at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
      Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
              at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:98)
              at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:128)
              at java.lang.Thread.run(Thread.java:744)
      Exception while launching application

            ddhill David Hill (Inactive)
            ddhill David Hill (Inactive)
            Votes:
            2 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: