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
ikwzm/xf86-video-armsoc-xilinx
X.org graphics driver for ARM graphics(with Zynq UltraScale+ MPSoC)
CMIT