maestro wrote on 2022-10-07, 01:04:
The ViRGE's listed are the only cards with both 2D and 3D engines, but the ViRGE's 3D engine is so bad (it's a pioneer of 3D) that people jokingly call it a 3D deaccelerator.
The ViRGE being called a 3D decelerator is quite common, and for good reasons from practical experience with that card. But actually the 3D engine isn't technically as bad as it is made by the existing software. The main problem in my oppinion is that developers overestimated the power of the engine and ran 3D at unreasonable resolutions like 640x480. The memory bandwidth on the ViRGE is just not good enough for it, especially if you use bilinear texture filtering. The competition it was compared to was either software rendering at 320x200, or highly optimized rendering at 640x480 on fast CPUs (to be quite specific: Quake on Pentium II computers). While software-rendered Quake used 8bpp and no texture filtering, the S3 ViRGE version of quake used 16bpp (the ViRGE is not designed for 8bpp 3D operation) and bilinear filtering. Also, Quake used perspective correct texture mapping in their very tricky CPU rendering code (which is likely one of the features that made Quake run slow on 6x86 processors), and to be frank, the ViRGE was quite inefficient at perspective correct texture mapping. At this specific feature, the term "3D decelerator" is deserved, indeed.
Both the memory bandwidth issue and the performance issue with perspective correction were significantly improved on the ViRGE/DX, if you use a sensible BIOS. The maximum allowed core/memory clock for the ViRGE classic was 50MHz, but required to be dropped down to 45MHz for some VGA 4bpp features to be in spec. A proper ViRGE/DX BIOS initializes core/memory clock at 70 to 75 MHz and yields acceptable 3D performance in S3d games. Some OEM ViRGE/DX cards ship with BIOSes that use the safe default of 45MHz that also works with the classic ViRGE. Their performance out-of-the-box is awful. We recently had a thread about BIOS improvements for ViRGE cards, I will look it up if you want.
BTW: I was able to overclock a classic ViRGE to 87 MHz (yeah, really, more than 50% overclock), and performance started to be sufficient for 640x480 games. But if you have the choice to go ViRGE/DX, you should always pick the DX over the classic.
maestro wrote on 2022-10-07, 01:04:
But don't let that turn you off, ViRGE's have a special place in our hearts and part of that is because of their fast 2D engines. The Trio64 was a top performer in its day.
It's not very well known, but the ViRGE has an entirely different 2D accelerator than the Trio64 (which is mostly a Vision868 with clock generator and RAMDAC included). Because it's a 3-in-1-chip, they called it "Trio". The Vision 868 is the peak of a series with steady improvements, starting at the 805, continuing with the 864 and 866 to the 868, and they are the low-cost spin-offs of the VRAM-based series 911, 924, 928, 964, 966 and 968. Memory bandwidth on the Trio64 (with 64 bit memory path) is generally high enough that the use of DRAM instead of VRAM is no practical performance issue. Because all the pre-ViRGE chips are just incremental improvements with a high degree of backwards compatibility, you get drivers for nearly every DOS software that has SVGA drivers (like CAD software) that work with hardware acceleration on all S3 cards up to the Trio.
The ViRGE on the other hand uses its S3d engine to accelerate 2D operations. It does the job quite well, typical Windows software will not suffer performance degradation due to the different accelerator. But due to the different programming model of the ViRGE accelerator, new drivers had to be written, and you mostly don't get 16-bit drivers for the ViRGE.
If all you are after is framebuffer operation (i.e. software rendering without 2D acceleration), the ViRGE is "just a faster Trio64", though. Only the accelerator is incompatible.
maestro wrote on 2022-10-07, 01:04:
Hopefully someone here more knowledgable can clarify this, but if you are going to use a secondary 3D accelerator card then maybe the ViRGE VX is the best card. It has the most memory (for higher resolution/colour depth) and the VRAM was supposed to more beneficial in the 2D realm, and as I understand it CAD acceleration was the target market of the VX. So I think the ELSA is the best card but maybe someone can clarify if the 6MB on the VX would make it the best choice in light of this 2D only scenario?
In theory, the ViRGE/VX is a great chip. In practice, it didn't work out as well. VRAM obviosly has the advantage, that scanning out the picture from the frame buffer is "basically free". As the classic ViRGE severely suffered from memory bandwith issues in 3D operation, using VRAM should yield significant improvements. But keep in mind that the highest resolution 3D makes sense on the ViRGE is 640x480 (better downgrade to 512x384 if possible), so scan-out bandwidth isn't that much of an issue as it might seem. Furthermore, the ViRGE/VX is specified for slightly lower memory clock than the classic ViRGE (which is definitely offset by the bandwidth improvements, though), but on the ViRGE, the memory clock equals the core clock. The ViRGE/VX still has the same first-generation 3D core with awfully slow perspective correction as the classic ViRGE, and not the improved core of the ViRGE/DX. The higher core/memory clock and the improved core of the ViRGE/DX make it easily outperform the ViRGE/VX in 3D applications.
The ViRGE/VX can only use the VRAM part of the video memory as framebuffer memory, so it is limited to 2MB for the frame buffer. If you want to use double buffering in the frame buffer, you are limited to 1MB. This is not an issue in 3D modes, as 640x480 at 16bpp is way below 1MB, though. For classic Windows Desktop applications, hardware double buffering is not used, so to be fair, the 2MB is actually usable in full, which allows up to 1152x864 in 16bpp, or 1600x1200 in 8bpp. Accelerated High-resolution 2D graphics is where the VRAM is really going to shine, so it's a pity that you don't have the VRAM for 1600x1200 at 16bpp, which would make a ViRGE/VX really stand out over the DRAM-based competion.
The 4MB extra DRAM on the ViRGE/VX cards can be used for "offscreen surfaces" (i.e. video content than can be copied to the screen extremely fast) or for texture memory. And this could be really great. You can run the ViRGE/VX at 640x480 at 16bpp with triple buffering in the 2MB VRAM and still have 4MB of texture memory available. If you don't want gaming frame rates, but just want near real-time CAD rendering (so 10fps is fine with you), the ViRGE/VX is a great tool. On the other hand, I looked into one ViRGE game in Detail, Terminal Velocity, and as it is designed for the ViRGE classic and is designed to run on all cards, it just uses 2MB of RAM (so it would use the VRAM for both the double-buffered frame buffer and the textures). I have yet to see a game that profits of the ViRGE/VX, but probably the Direct3D drivers are smart enough to make use of the 6MB, so early Windows game could run at a higher texture resolution. Using only 2MB for the double-buffered framebuffer (takes around 1.25MB at 640x480) and the textures actively hinders texture quality. Terminal Velocity down-samples all textures to 32x32 pixels to make enough textures fit the video memory.
maestro wrote on 2022-10-07, 01:04:
Yes, during this era secondary 3D accelerator cards were so common that game developers provided a way for users to select which 3D card to use with the game, usually in the Setting menu. (It's the game, not the driver.)
To make best use of the 3dfx card, you likely want to focus on the proprietary 3dfx API called "Glide" supported by many games at the time. In Glide-based games, the ViRGE will just be ignored, as all other non-3dfx cards will also be ignored. In Direct3D-based games, you will get the choice between the two 3D devices as described. In some games, you might even be able to choose between a Glide mode and a Direct3D mode. You should always try the Glide mode first.
maestro wrote on 2022-10-07, 01:04:
damjank wrote on 2022-10-06, 20:43:
the VGA core will be faster than anything on my list? Right?
The ATi might be a little bit faster and that might be why mkarcher listed it first, but the difference will be miniscule and you have more ViRGE cards to play around with so I think those are a better choice. Do you know anything about ATi? They did everything themselves, all the way up to card production, think of them like Apple, like a closed ecosystem.
ATi indeed did most things in-house, although I wonder in what amount the 68875 is a licensed copy or at least based on a licensed core of the TI34075. The things ATi did in-house usually were quite good at what they were optimized to do. Top framebuffer performance and DOS gaming was never priority number 1 of ATI, though. I expect the ATI cards to outperform the Trio64 on Windows 2D acceleration. I measured Rage cards to outperform the Trio64 and Virge/DX on 640x480 / 256 color performance in DOS. If I were to buy a card for Windows business applications, I would choose the ATI over the S3 competition. If I were to buy a DOS gaming card, I switched over to preferring a good Virge/DX due to the better VGA mode performance.