JAVAFX on ANDROID
Matthias Hänel
haenel at ultramixer.com
Mon Oct 14 04:45:56 PDT 2013
Hi Tomas,
never mind, I found the problem over here in the simulator ;) I had to activate the GPU support.
So, now I had to BGRA image format for Android and now I get JFX up and running without fonts.
There are two things missing:
1. fonts - here we probably need to get pango working for Android right?
2. touch events - I saw that you have got a special Android proxy for the input stuff Java_com_oracle_dalvik_FXActivity_00024InternalSurfaceView_onTouchEventNative
This seems to crash for some reason. any idea? It's not that complicated but it is producing a stack trace.
After fixing the touch events Brickbreaker with Niklas' no-font-patch should work. I'd pleased to test this.
kind regards
Matthias
Am 14.10.2013 um 12:17 schrieb Matthias Hänel <haenel at ultramixer.com>:
> 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