First post, by The Serpent Rider
ATTENTION! THIS MESSAGE CONTAINS LOTS OF WORDS! LOTS OF CONFUSING WORDS! AND COMPLICATED SPREADSHEET! YOU HAVE BEEN WARNED!
So I've been testing some PCI cards from my collection for a while (mostly in DOS). 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, 39 video cards were tested, including 5 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)
While this configuration is a bit too weak for the best possible benchmarking outcome, it's 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 VESA performance on systems with Pentium Pro or later CPUs.
MTRRLFBE - same as above and more modern, but could be picky with some 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.
Command & Conquer: Tiberian Sun - only mentioned in notes as subjective observation for some cards (maybe will add as fully fledged bench with FRAPS measurements).
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.
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.
VISPLAN BUG // Unique Matrox Millenium family bug. Renders any visplane surface in Build engine games incorrectly. Occurs only 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.
APPROX // Approximated results, see further below in Virge/VX and Cirrus Logic Laguna 3D 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's 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.
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.
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.
"Nice cards!" - Nvidia marketing department.
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. CPU is too fast for the provided driver? Incompatible with VIA KT333? Need further investigation.
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 800x600), but that's to be expected from such an old chip. VGA performance is somewhat 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.
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 is ignored (only compared to other cards). Only slightly slower than ASUS PCI-V775V2, but tiny bit faster in 1600x1200 mode. Would be super neat too, if upgrade modules weren't so uncommon, but it's fine as 2 Mb card. Playing Tiberian Sun 800x600 is quite smooth experience on such card.
S3 Virge/VX (Diamond Stealth 3D 3000)
Overall, the third best S3 card 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. Probably some complicated driver issue which may or may not be fixed in the future.
I've managed to run Forsaken two times on 1733 Mhz Athlon XP and, based on those scores, approximated XP 3000+ performance with another Virge card, which was overclocked to match.
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.
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 (SIIG C6326PE)
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.
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
Now this one is interesting. I don't have a working CL-GD5464 PCI card ATM, but after doing some testing with an AGP CL-GD5465 card, I'm convinced that it could be sufficient substitute. For some reason CL-GD5465 has very anemic 2D performance which never edges on AGP bandwidth and behaves like a PCI video card. It's still on par with CL-5446 (for the most part).
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. Could some of the owners of CL-GD5464 check Duke Nukem 3D performance for me?
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 in 800x600 resolution though and actually better than Trident cards or Trio 32. VGA speed is limited.
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.
Radeon VE (Radeon 7000 DDR)
Very fast and VGA performance is finally fixed. Yay!
Matrox Millennium series (most likely Mystique too)
Both cards have practically identical performance, which is overall very good. The original Matrox Millenium can work fine with LFB in 1280x1024 mode and actually is slighly faster.
VISPLANE BUG is quite interesting discovery. Originally, I've stumbled upon this bug only on MGA-2064W-R3 in 1600x1200 mode without additional tweaking, which indicates that it always drops LFB in this mode. This behaviour was fixed in Matrox Millenium II, which always works with LFB, but performance suffer greatly. Not sure if any BIOS update can fix that. Display modes affected: 400x300, 800x600, 1600x1200.
Matrox Millennium G450 series
Mostly 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 is constantly slow down and subsequently speed up again the next moment. After loading TSR like UniVBE, Duke Nukem 3D just refuse to work without LFB, so enjoy your horrible performance with VSYNC DROP.
And it's not some ELSA gimmicks, because my AGP Creative Permedia 2 card behaves exactly the same.
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 Quadro 4 NVS 100
Fastest PCI card in Quake (marginally), but somewhat slower in Duke Nukem 3D. Has some software cap for Mode X?
3dfx Voodoo 3 3000 SGRAM
For some reason didn't had 640x480 resolution in Forsaken. WHY?!
My To-Do list:
Diamond Stealth 64 VRAM Retail
Diamond Stealth III S540
S3 Virge GX2 (AGP)
Matrox G200 MMS
Matrox G450 MMS
Matrox G550 (AGP)
3dfx Voodoo 3 3000 SDRAM
3dfx Voodoo 4 4500
3dfx Voodoo 5 5500
Whatever else I will find for PCI
Get up, come on get down with the sickness
Open up your hate, and let it flow into me