Difference between revisions of "Raspberry Pi"

From JogampWiki
Jump to navigation Jump to search
(Raspberry Pi compatibility)
(JogAmp API compatibility)
Line 87: Line 87:
 
|style="background: green" |Working, well tested
 
|style="background: green" |Working, well tested
 
|}
 
|}
 
+
== JogAmp API compatibility ==
 +
{| class="wikitable" cellpadding="10"
 +
|
 +
| com.jogamp.graph.* (graph: shader based resolution independent curve and text rendering API)
 +
| com.jogamp.newt.opengl.GLWindow (newt)
 +
| com.jogamp.newt.javafx.NewtCanvasJFX (javafx)
 +
| com.jogamp.newt.awt.NewtCanvasAWT (awt/swing)
 +
| com.jogamp.newt.swt.NewtCanvasSWT (swt)
 +
| com.jogamp.opengl.awt.GLCanvas (awt/swing)
 +
| com.jogamp.opengl.swt.GLCanvas (swt)
 +
| style="text-align:center;" colspan=1 | Mesa X11
 +
|-
 +
|armv6hf Broadcom DispmanX from console or X11 Overlay
 +
|style="background: red" |ES2 Driver do not support OES_standard_derivatives dFdx dFdy
 +
|style="background: green" |Working, well tested
 +
|untested
 +
|Incompatible
 +
|Incompatible
 +
|Incompatible
 +
|-
 +
|armv6hf/aarch64 Mesa DRM/GBM using fake KMS from console
 +
|style="background: red" |ES2 Driver do not support OES_standard_derivatives dFdx dFdy
 +
|style="background: green" |Working, well tested
 +
|Incompatible
 +
|Incompatible
 +
|Incompatible
 +
|Incompatible
 +
|-
 +
|intel Mesa DRM/GBM from console
 +
|style="background: green" |Working, well tested
 +
|style="background: green" |Working, well tested
 +
|Incompatible
 +
|Incompatible
 +
|Incompatible
 +
|Incompatible
 +
|-
 +
|armv6hf/aarch64 Mesa X11
 +
|style="background: green" |Working, well tested
 +
|style="background: green" |Working, well tested
 +
|Incompatible (openjfx expects Broadcom DispmanX on arm)
 +
|style="background: green" |Working
 +
|style="background: green" |Working
 +
|style="background: green" |Working
 +
|}
 
== Raspberry Pi armv6hf setup: ==
 
== Raspberry Pi armv6hf setup: ==
 
Minimal system setup:
 
Minimal system setup:

Revision as of 11:24, 6 December 2019

Raspberry Pi compatibility

Raspberry Pi contains support for rendering on using eight configurations:

  1. armv6hf Broadcom DispmanX (*)
  2. armv6hf Broadcom DispmanX overlay on top of X11 (+)
  3. armv6hf Mesa DRM/GBM using full KMS (+) Unstable Driver
  4. armv6hf Mesa DRM/GBM using fake KMS (*)
  5. armv6hf Mesa X11 (*)
  6. aarch64 Mesa DRM/GBM using full KMS (+) Unstable Driver
  7. aarch64 Mesa DRM/GBM using fake KMS (*)
  8. aarch64 Mesa X11 (*)

(*) full support by JogAmp WIP

(+) code available by JogAmp w/o full support

NS = Not Supported

WIP = Work in Progress

armv6hf rasbian Broadcom DispmanX Mesa DRM/GBM Console
Console (*) X11 Overlay (+) True KMS w/o BCM (+) Fake KMS w/ BCM (*) Mesa X11 (*)
Raspberry Pi 4 NS by BCM driver NS by BCM driver Unstable Driver Working Working, well tested
Raspberry Pi 3a 3b 3b+ Working, well tested Working Unstable Driver Working Working
Raspberry Pi 2a 2b 2b+ Working, well tested Working Unstable Driver Working Working
Raspberry Pi 1 Zero W Working, well tested Working Unstable Driver Available, not recommended,
heavy on CPU
Available, not recommended,
low RAM and heavy on CPU
RAM usage for running TestGearsES2NEWT 42Mb 56Mb + 36Mb (xorg) 82Mb 82Mb + 43Mb (xorg)


