...
The older versions Raspberry Pi Raspian preallocate a fixed amount of the system memory for use by the video engine (VRAM). The utility raspiraspi_config
can be used to alter how much memory is allocated to VRAM.
...
The minimum recommended memory split for JFX on the Pi is 128mb128 MBytes, with many applications requiring 256mb256 MBytes.
JavaFX contains a texture caching mechanism that attempts to work within a limit of VRAM. Unfortunately, there is not an standard means of determining how much VRAM is available to start, nor is there a way to estimate the efficiency of that allocation. This is similar to standard malloc()
which employs bucket mechanisms for efficiency but means that a small allocation will consume the nearest minimum bucket size.
This JFX JavaFX texture caching mechanism currently defaults to 256 MB MBytes - a value that will likely exceed what is available on the Pi. Remember that the allocated VRAM will also be consumed by the framebuffer (width * height * 2 byte per pixel * 2 for swapping) as well as any other system needs.
Given the limited amount of VRAM on the Pi, it is quite possible that an image intensive application might fail when the cache exceeds the available system limit.
The property setting -Dprism.maxvram=90M
can be used to set the JFX JavaFX texture cache limit, and in this example, setting it to 90 MB. This value would be a good starting value for a memory split of 256MB for VRAM.
To debug the JFX application failure, -Dprism.poolstats=true
can be used to monitor the texture pool to better determine the upper limit.
In general, JFX JavaFX will try to use no more than -Dprism.targetvram=xx
, freeing textures when this value is exceeded. Least used textures will be discarded, and recreated on need. The default for this setting is calculated as 75% of the maxvram setting, equal to 45M for the example of 90M. This setting may be overly aggressive for some applications, and experimentation with a larger value and -Dprism.poolstats=true
may result in more performance.
...
A touch screen attached to the Raspberry Pi generates both TouchEvent
s and MouseEvent
s. Only a single touch point is supported by default, but there is experimental support for multitouch events. To enable multitouch, set the system property -D
com.sun.javafx.experimental.embedded.multiTouch=true
on the Java command lineThe Monocle subsystem in the latest OpenJFX sources support a wider range of touch screens than the 8u6 release does and also supports calibration.