appiah4 wrote on 2020-06-15, 15:34:
I know that Voodoo 3 drivers have 3DNow optimizations.. But do Voodoo Banshee drivers have these also? I'm just asking because my K6-2/500 with a Voodoo Banshee performs pretty lacklustre compared to a Pentium II 333 with a Riva 128 in GLQuake, so I was scratching my head..
I have just checked and the Opengl ICD in the latest 3dfx Voodoo Banshee V1.04.00 driver package does not contain even a single 3DNow! instruction. It's rather easy to check this with BIEW or any other binary viewer that has disassembly option.
3Dnow! instruction blocks have to start/end with EMMS/FEMMS instruction because the MMX/3DNow! registers are mapped onto the x87 stack.
Since FEMMS is much faster than EMMS and all processors that support 3Dnow! also support FEMMS, 3Dnow! code almost always use FEMMS. The hex code of FEMMS is 0x0F0E so it can be searched. 3dfxOGL.dll only contains large blocks of x87 code that are much faster on the pipelined FPU of P5/P6. While K6 has a low latency FPU (most frequent x87 instructions have only 2 clock latency compared to 3/5 clocks of P6) the non-pipelined PFU of K6 does not like long chains of x87 code.
The low latency FPU of K6 likes much better mixed integer/floating point code as could be found in spreadsheet/business applications.
The attachment icd_fpu.jpg is no longer available
While the files that belong to Windows/Directx driver really contain 3Dnow! optimized code:
The attachment directx_3dnow.jpg is no longer available
This is also true for Glide drivers. Both glide2x.dll and glide3x.dll contain 3Dnow! code:
The attachment glide_3dnow.jpg is no longer available