On 6/7/19 4:40 AM, Johan Vos wrote:
The PR discussed in https://github.com/javafxports/openjdk-jfx/pull/472,
addressing https://bugs.openjdk.java.net/browse/JDK-8167148 provides a
very
much wanted feature. It is important that things are done in the right way
so that the code can be maintained in the long-term future.
Therefore, feedback on this PR is extremely important before we can
consider merging it. Once this PR is merged, there is no easy way back. It
is possible to add more functionality, hence my preference is to only
implement the functionality that is safe and stable, while allowing other
functionality to be added later or by third-party extensions. (e.g.
(avoiding) copying from/to GPU)
To make it easier to give feedback, we've build early access versions of
SDK's including this PR. Note that the PR is not merged, hence not
available in the regular EA downloads!
If you want to give it a try, download the SDK's from the URL's below.
There is a test in tests/manual/graphics/PixelBufferPerformanceTest (
https://github.com/arapte/openjdk-jfx/blob/JDK-8167148-NIO-ByteBuffer/tests/manual/graphics/PixelBufferPerformanceTest.java)
that should get you started.
https://download2.gluonhq.com/openjfx/forks/pixelbuffer/openjfx-13-pixelbuffer-ea+9_linux-x64_bin-jmods.zip
https://download2.gluonhq.com/openjfx/forks/pixelbuffer/openjfx-13-pixelbuffer-ea+9_linux-x64_bin-sdk.zip
https://download2.gluonhq.com/openjfx/forks/pixelbuffer/openjfx-13-pixelbuffer-ea+9_osx-x64_bin-jmods.zip
https://download2.gluonhq.com/openjfx/forks/pixelbuffer/openjfx-13-pixelbuffer-ea+9_osx-x64_bin-sdk.zip
https://download2.gluonhq.com/openjfx/forks/pixelbuffer/openjfx-13-pixelbuffer-ea+9_windows-x64_bin-jmods.zip
https://download2.gluonhq.com/openjfx/forks/pixelbuffer/openjfx-13-pixelbuffer-ea+9_windows-x64_bin-sdk.zip
- Johan
FYI this SDK causes a hard system crash when GTK is set to 2 and/or
prism.forceUploadingPainter is set to true. I don't feel like
purposefully crashing my system to see which of the various combinations
is the issue so forgive me for not providing a more narrowed down cause.
GTK 2 is still necessary as there are still lingering GTK3 bugs that
have yet to be fixed even in current JavaFX 13.
prism.forceUploadingPainter is a prism setting that fixes buffer resets
and other various GUI glitching under Linux(an issue I tried reporting a
long time ago) which affects ALL JavaFX applications under Linux but
dramatically increases GPU utilization by 2x-2.5x when doing any kind of
application interaction(resizing, scrolling, etc). Is there a reason
this isn't enabled by default under Linux besides performance? Where is
the documentation for this and other settings? I randomly ran into this
from http://werner.yellowcouch.org/log/javafx-8-command-line-options/
and was surprised noone really knows about it nor is it documented
anywhere that I can see.
Even with GTK 3 this results in a null pointer exception:
java.lang.NullPointerException
at
javafx.graphics/com.sun.prism.es2.ES2SwapChain.createGraphics(ES2SwapChain.java:223)
at
javafx.graphics/com.sun.prism.es2.ES2SwapChain.createGraphics(ES2SwapChain.java:40)
at
javafx.graphics/com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:87)
at
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at
java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at javafx.graphics/com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at
javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125
Please don't merge this into JDK13 or at least provide a switch to
disable it. This is extremely busted on Linux.
Can the source code for this entire JavaFX build please be linked?