Building the DRI

Brian's Guide

Brain wrote up a set by step set of instructions for what he did to setup the 3dfx version of the DRI on his machine. Brian's quick and dirty instructions for compiling, installing, and testing the Voodoo 3 driver

What do I do with this stuff?

Prerequisites

You'll be much happier if you have a faster net connection. There's a lot of files to download from SourceForge. On my 384k DSL line it takes about 10 minutes to download a whole tree.

You'll be happier if you have a fast processor. On a PIII-550, it takes about half an hour to do a make World.

Finally, you'll need about 400MB to do a full build of the X server.

  1. Glide3x. You can pick up glide3x from SourceForge or from the DRI resources page You must install the library and the headers before compiling X.
  2. To start, you must checkout a rather large X tree. You'll only need to do this once, so it may be worthwhile to do this at night.
    cvs -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri login
    cvs -z3 -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri co xc
  3. Next you'll need to build all of X. To do this, you must
    cd xc/xc
    make World |& tee /usr/tmp/Make.World
  4. When the compile completes you'll find you've created an X server and a set of OpenGL libraries. Check /usr/tmp/Make.World. Search for '***'. You shouldn't find it. If you do, you've had some sort of compilation error.
  5. Installing this is sort of tricky. It is probably easiest to start with a binary installation. (You can get the libglide3.so from the resources page) Once the binary installation is complete you want to install the server by doing, as root,
    cd xc/xc/programs/Xserver
    make install

    Next you'll need to copy the OpenGL library into place by doing
    cd xc/lib/GL
    make install

    Finally, you make want to fix the language support by doing
    cd nls
    xmkmf
    make
    make install
  6. Next you'll need to build and install the device driver.
    cd xc/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel
    make -f Makefile.linux

    This creates a tdfx.o module. Now you'll need to install the module. As root, you can do
    /sbin/insmod tdfx.o,
    but you should probably make this part of your default startup.
  7. Once the basic is build is done and installed, you should be able to run 3D applications in a window. This completes the largest portion of the setup work.
  8. If you want to work on the 3D acceleration, then you can concentrate on the code in xc/xc/lib/GL. You can do compiles at that level and create new versions of the libGL.so.1.2 files. You can then install that as above to test with it.
  9. If you want to work on the tdfx 2D driver, you can concentrate on the code in xc/xc/programs/Xserver/hw/xfree86/drivers/tdfx. Doing a build at that level will create the loadable tdfx_drv.o. You can then copy this file to /usr/X11R6/lib/modules/drivers and restart your X server to test it. If you're doing a lot of work in the X server itself then it is worthwhile to set BuildLoadableServer NO and DefaultCCOptions -Wall -g, in xc/xc/config/cf/host.def. Debugging a static server is much easier.
  10. If you're interested in the kernel module then concentrate on the code in xc/xc/programs/Xserver/hw/xfree86/os-support/linux/drm.
  11. If you're interested in the DRI in general, then you need to look at all of the above. Those are the three major pieces that make up any DRI driver.