This article will give an overview of how graphics are generated on a rockchip platform.
Graphics with X11
Xserver is the display system used on regular desktop Linux platforms.
Xserver usually have a good compatibility, but the performance may be little less and its size is more large than other display system.
Gstreamer X11 sink have DRM 4k-Video render support(though hacky).
X11 structure in Linux OS
source code: git clone email@example.com:markyzq/xf86-video-armsoc.git
The DDX support:
- support common x11 display and Hwcursor
- DRI2 (request by EGL X11 client)
- umplock(support non-tearing on EGL x11 client)
/etc/X11/xorg.conf: Xserver will parse this config to find DDX and configure info
Section "Device" Identifier "Mali-Fbdev" Driver "armsoc" Option "UMP_LOCK" "true" EndSection Section "Screen" Identifier "Default Screen" Device "Mali-Fbdev" DefaultDepth 24 EndSection
source code: wget http://malideveloper.arm.com/downloads/drivers/DX910/r6p1-
Patch the umplock patch to kernel, then you can find the umplock device node:
Don't forget enable DDX umplock option:
Option "UMP_LOCK" "true"
The umplock only use for x11 graphic stack, no need for wayland, because mali
already do the wayland sync on its driver.
X11 performance Test
X11perf tools can easy get from x11-apps.
glmark2-es2 can get from https://github.com/glmark2/glmark2
The glmark2-es2 source code can also build for x11, drm(gbm) and wayland.
Graphics with Wayland
Weston is the reference implementation of a Wayland compositor, and a
useful compositor in its own right.
Rockchip don't do much develop in wayland at current, but wetson are tested that can run in rk3288 and rk3399.
Graphics with None
If you don't want to use X11 or wayland, there are some chooses for you.
Libdrm and libmali-gbm can be used to draw UI without display systems.
QT can work without x11 or wayland, it run Qt5 applications on top of EGL(libmali-gbm).
WIth qt eglfs, video player can reach 1080-60fps.
Test platform: rk3288