The linux kernel & X have some more-or-less standardized APIs that some hardware manufacturers support to some degree; but obviously not all of them want to support all of it (currently), and certainly not many support all of those APIs. As long as they don't support those APIs, there is an almost zero chance that a common ABI can exist. In any case such an ABI would probably (have to) change quite regularly for the semi-near future anyway.
One reason why a GPU manufacturer/designer doesn't support current APIs might be that those APIs don't fit well with either their hardware or their current driver core. It seems like several manufacturers chose to create their own alternative for those APIs, instead of trying to help to fix the current API so that it works well for everybody (or maybe some "users" of the current API try to slow down changes?). At least Nvidia did the right thing for RandR this time (although a bit late maybe, but the final effort counts).
But unfortunately, GPU manufacturers aren't used to collaboration, and they don't (yet?) seem to see the advantage of it... (I'm not talking about individual cases here; individual developers inside those companies, etc.).
And of course there are the issues with patents & other stupid blah blah blah...
