>>15
GPUs are massively parallelized pure functional general purpose vector processors. The problem is that in order to do 3D acceleration, which eventually draws something into a buffer, the modern GPU has a HUGE amount of registers. These are vendor specific and this is what drivers manage.
It's actually surprisingly insecure because of the incredible complexity, which is why the command stream checkers embedded in the kernel often fails. The problem with this complexity is that it was intended to be used in a very particular way in the driver; and that way isn't inherently obvious, even with full documentation. Sadly, I can't go to the HW engineer team at AMD and ask them how exactly they intended for this to be used and so I'm already at a huge disadvantage in the driver dev phase before I've even begun. At AMD and nVIDIA, the drivers are most likely developed in parallel with the hardware, meaning they get to influence each other and make informed decisions together to benefit performance. Again, I can't exactly do that. If AMD were to release their fglrx code, it'd be trivial to see how they optimize our biggest bottlenecks, and maybe even restructure our drivers to be more efficient overall.