Loki GL driver support pages/Matrox

Step by Step installation guide for Matrox (pre-DRI)

The current driver for Matrox G400 and G200 is provided by the "Utah" Accelerated X Open Source group, hosted at http://glx.on.openprojects.net/. This driver offers a bunch of options, and is still under development. There are several components, some of them optional, which are installed in your system: the X server, the GLX module, the GL library, AGP devices, or DMA configuration. We do not install any of these components, and at the moment provide only a GL library with the game. We also use only agpgart and avoid both newagp and DMA, both of which have stricter system requirements. The source to generate the matching GLX and devices for the GL libraries we shipped is provided below. In all likelihood, we will replace them soon with a more current snapshot, following internal tests. We hope that the following instructions will aide you in deciding which configuration to use.

For further information see the FAQ at http://utah-glx.sourceforge.net/faq.html. There is also a guide for setting things up for Quake3 (test version), at http://www.execpc.com/~tz/linglxqs.txt.

Step 1: Get X Server

GLX for Matrox has no special requirements, as long as you use a recent XF86_SVGA-3.3.5 server for your distribution.

Step 2: Get GLX/GL/devices

The "Utah" GLX requires a snapshot of the Mesa sources for compilation. See our Mesa page for references.

You will then need the GLX source itself, and, if you intend to use AGP support, the source for a AGP related device. If you intend to use a DMA configuration (which might require changing your LILO boot parameters), please consult the "Utah GLX" pages at http://utah-glx.sourceforge.net/. The "Utah" GLX team is in the process of replacing the agpgart device with newagp (which requires you to upgrade your system to a recent, unstable kernel), again, please consult their documentation and mailing list archives. Currently, we offer assistance for the agpgart solution only.

You can download the GLX source snapshot glx-src-991121.tar.gz we are testing our games with. There will be more recent snapshots in the future, pending internal testing. You can obtain daily, but usually untested snapshots from the CVS or pre-packed at http://utah-glx.sourceforge.net/download.html, in particular http://matroxusers.com/driver/linux.html. Matrox' site at http://www.matrox.com/mga/drivers/3rd_party/glx.htm also offer untested daily snapshots.

Step 3: Install the AGP device

If you intend to use DMA, or newagp, or if you are using a kernel that has AGP/GART support already, please skip this section.

Unpack glx-src-991121.tar.gz in a directory of your choice. Do

cd glx-src-991121
cd gart
to get into the AGP/GART device directory. Check the Makefile.loki and add SMP support, and/or remove MODVERSIONS, depending on your kernel configuration. We tested with 2.2.13 kernels, a recent stable kernel should work. Use uname -r to find out what kernel you are using. To compile the module, just do
make -f Makefile.loki agpgart.o
You should now have an agpgart.o file. As root, do
cp agpgart.o /lib/modules/[kernel_version]/misc/
where [kernel version] is the output of uname -r. You might also want to add the following line to your module configuration file, e.g. /etc/conf.modules.
alias char-major-174 agpgart
Next, you will have to create the device in /dev/. Please do
make -f Makefile.loki /dev/gart
ls -l /dev/gart
The result should be something like this (be sure to check permissions):
crw-rw-rw-   1 root     root     174,   0 Nov 18 16:51 /dev/gart
Now you can load the module:
/sbin/insmod agpgart.o
/sbin/lsmod
and you should get something like this output:
Module                  Size  Used by
agpgart                 6096   0  (unused)
To test your device:
make -f Makefile.loki testgart
./testgart
and the result would be something like
Gart size: 64
Allocated 64 megs of GART memory
MemoryBenchmark: 187 mb/s
MemoryBenchmark: 191 mb/s
MemoryBenchmark: 191 mb/s
Average speed: 189 mb/s
Testing data integrity : passed.
Congratulations, you have working AGP/GART support now.

Step 4: Install GLX/GL

In the directory where you unpacked glx-src-991121.tar.gz, do

cd glx-src-991121
cd glx
The "Utah" GLX comes with a very convenient configuration setup. Please to check whether you have the necessary tools installed on your system, e.g.
automake --version
autoconf --version
libtool --version
Then, for the AGP GART configuration we describe here, use
./configure --with-mesa=[mesa-3.2-src] --enable-agp
make
where [mesa-3.2-src] is the location of the Mesa 3.2 source snapshot you obtained. Once the compilation is finished, use make install to install the GL library and GLX module in your system.

Next, check your XF86_Config file (usually located in /etc/X11/ and/or /usr/X11R6/lib/X11/) for an entry like

Section "Module"
   Load "glx.so"
EndSection
You will have to restart your X server, as the GLX module is only loaded at startup. As soon as the X server is up again, do
xdpyinfo | grep -i glx
xpyinfo | more
to check whether the GLX extension is now listed as supported:
number of extensions:    20
    ...
    GLX
    ...
Finally, you should copy the new GL into the local directory of the games that support direct loading of a driver.
cp libGL/libGL.so.1.0 /usr/local/games/quake3/libMesaMatroxGL.so.3.2.991125
cp libGL/libGL.so.1.0 /usr/local/games/HereticII/gl_drivers/libMesaMatrox.so
To force using the new GL driver, specify it from the commandline, e.g.
/usr/local/games/quake/quake3 +set r_gldriver libMesaMatroxGL.so.3.2.991125
//usr/local/games/HereticII/heretic2 +set gl_driver libMesaMatrox.so
You will need a patched version of HereticII due to dynamic linkage requirements of GL/GLX combos, and you should make sure to use the Quake3 point release.

Step 5: Alternatives

Matrox has announced a DRI-only driver to be released in 2000.

Step 6: Troubleshooting

If by any means possible, please check the game output to the console. Please look for the output of GL_VERSION, GL_RENDERER and GL_VENDOR on the console. You could also try the news://news.lokigames.com/loki.games.* newsgroups for advice.