3Dfx Clock Control for Linux
I'm the owner of both a Voodoo Banshee and a Voodoo 3 3500
(both excellent cards, highly recommended). However, my computer with
the Voodoo3 3500 in it is not very well ventilated, and becomes slightly
unstable under load. I know that under windows I could lower the core
speed of the Voodoo3 and that seems to help stability. So I deicded
to grab the Voodoo datasheets that are floating around the internet and write
my own utility to do this under Linux.
This project produced a few things. The first was a patch to the XFree86
"tdfx" driver allowing specification of the core and memory setting through
the config file. The second was a little utility to set the core and mem
speeds on the fly. YOU CAN AND WILL BREAK YOUR HARDWARE WITH THIS
SOFTWARE IF YOU ARE NOT CAREFUL, as there is no protection to keep you
from overclocking your hardware if you want to. I highly recommend you do
-NOT- do this, as tdfx cards are notoriously pushed to thier limits already.
I provide no warranty or guarantee that this software won't cause damage to
your hardware.
In any case, both the patch and the software should work on Voodoo
Banshee's and all Voodoo3's. I do not have any datasheets on the V4/V5
(VSA-100), so they aren't supported. Also remember that almost every Voodoo
card has different core and memory timings. Below is a table of some common
timings, but you should check to make sure you know what the default speed
of you card is before you try a new one. Also, i noticed that some speeds
just don't work.. so YMMV. I'm able to run my Voodoo3 3500, (defaults to
183Mhz core/183Mhz Mem) at 166/166, and it seems much more stable. (for the
record, the Voodoo3 has a synchronous core and memory clock, while the Banshee
is asynchronous).
Chipset |
Vendor |
Core Speed |
Mem Speed |
Banshee |
Various |
100Mhz |
100Mhz |
Voodoo3 2000 |
3Dfx |
143Mhz |
143Mhz |
Voodoo3 3000 |
3Dfx |
???? |
???? |
Voodoo3 3500/TV |
3Dfx |
183Mhz |
183Mhz |
XFree86 Driver Patch
Here is a patch against the dri-cvs tree tdfx driver (as of... ohh, August
2002). I should apply cleanly to any recent tdfx X driver. I gave this patch
to the TDFX maintainer, and he liked it, but he wanted more people to test
before he included it. However, my call for testers went unanswered, so I
guess noone cares about this patch but me ;) So here it is, it will
probably never be integrated, but that's ok, it works for me. Maybe someone
else will find it useful. Apply this
patch, and then add of the following options to the driver section of your
XF86Config-4 file:
Option "GFXClock" "100"
Option "MemClock" "100"
"MemClock" only has meaning on a Banshee, as it has a different clock for
controlling memory and core speeds. "GFXClock" on a Voodoo3 controls both the
core and memory speed.
Voodoo Utilities
The Voodoo Utilities are a small set of utilities for displaying and
controlling various aspects of 3Dfx Voodoo cards. They are built around a
small library I created called libvoodoo. Libvoodoo is built on top of
libpci (of pciutils fame), so it should be portable to different
architectures and OS's (FreeBSD comes to mind). Libvoodoo does all the hard
work, all utilities are just small programs layered on top. This would allow
me some day if i so desired, to make all sorts of front-ends to control
a 3dfx card's speed.
In order to access the video card's registers to control the core and mem
speeds, the library mmaps in the MMIO region of the card but opening /dev/mem
for writing. Unfortunately, this means that it needs root privledges. I've
tken great care to make sure these programs aren't exploitable, but you never
know. So again, use this software with care. Also know that a malicious user
could, if given access to this program, could use it to cause PHYSICAL
DAMAGE to your computer. So again, use this program with caution.
As above, these program should work on Voodoo3's and Voodoo Banshee's. No
other cards are supported. Currently, there are two utilities:
listvoodoo: Lists information on all Voodoo's found.
setvoodoo: Sets the mem and core speeds on a specified
Voodoo
Running either command with the '--help' option should give you all the info
you need.
You can download the source code here : voodooutils-0.5.tar.gz