We have precision setting done for float and int for 2d not 3d shaders in prism. Some drivers such as the Mali-T624 seem to be less forgiving when this is not set. The Mali-T624 works fine with JavaFX programs that use only the 2d shaders but fails when 3d shaders is needed.
Here is a partial error log:
Jan 01, 1970 12:05:07 AM javafx.scene.SubScene <init>
WARNING: System can't support antiAliasing
Shader compile log: 0:57: S0032: no default precision defined for variable 'diffuseColor'
java.lang.RuntimeException: Error creating fragment shader
at com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:141)
at com.sun.prism.es2.ES2PhongShader.getShader(ES2PhongShader.java:177)
at com.sun.prism.es2.ES2Context.getPhongShader(ES2Context.java:130)
at com.sun.prism.es2.ES2Context.renderMeshView(ES2Context.java:476)
at com.sun.prism.es2.ES2MeshView.render(ES2MeshView.java:119)
at com.sun.javafx.sg.prism.NGShape3D.renderMeshView(NGShape3D.java:179)
at com.sun.javafx.sg.prism.NGShape3D.renderContent(NGShape3D.java:198)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.sg.prism.NGSubScene.renderContent(NGSubScene.java:218)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:474)
at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:327)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.lang.Thread.run(Thread.java:745)
Shader compile log: 0:57: S0032: no default precision defined for variable 'diffuseColor'
Here is a partial error log:
Jan 01, 1970 12:05:07 AM javafx.scene.SubScene <init>
WARNING: System can't support antiAliasing
Shader compile log: 0:57: S0032: no default precision defined for variable 'diffuseColor'
java.lang.RuntimeException: Error creating fragment shader
at com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:141)
at com.sun.prism.es2.ES2PhongShader.getShader(ES2PhongShader.java:177)
at com.sun.prism.es2.ES2Context.getPhongShader(ES2Context.java:130)
at com.sun.prism.es2.ES2Context.renderMeshView(ES2Context.java:476)
at com.sun.prism.es2.ES2MeshView.render(ES2MeshView.java:119)
at com.sun.javafx.sg.prism.NGShape3D.renderMeshView(NGShape3D.java:179)
at com.sun.javafx.sg.prism.NGShape3D.renderContent(NGShape3D.java:198)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.sg.prism.NGSubScene.renderContent(NGSubScene.java:218)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:235)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2067)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1959)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:474)
at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:327)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:91)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.lang.Thread.run(Thread.java:745)
Shader compile log: 0:57: S0032: no default precision defined for variable 'diffuseColor'
- relates to
-
JDK-8098105 Add GL_FRAGMENT_PRECISION_HIGH check to existing 2D shaders before setting precision to highp
-
- Resolved
-