Skip to content
Kay Kasemir edited this page Jun 13, 2023 · 8 revisions

JavaFX Details

JavaFX works best when it can use accelerated graphics and runs directly on a host. Running via ssh -X might work, but will always be much slower. Similarly, executing inside a VM tends to be slower. Thinlinc, a commercial type of VNC, tends to be acceptable.

On Linux, JavaFX uses GTK, and can run with either GTK 2 or GTK 3, albeit GTK 2 support is deprecated and about to be removed. It will default to the newer version, but a specific version can be requested via -Djdk.gtk.version=2 or -Djdk.gtk.version=3.

If for example drag/drop of panels acts erratically, try running with -Djdk.gtk.version=2.

Note that any of these -D.. options need to be added to the launcher script. If your phobus.sh currently contains something like this:

java -jar $JAR $OPT "$@" &

change that to for example

java -Djdk.gtk.version=3 -Djdk.gtk.verbose=true -jar $JAR $OPT "$@" &

Starting the application with -Dprism.verbose=true and -Djdk.gtk.verbose=true will show which graphics pipeline is used. es2, the accelerated graphics pipeline, is good. sw, the software pipeline, is slow and should be avoided except in very rare cases like https://github.com/ControlSystemStudio/phoebus/issues/512, where -Dprism.order=sw can be used to enforce it.

Generally, setting -Dprism.forceGPU=true can help convince JavaFX to use the accelerated graphics hardware.

See also Graphics Performance