Difference between revisions of "Graphics"
Line 1: | Line 1: | ||
+ | |||
= Graphics Introduce = | = Graphics Introduce = | ||
Line 4: | Line 5: | ||
This article will give an overview of how graphics are generated on a rockchip platform. | This article will give an overview of how graphics are generated on a rockchip platform. | ||
+ | | ||
== Graphics with X11 == | == Graphics with X11 == | ||
Line 9: | Line 11: | ||
Xserver is the display system used on regular desktop Linux platforms. | Xserver is the display system used on regular desktop Linux platforms. | ||
− | Rockchip have a custom [[Xserver]] which have enable [https://www.freedesktop.org/wiki/Software/Glamor/ glamor 2D acceleration]. | + | Rockchip have a custom [[Xserver|Xserver]] which have enable [https://www.freedesktop.org/wiki/Software/Glamor/ glamor 2D acceleration]. |
Xserver usually have a good compatibility, but the performance may be little less and its size is more large than other display system. | Xserver usually have a good compatibility, but the performance may be little less and its size is more large than other display system. | ||
Line 19: | Line 21: | ||
X11 structure in Linux OS | X11 structure in Linux OS | ||
− | [[File: | + | [[File:Xserver gpu.png]] |
=== DDX(armsoc) === | === DDX(armsoc) === | ||
Line 69: | Line 71: | ||
=== Structure === | === Structure === | ||
− | [[File:Wayland | + | [[File:Wayland.png]] |
=== Weston === | === Weston === | ||
Line 76: | Line 78: | ||
1. run wayland with drm and gpu renderer | 1. run wayland with drm and gpu renderer | ||
− | |||
<pre style="margin-left: 40px;">export XDG_RUNTIME_DIR=/tmp | <pre style="margin-left: 40px;">export XDG_RUNTIME_DIR=/tmp | ||
weston --backend=drm-backend.so --idle-time=100 </pre> | weston --backend=drm-backend.so --idle-time=100 </pre> | ||
Line 87: | Line 88: | ||
=== Wayland performance test === | === Wayland performance test === | ||
− | 3D preformance: ''glmark2-es2-wayland''<br/> glmark2-es2 can get from https://github.com/glmark2/glmark2 | + | 3D preformance: ''glmark2-es2-wayland''<br/> glmark2-es2 can get from [https://github.com/glmark2/glmark2 https://github.com/glmark2/glmark2] |
<br/> OpenVG test: ''vg_api_tests''<br/> build from mali DDK, build with make bin/vg_api_tests | <br/> OpenVG test: ''vg_api_tests''<br/> build from mali DDK, build with make bin/vg_api_tests | ||
+ | | ||
== Graphics with None == | == Graphics with None == | ||
Line 104: | Line 106: | ||
=== Structure === | === Structure === | ||
− | [[File:Mali | + | [[File:Mali gpu.png]] |
== Mali Build option == | == Mali Build option == | ||
Line 116: | Line 118: | ||
=== Structure === | === Structure === | ||
− | [[File: | + | [[File:DRM.png]] |
=== Source code === | === Source code === | ||
− | mainline source code: git clone git://anongit.freedesktop.org/mesa/drm<br/> LIBDRM is the cross-driver middleware which allows user-space applications (such <br/> as Mesa and 2D drivers) to communicate with the Kernel by the means of the DRI <br/> protocol. | + | mainline source code: git clone [git://anongit.freedesktop.org/mesa/drm git://anongit.freedesktop.org/mesa/drm]<br/> LIBDRM is the cross-driver middleware which allows user-space applications (such <br/> as Mesa and 2D drivers) to communicate with the Kernel by the means of the DRI <br/> protocol. |
=== Mailing list === | === Mailing list === | ||
− | General developers discussions occur on the dri-devel@lists.freedesktop.org <br/> mailing list.<br/> Subscribe to the list at http://lists.freedesktop.org/mailman/listinfo/dri-devel.<br/> Archives are found at http://lists.freedesktop.org/archives/dri-devel/. | + | General developers discussions occur on the dri-devel@lists.freedesktop.org <br/> mailing list.<br/> Subscribe to the list at [http://lists.freedesktop.org/mailman/listinfo/dri-devel http://lists.freedesktop.org/mailman/listinfo/dri-devel].<br/> Archives are found at [http://lists.freedesktop.org/archives/dri-devel/ http://lists.freedesktop.org/archives/dri-devel/]. |
= Kernel Driver porting = | = Kernel Driver porting = |
Revision as of 09:04, 17 March 2017
Contents
Graphics Introduce
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.
Rockchip have a custom Xserver which have enable glamor 2D acceleration.
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).
Structure
X11 structure in Linux OS
DDX(armsoc)
source code: git clone git@github.com:markyzq/xf86-video-armsoc.git
maliline: git://anongit.freedesktop.org/xorg/driver/xf86-video-armsoc
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
UMPLOCK
source code: wget http://malideveloper.arm.com/downloads/drivers/DX910/r6p1-01rel0/DX910-SW-99002-r6p1-01rel0.tgz
Patch the umplock patch to kernel, then you can find the umplock device node:
/dev/umplock
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
2D performace:
x11perf
3D preformace:
glmark2-es2
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.
Structure
Weston
The Weston reference implementation of a Wayland compositor.
1. run wayland with drm and gpu renderer
export XDG_RUNTIME_DIR=/tmp weston --backend=drm-backend.so --idle-time=100
2. run wayland with drm and cpu renderer
weston --backend=drm-backend.so --idle-time=100 --use-pixman
--idle-time: how many seconds the weston got to sleep, it's usefull to test wayland
suspend and resume.
--use-pixman: it's usefull to compare gpu or non-gpu performance and behavior.
Wayland performance test
3D preformance: glmark2-es2-wayland
glmark2-es2 can get from https://github.com/glmark2/glmark2
OpenVG test: vg_api_tests
build from mali DDK, build with make bin/vg_api_tests
Graphics with None
If you don't want to use X11 or wayland, there are some chooses for you.
Interface:
Libdrm and libmali-gbm can be used to draw UI without display systems.
Framework:
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.
MALI GPU driver
Structure
Mali Build option
Build for X11:
VARIANT=mali450-gles20-eb-linux-sse-vg-x11-dma_buf
Build for Wayland:
VARIANT=mali450-gles20-eb-vg-sse-linux-wayland-drm-dma_buf
X11 stack only use gpu x11 backend,
Wayland use two gpu backend, drm(gbm) and wayland
-x11-: x11 backend
-drm-: GBM backend
-wayland: wayland backend
-sse-: similar with neon, Accelerate memcpy on mali, speed up some api like
glTexSubImage2D
-vg-: openVG support, tested with vg_api_tests on wayland backend
-dma_buf-: support dma_buf
LibDRM
Structure
Source code
mainline source code: git clone git://anongit.freedesktop.org/mesa/drm
LIBDRM is the cross-driver middleware which allows user-space applications (such
as Mesa and 2D drivers) to communicate with the Kernel by the means of the DRI
protocol.
Mailing list
General developers discussions occur on the dri-devel@lists.freedesktop.org
mailing list.
Subscribe to the list at http://lists.freedesktop.org/mailman/listinfo/dri-devel.
Archives are found at http://lists.freedesktop.org/archives/dri-devel/.
Kernel Driver porting
Others
For details of the full Linux graphics stack, please refer to online documents in Freedesktop, ARM, Arch wiki…..