Difference between revisions of "Graphics"

From Rockchip open source Document
Jump to: navigation, search
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:X11 structure.png|RTENOTITLE]]
+
[[File:Xserver gpu.png]]
  
 
=== DDX(armsoc) ===
 
=== DDX(armsoc) ===
Line 69: Line 71:
 
=== Structure ===
 
=== Structure ===
  
[[File:Wayland structure.png]]
+
[[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: &nbsp;''glmark2-es2-wayland''<br/> glmark2-es2 can get from https://github.com/glmark2/glmark2
+
3D preformance: &nbsp;''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
  
 +
&nbsp;
  
 
== Graphics with None ==
 
== Graphics with None ==
Line 104: Line 106:
 
=== Structure ===
 
=== Structure ===
  
[[File:Mali driver structure.png]]
+
[[File:Mali gpu.png]]
  
 
== Mali Build option ==
 
== Mali Build option ==
Line 116: Line 118:
 
=== Structure ===
 
=== Structure ===
  
[[File:Drm structure.png]]
+
[[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&nbsp;<br/> as Mesa and 2D drivers) to communicate with the Kernel by the means of the DRI&nbsp;<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&nbsp;<br/> as Mesa and 2D drivers) to communicate with the Kernel by the means of the DRI&nbsp;<br/> protocol.
  
 
=== Mailing list ===
 
=== Mailing list ===
  
General developers discussions occur on the dri-devel@lists.freedesktop.org&nbsp;<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&nbsp;<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


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

Xserver gpu.png

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:

  1. support common x11 display and Hwcursor
  2. DRI2 (request by EGL X11 client)
  3. 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

Wayland.png

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 gpu.png

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

DRM.png

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 FreedesktopARMArch wiki…..