Skip to content

X.org graphics driver for ARM graphics(with Zynq UltraScale+ MPSoC)

License

Notifications You must be signed in to change notification settings

ikwzm/xf86-video-armsoc-xilinx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xf86-video-armsoc-xilinx
========================
Open-source X.org graphics driver for ARM graphics(with Zynq UltraScale+ MPSoC)

Original: https://anongit.freedesktop.org/git/xorg/driver/xf86-video-armsoc.git

Build Debian Package
--------------------

### Install packages required for build

```console
shell$ apt install libdrm-dev libudev-dev libxext-dev pkg-config x11proto-core-dev x11proto-fonts-dev x11proto-gl-dev x11proto-xf86dri-dev xutils-dev xserver-xorg-dev quilt dh-autoreconf debhelper
```

### Generate configure and Makefile

```console
shell$ ./autogen.sh
     :
shell$ make distclean
     :
```

### Build binary packages

```console
shell$ sudo debian/rules binary
```

```console
shell$ cd ..
shell$ dpkg --info xserver-xorg-video-armsoc-xilinx_1.4-2_arm64.deb 
 new Debian package, version 2.0.
 size 34108 bytes: control archive=832 bytes.
     501 bytes,    12 lines      control              
     614 bytes,     7 lines      md5sums              
 Package: xserver-xorg-video-armsoc-xilinx
 Source: xf86-video-armsoc-xilinx
 Version: 1.4-2
 Architecture: arm64
 Maintainer: ikwzm <ichiro_k@ca2.so-net.ne.jp>
 Installed-Size: 99
 Depends: libc6 (>= 2.17), libdrm2 (>= 2.4.36), libpixman-1-0, xserver-xorg-core
 Provides: xorg-driver-video
 Section: x11
 Priority: optional
 Homepage: <https://github.com/ikwzm/xf86-video-armsoc-xilinx>
 Description: X.Org X Server -- ARM SoC display driver for rockchip, amlogic, sunxi and Xilinx(ZynqMP) DRM (mainline kernel)
```
Install Debian Package
----------------------

```console
shell$ sudo dpkg -i xserver-xorg-video-armsoc-xilinx_1.4-2_arm64.deb 
(Reading database ... 104374 files and directories currently installed.)
Preparing to unpack xserver-xorg-video-armsoc-xilinx_1.4-2_arm64.deb ...
Unpacking xserver-xorg-video-armsoc-xilinx (1.4-2) over (1.4-1) ...
Setting up xserver-xorg-video-armsoc-xilinx (1.4-2) ...
Processing triggers for man-db (2.8.5-2) ...
```

Configuration xserver-xorg-video
--------------------------------

/etc/X11/xorg.conf

```conf:/etc/X11/xorg.conf
Section "Device"
	Identifier	"ZynqMP"
	Driver		"armsoc"
	Option		"DRI2"			"true"
	Option		"DRI2_PAGE_FLIP"	"false"
	Option		"DRI2_WAIT_VSYNC"	"true"
	Option		"DEBUG"			"false"
EndSection

Section "Screen"
	Identifier	"DefaultScreen"
	Device		"ZynqMP"
EndSection
```

DRM driver selection
--------------------
While most operations use only the standard DRM modesetting interfaces, certain operations
unavoidably rely on specific driver behaviour (including dumb buffer allocation flags and cursor
plane z-ordering). As such, the armsoc driver should choose a particular DRM driver dynamically
according to the current environment.

The currently supported DRM drivers are:
- pl111
- exynos
- kirin
- sti
- xilinx

For other drivers, you will need to implement this support yourself. A template implementation is
provided in src/drmmode_template.
The interface is defined and documented in src/drmmode_driver.h, and you should refer to this while
modifying the template to set up your DRM driver's abstraction appropriately.

You can also copy src/drmmode_template into src/drmmode_<yourdrivername>,
modify the driver_name to match with the name used in the kernel drm driver.

Summary of bo reference counting
--------------------------------
The Screen takes a ref on the scanout bo in InitScreen and drops it in ScreenClose. When the scanout bo changes
(due to a flip or a modeset) the ref is moved from the old bo to the new one by set_scanout_bo.

Pixmaps take a ref on their bo(s) when created in ARMSOCCreatePixmap2 and drop it in ARMSOCDestroyPixmap.
If ARMSOCModifyPixmapHeader points a pixmap at anything other than the scanout bo then the ref to
the existing bo (if any) is dropped.
If ARMSOCModifyPixmapHeader points a pixmap at the scanout bo the ref is moved from the old bo to the new
If ARMSOCModifyPixmapHeader changes the size of the pixmap's bo the ref is dropped, a new bo created and a
ref taken on that.

resize_scanout_bo creates and takes a ref on the new bo and drops its ref when the new bo becomes the scanout bo and
the Screen has taken a ref.

The swap chain takes a ref on the src and dst bos when a swap is scheduled in ARMSOCDRI2ScheduleSwap and drops them
in ARMSOCDRI2SwapComplete after the src becomes pARMSOC->scanout and the screen takes a ref. 

The cursor takes a ref on its bo in drmmode_cursor_init and drops it in drmmode_cursor_fini




pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy