JAVAFX on ANDROID

Matthias Hänel haenel at ultramixer.com
Mon Oct 14 03:17:52 PDT 2013


Hi Tomas,


since Tobi told me he had a similiar problem in the first place with the iOS port and he managed to run JFX8 without font.
We deactivated fonts. There is some code to deactivate and after that it looks like it is starting the JFX-Application.

10-14 06:06:49.529: INFO/GLASS(1546): glass_view_drawBegin
10-14 06:06:49.529: INFO/javafx(1546): Using getAndroidNativeWindow() from glass.
10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.579: ERROR/javafx(1546): Some video driver error or programming error occurred. Framebuffer object status is invalid. (FBO - 823)
10-14 06:06:49.579: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.579: ERROR/javafx(1546): Error creating framebuffer object with TexID 1)
10-14 06:06:49.599: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.649: ERROR/libEGL(1546): called unimplemented OpenGL ES API
10-14 06:06:49.659: WARN/System.err(1546): java.lang.reflect.InvocationTargetException
10-14 06:06:49.669: WARN/System.err(1546): at java.lang.reflect.Method.invokeNative(Native Method)
10-14 06:06:49.669: WARN/System.err(1546): at java.lang.reflect.Method.invoke(Method.java:525)
10-14 06:06:49.709: DEBUG/dalvikvm(1546): GC_FOR_ALLOC freed 330K, 10% free 4129K/4564K, paused 32ms, total 32ms
10-14 06:06:49.709: WARN/System.err(1546): at com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:253)
10-14 06:06:49.709: WARN/System.err(1546): at com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:227)
10-14 06:06:49.709: WARN/System.err(1546): at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:485)
10-14 06:06:49.709: WARN/System.err(1546): at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:418)
10-14 06:06:49.709: WARN/System.err(1546): at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:351)
10-14 06:06:49.709: WARN/System.err(1546): at com.sun.prism.impl.BaseContext.validateClearOp(BaseContext.java:116)
10-14 06:06:49.709: WARN/System.err(1546): at com.sun.prism.es2.ES2Graphics.clear(ES2Graphics.java:78)
10-14 06:06:49.719: WARN/System.err(1546): at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:460)
10-14 06:06:49.719: WARN/System.err(1546): at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:331)
10-14 06:06:49.719: WARN/System.err(1546): at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:88)
10-14 06:06:49.719: WARN/System.err(1546): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
10-14 06:06:49.729: WARN/System.err(1546): at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:276)
10-14 06:06:49.729: WARN/System.err(1546): at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
10-14 06:06:49.729: WARN/System.err(1546): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-14 06:06:49.729: WARN/System.err(1546): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-14 06:06:49.729: WARN/System.err(1546): at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:129)
10-14 06:06:49.729: WARN/System.err(1546): at java.lang.Thread.run(Thread.java:841)
10-14 06:06:49.729: WARN/System.err(1546): Caused by: java.lang.RuntimeException: Error creating vertex shader
10-14 06:06:49.740: WARN/System.err(1546): at com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:132)
10-14 06:06:49.740: WARN/System.err(1546): at com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:173)
10-14 06:06:49.740: WARN/System.err(1546): at com.sun.prism.es2.ES2ResourceFactory.createShader(ES2ResourceFactory.java:168)
10-14 06:06:49.749: WARN/System.err(1546): at com.sun.prism.shader.Texture_Color_Loader.loadShader(Texture_Color_Loader.java:47)
10-14 06:06:49.749: WARN/System.err(1546): ... 19 more
10-14 06:06:49.749: WARN/System.err(1546): java.lang.InternalError: Error loading stock shader Texture_Color
10-14 06:06:49.749: WARN/System.err(1546): at com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:256)
10-14 06:06:49.759: WARN/System.err(1546): at com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:227)
10-14 06:06:49.759: WARN/System.err(1546): at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:485)
10-14 06:06:49.769: WARN/System.err(1546): at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:418)
10-14 06:06:49.769: WARN/System.err(1546): at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:351)
10-14 06:06:49.769: WARN/System.err(1546): at com.sun.prism.impl.BaseContext.validateClearOp(BaseContext.java:116)
10-14 06:06:49.769: WARN/System.err(1546): at com.sun.prism.es2.ES2Graphics.clear(ES2Graphics.java:78)
10-14 06:06:49.769: WARN/System.err(1546): at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:460)
10-14 06:06:49.769: WARN/System.err(1546): at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:331)
10-14 06:06:49.779: WARN/System.err(1546): at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:88)
10-14 06:06:49.779: WARN/System.err(1546): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
10-14 06:06:49.779: WARN/System.err(1546): at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:276)
10-14 06:06:49.779: WARN/System.err(1546): at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
10-14 06:06:49.779: WARN/System.err(1546): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-14 06:06:49.779: WARN/System.err(1546): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-14 06:06:49.779: WARN/System.err(1546): at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:129)
10-14 06:06:49.779: WARN/System.err(1546): at java.lang.Thread.run(Thread.java:841)
10-14 06:06:49.779: INFO/GLASS(1546): glass_view_drawEnd


I track the error down to, compileShader in ES2Shader.java on line 130. This is returning 0 from native code. 
The native codes looks okay for me and the Android Simulator is supposed to emulate OpenGL ES 2.0 correclty, so I am not sure
why the compileShader returns 0...

 	int vertexShaderID = glCtx.compileShader(vert, true);
        if (vertexShaderID == 0) {
            throw new RuntimeException("Error creating vertex shader"); //<<--- this Exception occours.
        }

I know this is the common error from the shader compiler, but this should have worked for you, 
when you started your own application. Do you have a hint, what I could have been done wrong?

I assume right now that the native build is correctly, since it is called from java and it does 
return the correct EGLContext. This assumption might be wrong.


regards
Matthias




Am 12.10.2013 um 14:04 schrieb Tomas Brandalik <tomas.brandalik at oracle.com>:

> I think that PlatformLogger initialization in CssHelper was causing problems. I had to write one. Not 100% sure though I will look at it when I'm back in the office. (Or you can comment out css processing in the node.) I was able to run without font then.
> 
> -Tomas
> 
> 
> On 10/11/2013 06:22 PM, Tom Schindl wrote:
>> On 11.10.13 18:10, Matthias Hänel wrote:
>>> Hi Tomas,
>>> 
>>> 
>>> today, I took the time to investigate a little more time on this.
>>> 
>>> 1. I build an entirely new openjfx78 build for android
>>> 2. starting this gave me several errors that lead me to the
>>> conclusion that I need a java6 openjfx
>>> 3. based on openjfx78 I ported it back to java6 (adapted gradled scripts, and tons of java source code)
>>> 4. Now it's almost running on an 18th android. All libraries are firing up until the CssStyleHelper
>>> is called with a static call to createStyleHelper.
>>> 
>>> That looks like the font stuff is not in jfx78. That's why "new Font" returns with null and therefore
>> On OS-X font stuff is definately there in jfx78, but the low-level font
>> stuff is loaded using reflection (at least this was the cause on robovm)!
>> 
>> Tom
> 



More information about the openjfx-dev mailing list