Other than the shader compiler Michel pretty much wrote radeonsi. Everyone helped with testing and debugging the driver but MrCooper (that's just his IRC handle BTW) drew the short straw for initial SI userspace support.
Nice, Larabel should mark him as a driver developer. :)
Excuse my ignorance, but when something is crap and open source, doesn't the community rush to fix it? I thought that was the very reason many Linux users want software to be open source. Where are all the zealots?
Not sure I agree. As long as the code is public and there are developers outside the HW vendor who know the code well enough to work on it, the community *has* the power. The question is if and when it makes sense for them to use it.
Graphics drivers get more complex every year as expectations go up for features and performance, and that in turn makes it harder for part-time developers to find enough time to make real progress on the drivers, but the ability to "grab the wheel at any time" is there in principle.
Most of the developers working for HW vendors or distros work as "part of the community" anyways, so you do get a largely vendor-independent group making most of the key architectural decisions. The transition to kernel modesetting was a good example, with developers from a half-dozen different companies working together on various bits of the solution, and in many cases the developers *were* independent when they started work on KMS but continued working on it after going to work at Red Hat, AMD, Intel etc...
I think you get a more accurate picture of how open source works if you imagine all the work being done by volunteers, then consider that some of the "volunteering" is done by individuals and some is done by (ie funded by) large companies. I can only be sure about AMD but it's probably safe to say that all the large companies expect/allow their developers to work as part of the community and to strike a balance between community priorities and company priorities.
The threshold to enter that business seems rather high.
There's this promising project to write documentation and guides for new GPU driver developers
So far it's a very good read, IMHO, but it's incomplete and progress seems to be slow at best.
I'd say this is a *very* important project and a first version is hopefully completed soon (I doubt it).
It's not like it will automagically spit out better drivers immediately but it might help to lower
the threshold for new contributors, which are new to GPU hardware and the graphics stack.
AFAIK there's no comparable literature available yet. Otherwise please point me to it.
I'll buy it immediately. :) And I don't mean books on generic driver development on Linux.
There are conflicting views on the value of documentation though, even among the active developers. If you apply a classic triage model to the pool of potential developers and divide them into...
- those who will learn enough by asking questions & reading code to work effectively without documentation
- those who wouldn't be able to learn without documentation but would & will become effective developers if given a decent docco starting point
- those who would read the documentation but still not be able to deal with the complexity of the hardware & code in the time they have available
... the big debate is over the size of the middle category, the ones who would be helped by documentation. If the work contributed by that middle group is more than the work it takes existing developers to write and maintain documentation, then the community is ahead. If not, then the community loses.
The argument against a big push on documentation is that it would mostly help potential part-time developers, and the aggregate work available from the successful ones would be less than the time required to write & maintain the docco because of their part-time nature.
IMO the solution is to find the right level of detail. I think everyone agrees that documenting where to find the code and how to build/install it is worth doing, so the question is whether documenting one or two more levels of detail would help and where we reach the point of diminishing returns. I suspect we reach that point quite early, ie that the optimal point would be maybe 5-10 pages *total* of well-written design docco divided across the major component projects (eg a page or two for stack-level plus a page or two for each major component) and kept ruthlessly up to date.
That would be enough to let potential developers get a lot further into the code quickly, and hopefully enough that they can start tinkering and asking good questions (where "good" in this case means "other developers feel that answering the questions is a good use of their time").
One of the obvious challenges would be how to avoid the documentation growing past the point where it can be maintained, since documents (and code) tend to grow during periods of enthusiasm then rot when the enthusiasm wanes.
It would be nice if code and docco automatically got smaller when fewer people were available to work on them but nobody knows how to do that yet AFAIK ;)