Skip to content

Draft: Grover: a new frontend for the Glide API!

Link Mauve requested to merge linkmauve/mesa:glide into main

This driver might come as a surprise, 21 years after the last 3DFX card released, but it makes it possible to run programs targeting this family of GPUs on top of any Gallium driver (so far I only tested iris and radeonsi).

This is the second attempt at making a Gallium frontend in Rust, the first one being OpenCL by karolherbst. I tried to make a clear separation between the C API exposed to the user (in src/gallium/targets/glide), and the inner driver (in src/gallium/frontends/glide). The inner driver uses raw bindings generated with bindgen to expose the Gallium C API to Rust (see meson.build and bindgen.h), a higher level and safer wrapper on top of it (pipe.rs), a definition of the Glide types (gr.rs) and the actual driver (glide.rs).

There is no winsys integration so far, mainly because I could find no Linux game (Unreal and Unreal Tournament apparently got Linux builds, but I couldn’t find them so far), and also because I couldn’t figure out how to create a dll for use in Wine, with winebuild, even with the help of wine-nine-standalone. As such, the only interface with the user so far is dumping frame-%03d.bmp files in the current working directory…

I have restricted the implemented APIs to the programs I had at hand, mainly some samples and a game, Pandemonium!. I’m sure I still have some CDs around with other games from this era, but so far couldn’t find them, so if you have more I’d really like you to send me a trace using grtrace (see the next two commits), or even a donation on GOG.com (username: linkmauve) or whatever. If you don’t have any game to test, you can replay this trace of Pandemonium: pandemonium.grtrace.zst

All in all, I don’t expect this driver to be used much, I mostly wrote it for fun and in order to experiment with Rust inside of Mesa, but I do intend to maintain it and eventually to make it support all APIs used by all games from that 1996-2000 era which targeted it.

I’m also interested in getting a donation of any 3DFX card, so that I could test that this driver actually respects how the games were made to look like.

Feel free to get in touch at xmpp:glide@muc.linkmauve.fr?join (or using a web client).

Have a screenshot!

pandemonium

Edited by Link Mauve

Merge request reports