TTM/GEM and KMS support

Support for TTM/GEM and KMS is currently in progress.

The development of the kernel part is done in a git repository hosted at

The development of the X driver part was done in the kms_branch branch of the git repository at The development is now done in the master branch.


Updates are posted on an irregular basis in the openchrome-devel mailing list.

The plan moving forward is :

  • RandR support
  • TTM support (needs support in the kernel)
  • KMS support (needs support in the kernel)
  • DRI2 support (needs support in the kernel)

At this time (April 2013),

  • (kernel) TTM/GEM support is almost complete.
  • (kernel) KMS for VGA is working nicely.
  • (kernel) KMS for LVDS is mostly working.
  • (kernel) KMS for HDMI/DVI is in the works.
  • (kernel) KMS for DP is not started.
  • (kernel) KMS for TV is not started.
  • (X driver) xf86-video-openchrome 0.3.0 has been released in July 2012. It features both UMS and KMS support.
  • (X driver) RandR 1.2 support is mostly ok.



Get the drm-openchrome git tree, configure it then build :

git clone git://
cd drm-openchrome
make menuconfig

Since the 2.6.32 kernel, a new feature allows you to update the configuration to only compile modules that are actually used in your system:

make localmodconfig

The following command is used to compile and install the Linux Kernel. It will take some time to complete it, approximately 40 min to 50 min it depends on your system configuration.

make && sudo make modules_install && sudo make install

Indeed, you should at least have your kernel configured to build the via drm module. Make sure your .config contains this line :


At menuconfig, via drm could be found in Device Drivers -> Graphics support -> Direct Rendering Manager -> Via unichrome cards.

Some distros (Ubuntu, Fedora, possibly others) are providing their kernel config in /boot/config-uname -r`. You can use this config as a base by copying it as.config` into the drm-openchrome tree.

KMS is not enabled by default, you need to enable it by passing the following argument to the kernel :


X driver

Starting with release 0.3.0, the X driver supports both UMS and KMS.