Joe DeFuria said:
2) Why is having multiple IHVs each writing their own compilers "technically" good? Is it better for each IHV to reinvent the wheel?
Yes, this is much better. It is, in fact, what I believe GLSlang is supposed to do for OpenGL 2.0.
The reason it is good is simply this:
By standardizing a high-level language instead of the assembly, hardware vendors are free to change much, much more in hardware than they would be if the assembly had to be backwards-compatible, without losing speed due to emulation.
Another way of looking at it is just to look at the PC market. Why are we still bound to x86? The reason is obvious. It's because programs were closely-designed to that architecture. If, instead, a higher-level language was standardized, we wouldn't need to be tied down to the x86 architecture, and today's PCs would be much higher-performance than they are.
This is why I want to see a standardized HLSL that is made to work with compilers developed by the hardware vendor for optimal performance. Heck, it doesn't even need to be an actual language that's standardized, but, say, half-compiled code that is fully-compiled at runtime by the drivers.
And one last thing:
While not all that many developers go for support of both DX and OpenGL, a few do. Croteam and Epic are two that I'm aware of that do it right now, and others have in the past.