Skip to content
  • Link Mauve's avatar
    grover: add a Glide frontend · 20088311
    Link Mauve authored
    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.
    
    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.
    
    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.
    20088311