The fact of having a common interface to submit the vertex data (static and dynamic) to the graphics card is something really good.
It is true that render to texture is something that some of us can understand as something important (more important each day for advanced effects), as it can be a common interface for nv_texture_rectangle, occlusion query, a method for doing things if a condition becomes true without losing the parallelism (something like beginif(condition1, condition2, …)), …
But one of the needs to render things quickly is having the vertices in a place where the GPU can handle them efficiently (and it is true for render to texture, for setting up a shadow map, for vertex programs, … for everything). And the lack of a common API for this, is something bad for everybody trying to do something for the consumer mass. And IHVs looking to create a common interface is something all of us should understand like the right approach (this is something we are been asking for years). And it is a sign that they have stopped (at least for a moment) of looking at their own belly button, and trying to do the right thing for developers. I think, they have understood that this is the only way developers will use the new features of their different hw. So, for me, it is good news. ARB_fragment_program, even with the small limitations exposed by jwatte, is also a very good news. As they are the big number of ARB extensions approved and existing on current drivers during the last year. What we have to do, everyone of us, is give the correct feedback to the ARB so they can make the correct decisions.
If ATI’s VAO doesn’t work for you, it doesn’t mean that it is not a good spec, it is probably because their drivers are not optimised or not working properly. I used VAO one year ago, and it freezes the computer. I tell it to ATI, with a small demo, and I haven’t tried it again until last month. Now, it is working and the speed gain is big, from 15FPS to near 100FPS (on one testing machine: PIII 800, W98, R8500), and it is in a real game, with different kind of vertices, static and dynamic arrays, …
With a common interface, and everyone using it, they will need to optimise their driver because the benchmarks will show the difference between cards from different vendors.
Of course, this is just my opinion.