Reply 120 of 125, by Dolenc
Before I forget everything, that was happening for the last 3 months 😁. And to make it more readable I will split it into a couple of posts.
To get started... I wanted to do this for a long time, when using the first version of the driver, manly was fine, but I did notice some issues with it over time. As mentioned before, Sin wasnt working, I used WickedGl. Daikatana had some random lockups, Heretic II had lockups, Voyager didnt work, SOF ofc completly out of the question. Oni wasnt working (and I know I played it once on MesaFx, cus I had a video of it, but it wouldnt work and so on... OpenGl felts like unfinished business to me, was lurking in my mind that one day when I had time Im gonna look into it.
I tried a couple of times and didnt get anywhere.
There are no sources(or I dont have them) for the 3dfx ICD, so Mesa is the only option, because I added those additional resolutions, so I can play on my 21:9 monitor.
You can somewhat "hack" your way around it, since I also added that resolution force to glide, and WickedGl will work fine with the forced resolution. Pre-built MesaFx also, but then you dont have the ability to go to 16bi px for games that default to 32bit in Mesa, which are Quake engine games. And WickedGL is hit or miss with image quality, also performance.
MesaFx. Is a combination of two parts. Mesa3d, an open OpenGL api implementation (thats still in active development and is currently at ver 25.2.) 
And then you can write a vendor specific implementation that uses it and communicates with the hardware. As Daniel Borca(among others) did, so Mesa for 3dfx... MesaFX.
The issue was the last updated version, that you can build, is MesaFx6.2. There is a built version 6.3, but code was never updated.
And going from 6.2->6.3 there were some internal changes, mainly the framebuffer/renderbuffer handling.
So they needed to be adapted. They were in the dri/linux driver. But that can server as a refference, the way it accesses hardware in linux is a bit different, the structure is also a lot different. So you have the glide version and dri version.
And I saw with the prebuilt 6.3 that Sin now works, that didnt in the previous version. So... Even that... Worth doing! Maybe solves some other problems.
So with the advancement of our future overloards help (mainly Claude and chatGpt) and using dri driver as a refference... and a lot of time 😁... I manage to adapt the changes for glide. Its all on github and will put all the link again in a later post. Not really that interesting to discuss. But nice to have!
Buffer changes got solved, paletted textures also broke, core-mesa changed table type handling from GL_UNSIGNED_BYTE to GL_FLOAT (just one sentence, but took a while to figure out ).
And that was it. Thats all I wanted to do. Driver worked, probably buffers could use some more checking, probably forgot something in initialization. Sin worked!
Well then it started 😁....
- Testing the buffers, there were some incorrectness with far mipmaps. Ofc I might have done something wrong, but no(well)... Glide that I was using didnt work all that well with MesaFx. So I switched to the one from the sourcforge glide project. Which had its own problems, the first time I used it. But now it worked fine.
Mipmaps looked correct. I remember someone once told me forcing 32bit for glide doesnt work in this glide3x.dll. And I removed one check from it, that expect the value is either 16 or 32. But you can have it in the driver ini as whatever or 32, which is fine, I have it like this too. So that worked.
Probably most of the problems I had with Wide driver v1.1 came from this pairing of MesaFx and previous glide.
- Oni still didnt work. Later found out theres a cpu test for supported instruction sets. Followed by os test. And os test crashes the game, I checked how this was handled, they removed the os test (were targeting windows anyway), so I did the same, Oni worked!
- Then one issue with mesa was that it only ran on 60hz refresh rate. So I added that, now you can use 3dfx tools setting and it will try to get the highest one.
This sound small... But it really makes a huge change to feel how responsive the game feel. It finally feels like it does on a modern machine, nice and snappy. Not, yea Im still on win98.
- then I tried Soldier of fortune ...