On the ATI/AMD side we only started serious code sharing relatively recently -- the Sep 2007 driver was the first time that real benefits were visible although work started a couple of years before that. Remember that we focused on open source drivers for Linux until ~2002 when we started working with proprietary drivers as a consequence of bringing FireGL into ATI, and that by 2007 we had re-started the open source support efforts.
Before looking for a single big reason why the open source drivers are slow relative to proprietary it's probably worth taking a fresh look at Michael's last benchmark report :
http://www.phoronix.com/scan.php?pag...our_r300&num=1
The delta between open and closed drivers has dropped to what can be explained by "a few hundred developer years of optimization" on the pre-6xx side. Drivers for the 6xx and higher generations are moving towards the same point, although they'll probably need a shader compiler revamp before they get there. The 3xx-5xx driver stacks had a fairly sophisticated shader compiler, while the shader compiler for 6xx and higher is not at the same level yet.
The secret to driver performance is not that different from the secret to a good English lawn - "just seed and roll for 150 years" ;)

