Gallium/Mesa Update and Path Forward?

Today I received a refund for my donation to the Haiku Gallium video driver bounty.

Note from Karl vom Dorff:
Dear Donor, re: Haikuware Gallium Bounty Refund. Haikuware began collecting funds for this bounty in 2010. Since then, the first phase (of three) was completed which amounted to, in the words of the developer: “3d support in a lot better shape, we now have llvmpipe on gcc4+ images which is a lot faster than the old drivers. We also have Haiku support in upstream Mesa.” Although partially successful, the bounty has since been stagnant. I had offered the developer a timeframe of 6 months to complete the bounty, to which he is unable. A second alternative was offered to donate the funds to Haiku Inc. After nearly two weeks they have not responded to the offer. Therefore, in an effort to be fair to all parties, it has been decided to fully refund your donation (minus PayPal fees). Thank you for all your years of trust and support!

Now might be a good time for a quick update on what work was completed, what work still needs to be done, where the Gallium project is, the benefits of the Gallium/Mesa driver to Haiku.

This development might make a good Masters level thesis project.

That mail from Karl says it all. We have an up to date port of Mesa now, which can be used as the base for Gallium support. It still runs with software rendering, but can use either the old “swrast” renderer or the new “softpipe” one (based on LLVM). Note that this also means there can be multiple renderers.

The next steps would be to get a third renderer setup, using the Gallium stack. At some point in that stack we need to diverge from the "Linux way", that is, X11, DRI and DRM which are used there to talk to the drivers.

A decision must be made, wether to implement DRM in our graphics driver and use DRM and a Gallium similar to Linux, or do the work at a higher level, with more changes to Gallium to collaborate with app_server and our existing driver APIs, which are somewhat similar to DRM in terms of functionalities.

Then, the code has to be written and tested, with the different supported video cards.

Thanks for that review. It’s been so long that I couldn’t remember what the next steps are.

Here are some links to basic info: