DRI, or Direct Rendering Infrastructure, is a technique to speed up access to graphics hardware in order to benefit bandwidth-hungry 3D applications under XFree86. In order to get this working on the 855GM chipset a few things are needed. The kernel needs DRM (Direct Rendering Manager) support for the chipset and the X server needs to be set up to take advantage of this.

First of all, the kernel. Both recent 2.4 and 2.6 kernels have DRM support for the 855GM chipset using the i830 driver (note that AGP support needs to be enabled in the kernel to be able to use this driver). Additionally, the 2.6 kernel has the i915 driver, which is used by more recent X servers, such as the latest X.Org server (make sure you use the right one as DRI might silently fail otherwise). In my case, I still use XFree86 4.3.0, which expects the i830 driver.

Second of all, XFree86. You need 4.3.0 or later (which of course includes the X.Org server). Then configure the X server to use the i810 module, add glx and dri modules as well as a DRI section to the config file. A link to my XF86Config-4 file can be found in the files section (you probably want to change the keyboard to be non-swedish), it also shows how to support external mice and the internal track-point simultaneously.


There were some occasional errors when using the i830 kernel driver with earlier 2.4 kernels (verified with kernel 2.4.21). When using DRI with this module, a switch from X to console mode would occasionally kill X and display an error message similar to this one: [drm:i830_wait_ring] *ERROR* space: 65520 wanted 65528, [drm:i830_wait_ring] *ERROR lockup. The errors have been fixed in later kernels (I do not know exactly which), so make sure to run a recent version.

Once the kernel and XFree86 are set up, you should be good to go. Start the X server, open an xterm and type glxinfo | grep rendering. Hopefully you will get a positive message stating that direct rendering is enabled. If you are having troubles getting DRI to work, I can only refer you to the documentation on the DRI web site.

These are the (not very impressive) results of running glxgears with DRI enabled:

(david@hansolo:~)$ glxinfo | grep rendering
direct rendering: Yes
(david@hansolo:~)$ glxgears /* Windowed mode */
2657 frames in 5.0 seconds = 531.400 FPS
2791 frames in 5.0 seconds = 558.200 FPS
2792 frames in 5.0 seconds = 558.400 FPS
(david@hansolo:~)$ glxgears /* Full screen mode */
378 frames in 5.0 seconds = 75.600 FPS
378 frames in 5.0 seconds = 75.600 FPS
378 frames in 5.0 seconds = 75.600 FPS

I've been told that in order to actually get any hardware acceleration using DRI, you need to be running X with a display depth of 16 bits, not 24 as you'll get with the X config file provided below in the files section.

Under Windows XP it is possible to use the internal LCD in combination with an external CRT in dual-head mode. With dual-head I mean "desktop-of-twice-the-size" and not having duplicate views of the same thing. This feature is unfortunately not supported in XFree86 though, the log files mention "pipe A" and "pipe B" but they're not actually used for anything. Using the keyboard, one can switch between internal, external or "copied-to-both", but not dual-head. It's been indicated to me on the XFree86 mailing list that it's not supported right now and it's not known if it ever will. The discussion on the X.Org mailing list has been a bit more positive so far, but it still remains to be seen whether any progress will be made (details can be found in the X.Org bug tracking system).

In 2.4 kernels there is a specific frame-buffer driver for the 855GM chipset of the G40 laptop. This frame-buffer driver is not present in the 2.6 kernel and after asking David Dawes (the author of the driver) I got the reply that he does not have the access to the hardware anymore and that he has heard no interest from someone else to port the 2.4 driver to 2.6. Thus it seems like 855GM owners will be stuck with the VESA frame-buffer driver for now.

It should also be noted that Intel has made a driver of their own which might improve performance and enable more features of the card. I haven't tried it and their website creates horrible URLs so if you're interested, you'll have to find it yourself by searching their website (thanks to Daemon Bernstein for the tip).