There might be other issues with the early access. The shared NIO buffer
feature should be behavior-neutral if you don't use it. So either there
is some other issue with it, or there is a bug.
Given the number of changes since that early access, both in the JavaFX
13 code base and in the PR itself, it seems worth making a new early
access for people to try. I'll also do some local testing both with GTK
2 and GTK3.
-- Kevin
On 7/5/2019 10:35 PM, Ty Young wrote:
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?