Linux Step By Steps

DRI for S3 chipsets

Written by Jerry McBride on 29-March-2004.

Here is the exact step by step procedure I used to enable hardware acceleration on my COMPAQ 700US that sports the S3 TWISTER chip set.  This step will probably work for other S3 chips sets and perhaps other non-mainstream chip sets as well.

The Basic Requirement:

You must be running Xfree86 4.3.0 on gentoo and preferably kernel 2.6.3 or better (not required).

The SxS:

1) First, grab the latest DRI source code from the CVS servers at freedesktop.org

>From a console, execute:
cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/dri login

When prompted for a password, just press enter.

2) Then:
cvs -z3 -d:pserver:anonymous@dri.freedesktop.org:/cvs/dri co -rsavage-2-0-0-branch xc

The source code will download to whatever directory you're in when you call for it. The created source directory starts at;
xc/

3) Once downloaded move to xc/xc/ and execute;
make World

then execute

make install

That will update your Xserver for S3 DRI support.

4) Now the kernel end of it.  Move to
xc/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel
and execute;

make -f Makefile.linux

5) When this completes, for 2.6.x kernels;

mkdir /lib/modules/2.6.x/kernel/drivers/char/drm
cp savage.ko
to the directory just made.

For every other kernel you're on your own as I don't run them anymore.  However, this should still work equally as well, just change the path to fit your needs.  Pre 2.6.x kernel users will want to use the savage.o module.

6) Now, move to /etc/X11/ and make a backup of the working XF86Config or XF86Config-4 file. Then alter XF86Config as needed to include the following:

Section "Module"
Load "dbe" # Double buffer extenstion... VNC likes this...
Load "extmod"
Load "type1"
Load "speedo"
Load "freetype"
Load "xtt"
Load "glx"
Load "dri"
load "GLcore"
EndSection

# 1024x768/85Hz
HorizSync 31.5-70
VertRefresh 40-90
Modeline "1024x768" 94.50 1024 1072 1168 1376 768 769 772 808 +hsync +vsync

# My favorite modelines for my Compaq 700US, Twister S3 chip...
#
# 1024x768/75Hz
#HorizSync 31.5-70
#VertRefresh 40-90
#Modeline "1024x768" 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync

# 1024x768/70Hz
#HorizSync 31.5-70
#VertRefresh 40-90
#Modeline "1024x768" 75.00 1024 1048 1184 1328 768 771 777 806 -hsync -vsync

# 1024x768/60Hz
#HorizSync 31.5-48.5
#VertRefresh 40-70
#Modeline "1024x768" 65.00 1024 1048 1184 1344 768 771 777 806 -hsync
-vsync

#Modeline "800x600" 40.00 800 840 968 1056 600 601 605 628 +hsync
+vsync
#Modeline "640x480" 25.20 640 656 752 800 480 490 492 525 -hsync
-vsync

Section "Device"
Identifier "S3"
VendorName "Unknown"
BoardName "Unknown"
Driver "savage"
BusId "PCI:01:0:0"
option "videoram" "32768" # visit the bios and make the agp
appature BIG
option "hwcursor" "1"
option "accel" "1"
option "usebios" "1"
option "DPMS" "on"
option "backingstore"
EndSection

Section "DRI"
Mode 0666
EndSection

7) The savage.ko or savage.o module you made is not recognized by the kernel module loaders, So you'll have to load it manually each time you boot or add to /etc/conf.d/local.start the following line:
/sbin/insmod /lib/modules/"$(uname -r)"/kernel/drivers/char/drm/savage.ko

However you decide to do it, the savage module must, MUST, be loaded before X starts, otherwise DRI will not be enabled.  Look over your changes very closely. If you don't, this may not work the way you expect.

8) Once you are satisfied, if you are a windows newbie, reboot. Otherwise just
killall X
insmod the new savage module, restart X then from a konsole or xterm and run glxinfo. The third line of output should say: direct rendering: yes
If it does, you now have hardware acceleration for your S3 video chip correctly enabled.  If not, re-polish what you changed and try again.

Now go play Quake Team Arena III with some of your buddies... :')