DriverDevelopment

Revision 4 as of 2008-12-03 00:40:40

Clear message

Developing Xorg Drivers for Ubuntu

This page provides some high level advice and guidance for hardware vendors interested in implementing driver support in Ubuntu for new hardware.

Development Strategy

The X.org project provides video drivers that covers a wide range of graphics hardware. Augmenting one of these drivers or adding a new driver to the X.org project and publishing the hardware documentation are the best strategies to expand support to new hardware.

It may seem expedient to develop a driver some other way, however following these procedures brings a number of important benefits:

  • When upstream makes API changes, they'll update the driver. If you do not follow the standard process, you'll be on your own to provide resources for keeping your driver compatible with newer Ubuntu releases.

  • Increased access to X.org expertise. Risk is issues requiring longer time to resolve.

  • Shortcutting development via reuse of X.org code.

  • Streamline packaging efforts. Otherwise, non-standard drivers can require additional distro overhead for packaging, integrating and supporting them.

  • Improved customer acceptance/adoption. Non-standard drivers risk being dropped later in favor of alternate drivers that do follow the standard processes.

Strategy Example

VIA has produced a wide range of graphics hardware, and typically provided proprietary drivers for them. Meanwhile the open source community produced the -openchrome driver for VIA hardware. VIA found it advantageous to collaborate with this community on open source drivers for their hardware, by assisting with adding multi-head support and RandR functionality, and by providing programming manuals for chipsets they wish to be supported by this driver.

X.org Development Conventions

X.org drivers adhere to the following policies:

  • License: MIT/X11
  • Version control: git at freedesktop.org

  • Bug tracker: bugzilla at freedesktop.org

A document on X11 driver design explains how to develop a driver to fit the X.org policies.

Driver Examples

The -vesa driver can be used as an example of an X11 driver in miniature. While simple, it conforms to the Xserver requirements and is kept up to date.

Existing drivers like -intel, -ati, -radeon, -openchrome, and others may serve as good examples to derive from, depending on the nature of the hardware you're developing on.