aarch64 debian Mesa DRM/GBM Console
True KMS w/o BCM (+) Fake KMS w/ BCM (*) Mesa X11 (*)
Raspberry Pi 4 Unstable Driver Working Working, well tested
Raspberry Pi 3b 3b+ Unstable Driver Working Working, well tested

JogAmp API compatibility

com.jogamp.graph.* (graph: shader based resolution independent curve and text rendering API) com.jogamp.newt.opengl.GLWindow (newt) com.jogamp.newt.javafx.NewtCanvasJFX (javafx) com.jogamp.newt.awt.NewtCanvasAWT (awt/swing) com.jogamp.newt.swt.NewtCanvasSWT (swt) com.jogamp.opengl.awt.GLCanvas (awt/swing) com.jogamp.opengl.swt.GLCanvas (swt) Mesa X11
armv6hf Broadcom DispmanX from console or X11 Overlay ES2 Driver do not support OES_standard_derivatives dFdx dFdy Working, well tested untested Incompatible Incompatible Incompatible
armv6hf/aarch64 Mesa DRM/GBM using fake KMS from console ES2 Driver do not support OES_standard_derivatives dFdx dFdy Working, well tested Incompatible Incompatible Incompatible Incompatible
intel Mesa DRM/GBM from console Working, well tested Working, well tested Incompatible Incompatible Incompatible Incompatible
armv6hf/aarch64 Mesa X11 Working, well tested Working, well tested Incompatible (openjfx expects Broadcom DispmanX on arm) Working Working Working

Raspberry Pi armv6hf setup:

Minimal system setup:

  1. Raspbian Buster Lite
  2. Updating Raspbian
    • apt update
    • apt dist-upgrade
    • apt autoremove
  3. Installing OpenJDK, OpenGL libraries etc
    • apt install openjdk-11-jre-headless openjdk-11-jdk-headless ant libdrm2 libgbm1 libgles2 libgles1 libegl1 libgl1-mesa-dri libxrandr2 libxcursor1 mesa-utils-extra

Then enable ssh, rsync or any other means to transfer the JogAmp cross-build to the target platform.

Raspberry Pi armv6hf Mesa DRM/GBM from console test setup:

Ready

DRM/GBM Console tests must be launched from the physical console, otherwise the software OpenGL driver will be used. We have to investigate what (environment variable) causes this.

Raspberry Pi armv6hf Mesa X11 test setup:

Additional packages:

  1. apt install xinit
  2. startx

Ready

Open Raspberry Pi Pullrequest

Raspberry Pi troubleshooting

Enable Mesa DRM/GBM from console or Mesa X11 for: Raspberry Pi 3a 3b 3b+ 2a 2b 2b+

  • Edit /boot/config.txt . At the end of the file uncomment the dtoverlay=vc4-fkms-v3d line, to look like this:
[all]
dtoverlay=vc4-fkms-v3d

Enable Mesa DRM/GBM from console or Mesa X11 for: Raspberry Pi 1 Zero W

  • Edit /boot/config.txt . At the end of the file add dtoverlay=vc4-kms-v3d,cma-128 line, to look like this:
[all]
dtoverlay=vc4-kms-v3d,cma-128

System freeze during bootup

JogAmp have noticed that some microsd cards can cause the Raspberry Pi system to suddenly stop, especially during bootup, when the Pi is switching the sdcard transfer mode from PIO to DMA. An effective workaround for stability is to instruct the Raspberry Pi system to stay in PIO mode by adding the following lines to /boot/config.txt

# Tunes the bcm2835-sdhost SD/MMC driver
dtoverlay=sdtweak,force_pio=1
dtparam=sd_force_pio=on

Raspberry Pi 1 Zero W: Server VM is only supported on ARMv7+ VFP

Raspbian OpenJDK 11 only supports Raspberry Pi 2 and later CPUs. However, you can still use openjdk-8 that supports the Pi 1 Zero W CPU:

apt install openjdk-8-jre-headless
/usr/lib/jvm/java-8-openjdk-armhf/bin/java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b01-1+rpi1-b01)
OpenJDK Client VM (build 25.212-b01, mixed mode)