JavaFX 0x300b:EGLサーフェスを取得できませんでした


8

組み込み環境(buildroot)のraspaberry pi 3でjavafxサンプルを実行しようとしています。コマンドを実行すると、Xなしで実行したいと思います。

/root/jre-13.0.1/bin/java  -Dfile.encoding=UTF-8 --add-modules javafx.controls,javafx.fxml -Dprism.verbose=true -Djavafx.verbose=true -Dglass.platform=Monocle -Dprism.order=es2 -Djava.library.path=/root/jre-13.0.1/lib/ -Dembedded=monocle   -jar /home/root/NetBeansProjects//JavaFXFXML/dist/JavaFXFXML.jar 

次のエラーが表示されます。

cmd : cd '/home/root/NetBeansProjects//JavaFXFXML'; '/root/jre-13.0.1//bin/java'  -Dfile.encoding=UTF-8 --add-modules javafx.controls,javafx.fxml -Dprism.verbose=true -Djavafx.verbose=true -Dglass.platform=Monocle -Dprism.order=es2 -Djava.library.path=/root/jre-13.0.1/lib/ -Dembedded=monocle   -jar /home/root/NetBeansProjects//JavaFXFXML/dist/JavaFXFXML.jar 
JavaFX launchApplication method: launchMode=LM_JAR
Prism pipeline init order: 
es2 
Using Double Precision Marlin Rasterizer
Using dirty region optimizations
Using system sized mask for primitives
Not 
f
orcing 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
Loaded /root/jre-13.0.1/lib/libprism_es2_monocle.so from java.library.path
    succeeded.
GLFactory using com.sun.prism.es2.MonocleGLFactory
Loaded /root/jre-13.0.1/lib/libglass_monocle.so from java.library.path
com.sun.glass.ui.monocle.GLException: 0x300b: Could not get EGL surface
    at javafx.graphics/com.sun.glass.ui.monocle.AcceleratedScreen.<init>(Unknown Source)
    at javafx.graphics/com.sun.glass.ui.monocle.NativePlatform.getAcceleratedScreen(Unknown Source)
    at javafx.graphics/com.sun.prism.es2.MonocleGLFactory.initialize(Unknown Source)
    at javafx.graphics/com.sun.prism.es2.ES2Pipeline.<clinit>(Unknown Source)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Unknown Source)
    at javafx.graphics/com.sun.prism.GraphicsPipeline.createPipeline(Unknown Source)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(Unknown Source)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
(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

hello_triangleとhello_dispmanxの例を実行して、gpuアクセラレーションをテストしましたが、問題はありませんでした。なぜCould not get EGL surfaceエラーが発生するのかわからない、このエラーをデバッグする方法はありますか

Java設定:

# java --version
openjdk 13.0.1-BellSoft 2019-10-15
OpenJDK Runtime Environment (build 13.0.1-BellSoft+9)
OpenJDK Server VM (build 13.0.1-BellSoft+9, mixed mode)


1
SWパイプラインの作品を使用して、私だけでは、ハードウェアaccelarationを使用してみたい
ルイセバスチャン

JDKベンダーであるBellSoftに連絡して質問してみてください。
jewelsea

回答:


8

最後に私は考え出した... buildrootを使用しているので、すべてのラズベリーpiユーザーランド(GPU)ライブラリは/usr/libフォルダーにあります。ただし、モノクルのソースコード、より正確にはDispmanPlatformFactory.javaを深く見ると、プラットフォームと一致する方法/opt/vc/libが、buildroot構成に存在しないlibbcm_host.soを検索する方法であることがわかります。buildrootを使用する人のための簡単な回避策は、へのシンボリックリンクを作成することlibbcm_host.soです/opt/vc/lib

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.