GithubHelp home page GithubHelp logo

ikwzm / xf86-video-armsoc-xilinx Goto Github PK

View Code? Open in Web Editor NEW
13.0 3.0 7.0 365 KB

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

License: MIT License

Makefile 1.86% Shell 0.40% M4 1.44% C 96.31%
xserver armsoc x11 drm zynqmp

xf86-video-armsoc-xilinx's Introduction

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 <[email protected]>
 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




xf86-video-armsoc-xilinx's People

Contributors

atseanpaul avatar benjamin-gaignard avatar cooperyuan avatar djkurtz avatar eskilsund avatar ikwzm avatar keith-packard avatar marcheu avatar nullr0ute avatar nwnk avatar paulgeary avatar raysmith-arm avatar robclark avatar robwang-arm avatar sunsun02 avatar xin3liang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

xf86-video-armsoc-xilinx's Issues

build error

hi
i clone this rep in my pc,
when i build
the console show as flow

root@debian:/home/zw/xf86-video-armsoc-xilinx# ./debian/rules binary
dh binary --with quilt,autoreconf,xsf --builddirectory=build/
dh: No packages to build. Architecture mismatch: amd64, want: armhf arm64

i just do as flow

shell$ ./autogen.sh
shell$ make distclean
shell$ sudo debian/rules binary

thanks a lot

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.