xf86-video-armsoc Open-source X.org graphics driver for ARM graphics

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 must be configured for a particular DRM driver.

The currently supported DRM drivers are: - pl111 - exynos

To configure armsoc for one of these, pass the --with-drmmode option to ./configure. For example:

$ ./configure --with-drmmode=pl111

For other drivers, you will need to implement this support yourself. A template implementation is provided in src/drmmodetemplate which can be built by passing --with-drmmode=template to ./configure. The interface is defined and documented in src/drmmodedriver.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/drmmodetemplate into src/drmmode and build with:

$ ./configure --with-drmmode=

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 setscanoutbo.

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.

resizescanoutbo 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 drmmodecursorinit and drops it in drmmodecursorfini