First post, by The Serpent Rider
ATTENTION! COMPLICATED SPREADSHEET AHEAD! YOU HAVE BEEN WARNED!
So I've been testing some PCI cards from my collection for a while (both in DOS and Windows). The idea was to test cards in various resolutions to see how well they scale. And oh boy, the further I did my tests, the more and more I've been feeling like Alice in Wonderland, because it's a very deep rabbit hole. Let's just say I had to retest a lot of things and to question my sanity a few times. In total, 64 video cards were tested, including 10 AGP cards for reference.
CPU: Athlon XP 3000+
Motherboard: Chaintech 7VJL (KT333CE + VT235)
RAM: 2x 256 Mb Samsung DDR333 (2-2-2-5)
HDD: Sandisk SDSA6AM-008G
OS : Windows 98 SE + DOS mode (BootGUI = 0) / Windows XP SP3 (for some minor testing with problematic cards)
Additional test configuration (used for two cards)
CPU: Pentium 4 3.06 Ghz
Motherboard: Intel D850EMV2
RAM: 2x256 Mb RDRAM PC1066
HDD: Transcent TS8GSSD25S-S
OS : Windows 98 SE + DOS mode (BootGUI = 0)
While these configurations are a bit too weak for the best possible benchmarking outcome, they are more grounded to systems where you realistically would still want to use PCI video card. Plus, I can compare PCI cards to some AGP 1x/2x cards and further expand my testing.
DOS software used
SciTech Display Doctor 6.53 - main TSR used to add enhanced VBE support and resolutions.
SciTech Display Doctor 5.3a - used few times for obscure video cards.
S3 VBE/Core 2.0 + S3 Speed Up - old TSR to speed up various S3 cards.
S3VBEFIX v.0.5.2 - new TSR for more modern S3 cards with VBE 2.0 BIOS.
NOLFB - Ken Silverman's TSR designed to disable Linear Frame buffer and VBE2.0+ extensions for Build Engine games.
FastVid - utility to enhance VGA and VESA performance on systems with Pentium Pro or later CPUs.
MTRRLFBE - same as above and more modern, but could be picky with some cards.
VBEHz - for setting up refresh rates on some VBE 3.0 cards.
Duke Nukem 3D Atomic Edition v1.5 - default HUD, observed frame rate on the L.A. Meltdown rooftop scene.
Quake v1.06 - default HUD, demo 1, all results were achieved with "vid_wait 0" command.
Doom Shareware v1.9 - no HUD, demo 3.
PC Player Bencmark - one of the few less synthetic benchmarks of that era.
Forsaken - software mode, 16-bit color, Ship demo run at 4x speed.
Quake 2 v3.20 - software mode, demo 1.
Command & Conquer: Tiberian Sun Demo - subjective evaluation of performance on fastest game speed/scrolling settings.
PCI VIDEO CARDS
- AvanceLogic ALG2032 (FVGAP-AL4D) - 2 Mb PCI
- Alliance Promotion 6410 (No name) - 2 Mb PCI
- Alliance Promotion AT25 / AT3D (Reference Rev 4.0) - 4 Mb PCI
- InteGraphics Sys IGA-1682 (No name) - 2 Mb PCI
- InteGraphics Sys CyberPro2000 (ExpertColor Canarias 2000) - 2 Mb PCI
- Trident TGUI9440-3 (No name) - 2 Mb PCI
- Trident TGUI9680-1 (Jaton KY2-JAX-TVGA57PCI) - 2 Mb PCI
- Trident ProVidia9685 (No name) - 2 Mb PCI
- S3 Vision868 (ExpertColor DSV-3868P) - 2 Mb PCI
- S3 Trio32 (ExpertColor DSP-3332P) - 2 Mb PCI
- S3 Trio64 (ExpertColor DSP-3364P) - 2 Mb PCI
- S3 Trio64 (Super Grace) - 2 Mb PCI
- S3 Trio64V+ (Diamond Stealth64 2001 PCI) - 2 Mb PCI
- S3 Trio64UV+ (V-PLUS ) - 1 Mb PCI
- S3 Trio64V2/DX (ASUS PCI-V775V2) - 4 Mb PCI
- S3 Virge (Aska FVGAP-S34.2E) - 4 Mb PCI
- S3 Virge (ExpertColor Canarias 3000) - 4 Mb PCI
- S3 Virge/DX (ASUS 3DP-V375DX) - 4 Mb PCI
- S3 Virge/DX (Super Grace FVGAP-S34.2E) - 2 Mb PCI
- S3 Virge/DX (A-Trend ATC2345C) - 4 Mb PCI
- S3 Vision968 (Diamond Stealth64 VRAM OEM) - 2 Mb PCI
- S3 Virge/VX (Diamond Stealth 3D 3000) - 2 Mb PCI
- S3 Virge/VX (ELSA Winner 2000AVI/3D) - 4 Mb PCI
- S3 Virge/GX2 (Powercolor) - 4 Mb PCI
- S3 Savage 4 Pro (Diamond Stealth III S530) - 8 Mb PCI
- S3 Savage/MX (Appian Graphics Gemini) - 16 Mb PCI
- Cirrus Logic CL-GD54M30 (JQGD54M3XPCI) - 2 Mb PCI
- Cirrus Logic CL-GD5446 (JQGD543XTPCI) - 2 Mb PCI
- Cirrus Logic CL-GD5446 (PixelView ProLink PV-CL544XP+) - 2 Mb PCI
- Cirrus Logic CL-GD5464 Laguna 3D (FQI546XPCI) - 4 Mb PCI
- 3Dlabs Permedia II (ELSA Gloria Synergy) - 8 Mb PCI
- Matrox Millennium (MGA-2064W-R3) - 4 Mb PCI
- Matrox Mystique (MGA-1064SG-H) - 4 Mb PCI
- Matrox Millennium II (MGA-2164WP-C) - 8 Mb PCI
- Matrox G200 MMS - 8 Mb PCI
- Matrox Millennium G450 DualHead DVI - 32 Mb PCI
- SIS 6326AGP EDO (SIIG C6326PE) - 4 Mb PCI
- SIS 6326AGP SDRAM (PINE PT-5968-98) - 8 Mb PCI
- Tseng ET4000/W32p (Siemens) - 2 Mb PCI
- Tseng ET6000 (JoyTech) - 2 Mb PCI
- Tseng ET6000 (ViewTop) - 2 Mb PCI
- ATI Mach64 VT2 (ATI Video Xpression) - 2 Mb PCI
- ATI Mach64 VT2 (ASUS PCI-V264VT) - 2 Mb PCI
- ATI 3D Rage II+DVD EDO (ATI 3D Charger) - 4 Mb PCI
- ATI 3D Rage II+DVD EDO (ASUS 3DP-V264GT2/TV) - 4 Mb PCI
- ATI 3D Rage II+DVD SGRAM (ATI 3D Pro Turbo PC2TV) - 4 Mb PCI
- ATI 3D Rage Pro PCI (ATi Xpert@Work) - 8 Mb PCI
- ATI Radeon VE (ATI Radeon 7000 DDR) - 32 Mb PCI
- Nvidia Riva TNT2 (ELSA Synergy II) - 32 Mb PCI
- Nvidia GeForce 2 MX (ASUS V7100 Pro) - 32 Mb PCI
- Nvidia GeForce 4 MX (HP Quadro 4 NVS 100) - 64 Mb PCI
- Nvidia GeForce 4 MX (PNY Quadro 4 NVS 400) - 32 Mb PCI
- 3dfx Voodoo 3 3000 SGRAM (STB Systems) - 16 Mb PCI
- 3dfx Voodoo 4 4500 (STB Systems) - 32 Mb PCI
AGP VIDEO CARDS
- Cirrus Logic CL-GD5465 Laguna 3D (FQI546AVS) - 4 Mb AGP
- ATI Rage Pro Turbo AGP (ATi Xpert@Work) - 8 Mb AGP
- Intel i740 (ASUS V2740) - 8 Mb AGP
- SIS 315 Pro (Elitegroup AG315P-64 V1.1) - 64 Mb AGP
- 3dfx Voodoo 4 4500 (STB Systems) - 32 Mb AGP
- Nvidia GeForce 2 Ti (ASUS V7700 Ti) - 32 Mb AGP
- Matrox Millennium G450 DVI - 32 Mb AGP
- S3 Trio 3D/2X (Diamond SpeedStar A55) - 8 Mb AGP
- Trident Blade 3D (Super Grace HK9903 Rev: A1.1) - 8 Mb AGP
- 3Dlabs Wildcat VP760 - 64 Mb AGP
All benchmark scores without additional notes were achieved with FastVid/MTRR enabled and, if available, with UniVBE for additional display modes. Any additional software tinkering or console commands were omitted.
At first, it was default approach for all cards in my testing, but as my understanding of benchmark results grew and inconsistencies began to occur, I had to redone most of the tests. Thus, I've added notes in the spreadsheet.
NO TSR // Score was achieved without using any additional utilities.
NOLFB // Score was achieved only with NOLFB TSR loaded into memory.
OUT OF RANGE // The particular card refused to display image on my LCD monitor in that video mode. For Quake, the scores were achieved through blind test.
S3SPEED // Score was achieved with S3 Speed Up VGA boost tweak.
NOPAGEFLIP // Score was achieved with "vid_nopageflip 1" command, FastVid is included.
DD63 LFB OFF // SciTech Display Doctor 6.53 is loaded, but Linear Frame Buffer disabled on purpose.
VSYNC DROP // Frame rate is capped by the double buffered vertical sync and rounded down further. Example: in heavy scenes 60 fps will dip into 30, 20 or 15 fps. Which are 2, 3 and 4 times lower than the actual display refresh rate.
S3VBEFIX // Score was achieved with S3VBEFIX TSR loaded into memory. That particular TSR has rather interesting interaction with VBE 1.2 cards. For some reason it can boost performance of Build engine games (similar to NOLFB) and PC Player benchmark score on non-compatible S3 cards.
VISPLANE BUG // Unique Matrox Millenium and 3Dlabs Wildcat family bug. Renders any visplane surface in Build engine games incorrectly. Can occur on certain resolutions and only without Linear Frame Buffer.
BAD COLOR // Unique bug for IGS IGA 168x chipset family. All colors are inverted.
STUTTERING // See 3DLabs Permedia 2 notes.
GUI LIMIT // Tests were made with only basic GUI acceleration enabled, see further explanation in general notes.
During my testing, I've discovered that usefulness of "vid_nopageflip" command is directly tied to the amount of available video memory on the card.
With 1 Mb, it will slightly boost VESA modes below 640x400 resolution.
With 2 Mb, it will boost VESA modes below 1024x768 resolution.
With 4 Mb or more, it will boost all VESA modes.
Although "boost" is probably not a proper word here. If we take for example S3 Virge, adding 4 Mb to the card will always drop performance, compared to 2 Mb configuration. So vid_nopageflip command actually restores the performance, which would be there on 2 Mb card without any additional shenanigans. Mind blown. Alternatively, limiting identified memory works the same way. Unfortunately this feature is available only for S3 cards or if UniVBE occasionly will identify memory size incorrectly.
There are also two exceptions to that observation: S3 Trio 32 and IGS IGA1682.
Duke Nukem 3D
In general, doesn't like LFB modes on that system. Frame rate is lower and looking closely at any sloped surface will drop performance very significantly for unknown reason. But not on every card and resolution and it's also somehow tied to the amount of RAM on your card. In some rare cases LFB modes are noticeably faster (see Matrox Millenium and GeForce 2 Ti). 2 Mb cards do not need LFB OFF trick after 1152x864 resolution, but in most cases, active LFB and FastVid do not improve performance on higher resolutions. AFAIK, you can't fool this engine with software memory limiter.
I am not sure if testing without LFB is the correct choice here, but most cards provide good or excellent performance up to 1024x786/1152x864.
GUI acceleration in Windows
Apparently not all cards in my benchmark list are fully compatible with full GUI acceleration, which will lead to various problems. Some cards will refuse to run games (Forsaken), some will drop performance in games (Quake 2) or even flat out refuse to work properly in some screen modes.
To troubleshoot such behaviour, Windows 98 has 4 option for GUI: No acceleration (1), Basic GUI acceleration (2), Full GUI acceleration (3) and Full GUI acceleration + Mouse hardware acceleration (4).
Switching from 4 to 3 didn't helped at all and my tests showed no practical difference between 1 and 2, so I settled with basic acceleration for my GUI LIMIT tests.
Tiberian Sun became an interesting study on how various cards behave with GUI acceleration, since this game actually use it, at least partially. Some chips or specific cards can also drastically change performance in specific mode, based on available amount of video memory. Good example would be Virge VX, which drop performance significantly in 800x600 mode with 4 Mb of VRAM. Setting GUI acceleration to basic mode can help some cards to improve performance or decrease it (mostly on top tier cards).
Always will try to brute force Vsync in Quake and Duke Nukem 3D. In the latter, trying to play with LFB active will lead to VSYNC DROP scenario, which is mentioned above. Fortunately, these problems can be fixed.
Later cards (Radeon 7000) show some GUI/Quake 2 drop in performance similar to Nvidia cards (see below), but less severe.
Old generation S3 cards (cards up to Virge GX or maybe GX2)
Not very cooperative with high resolutions. All "old generation" cards were showing me black screen (out of range) in 1024x768 or 1280x1024 modes, but it can be fixed with Display Doctor.
New generation S3 cards (S3 Trio 3D or newer)
Apparently broke some compatibility with Build engine. Performance ranges from meh to bad. These cards are also plagued with VSYNC DROP with active LFB, which is even worse.
Very good performers, not the best ones, but without any significant drawbacks.
"Nice cards!" - Nvidia marketing department.
On more serious note, all Nvidia cards struggle in Quake 2 with all GUI acceleration bells and whistles. Surprisingly that's not the case in windowed mode. Other than that, performance is top notch.
There's also one card which has issues with DOS (see spreadsheet and specific notes).
Cirrus Logic cards
Not as trouble free as one would think (see specific notes).
Alliance Promotion 6410
The black sheep of the testing group. Performance is just horrible. Apparently, Mode X is also tied to Vsync.
As "the cherry on top" it can't load Forsaken with full GUI acceleration.
InteGraphics Systems IGA-1682
The black sheep of the testing group number 2. One of the two cards which did not reacted to " vid_nopageflip" command in predicted manner. Instead it ignored nopageflip completely. Anyway, performance is bad. And acid colors in 1280x1024 mode don't help that either.
As "the cherry on top" it also can't load Forsaken. CPU is too fast for the provided driver? Incompatible with VIA KT333? Need further investigation.
InteGraphics Sys CyberPro2000 (ExpertColor Canarias 2000)
Huge improvement over IGA1682, but still somewhat meh for DOS. Performance in Windows is horrible. Tiberian Sun works at a turtle pace even in 640x480 resolution. Not sure if obscure drivers from Windows 95 era to blame or it's just bad by design.
Trident TGUI9440-3 and Trident TGUI9680
Mostly fine. Not good, not bad. Trident 9440-3 is somewhat sluggish with 2D acceleration (especially Tiberian Sun 640x480), but that's to be expected from such an old chip. VGA performance is limited on both cards, maybe intentionally.
Interesting sidenote: my Trident 9440-3 is clocked at a whopping 89 Mhz and I can overclock it much more! Probably one of the reasons why it's slightly faster than 9680 in some tests.
Decent improvement over both previous Trident chips in VESA and Windows tests.
Trident Blade 3D
Horrible card for DOS lacking in VBE 2.0 support (and possible way to fix that) and worst possible performance in Duke Nukem 3D (1-3 fps). Windows support is decent.
S3 Trio32 (ExpertColor DSP-3332P)
The second card which behaved differently with "vid_nopageflip" command. It actually showed some small performance improvement in high resolutions with pageflip switched on.
Other than that, 32-bit memory access is the real bottleneck in high resolutions or high color depth modes.
S3 Trio64V2/DX (ASUS PCI-V775V2)
Number 1 of the best performing "old generation" S3 cards in highres modes. Clocked at 60 Mhz. In most tests it's faster than "top dog" Virge cards from ASUS (66 Mhz) and ExpertColor (70 Mhz). And even slightly faster than professional cards like Vision968 and Virge VX.
S3 Vision968 (Diamond Stealth64 VRAM OEM)
Best performing S3 card Number 2, if somewhat meh VGA performance to be ignored (plenty fast if you ignore other results). Only slightly slower than ASUS PCI-V775V2, but a tad bit faster in 1600x1200 mode. Would be super neat too, if upgrade modules weren't so uncommon, but works fine as 2 Mb card too. Playing Tiberian Sun 800x600 is quite smooth experience on such card.
Overall, the third best S3 cards in my DOS testing. But can be edged out by more highly clocked regular Virge cards. Trying to load Forsaken or any other game in Windows is extremely problematic though as they just hang. It's one of those cards which just refuse to work properly with a fast CPU. It will work absolutely fine on a Pentium 3 500, but 1 Ghz or higher is no go.
I've managed to run all Windows tests by switching screen modes in config file/on another video card or running test in Windows XP.
S3 Trio 3D/2x (Diamond SpeedStar A55)
Now here's where S3 family is starting to struggle with Build engine . It's still decent without LFB though, but with LFB things get ugly, all modes are riddled with VSYNC DROP. To make things even worse, 1280x1024 mode is also OUT OF RANGE. Unfortunately I don't know how to fix that. That card is only VBE 2.0 compliant, but not supported by UniVBE and other refresh fixers require VBE 3.0 to work.
S3 Savage 4 Pro (Diamond Stealth III S530)
Everything said above about Build Engine applies here too, but performance is worse. Outside of that, pretty decent card. To get it properly working in Windows 98 I had to disable mouse hardware acceleration (see general notes about GUI).
S3 Savage/MX (Appian Graphics Gemini)
Build engine performance degraded even further. I've left LFB active, because it's actually better (outside of sloped surface closeups). Also it can't display 1600x1200 mode properly. Probably can be fixed with UniRefresh, but I'm lazy.
SIS 6326AGP EDO and SDRAM
Problematic card. First of all it's no fully compatible with UniVBE, technically you can load it, but Quake will just hang or frame rate will be extremely low. And since it's a VBE 2.0 card I can't fix OUT OF RANGE problem in 1024x768 and 1280x1024 modes with VBEHz or UniRefresh. Duke Nukem 3D refuse to load in DOS, instead showing me only red screen with command prompt. Funnily enough, Blood works absolutely fine.
Nice improvement over older cards and it also has proper VBE 3.0 support. Unfortunately, can't run Forsaken in software mode with GUI acceleration set to max, which may indicate that there are other problems in some games.
Cirrus Logic CL-GD54M30
So far the worst card in my test, stealing that "crown" from the previous king - Alliance Promotion 6410. It has all - very slow in DOS, very slow in Windows and not fully compatible with GUI acceleration.
Cirrus Logic CL-GD5446 series
Decent performers. Even "no name" card with just 70 ns memory. I had to use SciTech Display Doctor 5.3a to add 1280x960 resolution, but it only worked properly on PixelView card. 1280x1024 is always OUT OF RANGE on both cards, no matter what.
No name card is also perfect for Duke Nukem 3D out of the box .
Cirrus Logic Laguna 3D aka CL-GD5464/CL-GD5465
CL-GD5464 is just plain bad, performance is very lackluster. CL-GD5465 made noticeable improvement in most areas, but still quite anemic even when compared to previous Cirrus Logic chips like CL-GD5446. So much for blazing fast RDRAM memory, eh?
Apparently Laguna 3D (or maybe the whole Laguna family) broke Build engine compatibility, which lead to just atrocious performance. Disabling LFB only mildly helped in low resolutions and I don't see any reason to relist my "LFB ON" scores for higher resolutions.
Good ol' Tseng ET4000 struggles quite hard, when compared to more modern chips, but can provide decent competition for chips of its generation (Trident 9440, S3 Vision 868). Unfortunately it refused to ran Tiberian Sun on my main setup and even can't boot up on backup P4 system.
Very fast cards, both in DOS and Windows. I'm reluctant to call them the fastest cards for their time period (1996-1997) but results speak for themselves. JoyTech card was clocked at 81 Mhz, while ViewTop card was clocked at 92 Mhz.
Both cards can get very hot in GUI environment, especially ViewTop.
ATI Mach 64 vT2
For supposedly 64-bit cards, they are extremely underwhelming in performance department, even in Windows (see Forsaken). GUI speed is not so bad, but I won't call it good either. C&C Tiberian Sun is working fairly smoothly even in 800x600 resolution though. VGA speed is limited, which is a common trend for all old ATI cards.
ATI Rage II +DVD series
Compared to Mach64, performance is increased considerably, but VGA speed is still limited. SGRAM card is showing some muscles in high resolutions.
ATI 3D Rage Pro series
Nice chips, which perform good or at least decent enough in every test. Although PCI version doesn't like UniVBE that much and will perform worse if it's loaded. I suspect additional 4 Mb of RAM via upgrade module on my card is to blame, but too lazy to retest without it.
Radeon VE (Radeon 7000 DDR)
Very fast and VGA performance is finally fixed. Yay!
Matrox Millennium and Mystique series
All three cards have practically identical performance, which is overall very good. The original Matrox Millenium can work fine with LFB in 1280x1024 and 1600x1200 modes (only on specific BIOS) in Duke Nukem 3D and slighly faster that way.
VISPLANE BUG is quite interesting discovery. Originally, I've stumbled upon this bug only on one MGA-2064W-R3 (with specific BIOS) in 1600x1200 mode without additional tweaking, which indicates that it always drops LFB on that resolution.
This behaviour was fixed in Matrox Mystique and Millenium II, which always work with LFB, but performance suffer greatly due to that. Not sure if any BIOS update can fix that. Display modes affected: 320x400, 800x600, 1600x1200.
Capricious card. Refused to work on KT333 setup both in Windows 98 and XP due to incompatible PCI-PCI bridge. Tests were completed on P4 system. Interestingly enough, performance is practically unaffected by using bridge.
Matrox Millennium G450 series
PCI version does not like my KT333 setup and very unstable on it. Probably due to PCI-PCI bridge on card. I've managed to run Quake 2 and Tiberian Sun in Windows XP, but Forsaken had to be retested properly on P4 system.
Side note: Both cards (AGP and PCI) do not work with Gx00VBE properly and instead are showing only black screen. Fortunately they are good performers, have enough video modes and not riddled with bugs too much.
3DLabs Permedia 2 (ELSA GLoria Synergy)
First of all, the good news: it's the only chip which can output maximum performance in VESA modes without any TSR (see PCPlayer Benchmark). The bad news: only two modes are available out of the box (640x400 and 640x480).
Now for more badder news. Quake frame rate take a deep nosedive when any item is picked up or damage is taken, i.e. when the screen flashes, which result in very inconsistent frame rate. Especially in timedemo, which will constantly slow down and subsequently speed up again after screen flash is gone. After loading TSR like UniVBE, Duke Nukem 3D just refused to work without LFB, so enjoy your horrible performance with VSYNC DROP.
And unfortunately it's not just some ELSA gimmicks, because my AGP Creative Permedia 2 card behaved exactly the same.
3DLabs Wildcat VP760
Major improvement over old Permedia cards! Top tier card and absolute best performer in some tests. I suspect that 3DLabs licensed Matrox 2D at some point, which would explain why it also has Visplane bug in Duke Nukem 3D.
GeForce 2 Ti (ASUS V7700 Ti) and Riva TNT2 (ELSA Synergy II)
Absolute champions of 1600x1200 mode in Duke Nukem 3D. Performance is improved with LFB active and MTRRLFBE.
Nvidia GeForce 2 MX (ASUS V7100 Pro)
Incompatible with VESA 1.2. Therefore it can't run Duke Nukem 3D or PCPlayer Benchmark. I suspect that ASUS messed something up in their GeForce 2 MX BIOS very badly.
Nvidia Quadro 4 NVS 100
Fastest PCI card in Quake (marginally), but somewhat slower in Duke Nukem 3D. Has some software cap for Mode X?
Nvidia Quadro 4 NVS 400
Also has some strange cap in Mode X. In general, slower than other Nvidia cards, probably due to PCI-PCI bridge being used to work with 2 GPUs on the card.
3dfx Voodoo 3 3000 SGRAM
For some reason, didn't had 640x480 resolution in Forsaken. So I had to revert to GUI basic mode to test it.
My current To-Do list:
Trident 9440-1 PCI
Diamond Stealth 64 VRAM Retail 4 Mb
Diamond Stealth III S540 - probably redundant.
Matrox Mystique (original revision)
Matrox G450 MMS - probably redundant.
Matrox G550 (AGP) - probably redundant.
3dfx Voodoo 3 3000 SDRAM - probably redundant.
3dfx Voodoo Banshee AGP
3dfx Voodoo 5 5500 - probably redundant.
Nvidia Riva 128 PCI / AGP
Whatever else I will find for PCI
I must be some kind of standard: the anonymous gangbanger of the 21st century.