How often crossbar is used? Whenever your traditional non-crossbar math done thru multitexturing units doesn't fit entirely into single pass. Like when you only have 2 texture units as most cards do.
Do they? I think most cards have 3 or 4 (Matrox G400+, Radeon 7x00, Intel Extreme), and only NV1x has 2?
Besides, how often is that? Numbers?
I cannot imagine that it is required all that much... When I still had my GF2, I wrote a Doom3-ish lighting system in D3D, and I can't say I really missed crossbar functionality. It's not like the entire lighting system fits in 1 pass anyway, on such hardware. Heck, even on ps1.1 it's a tight fit if you want to have specular aswell.
I think the usefulness of this particular extension is blown way out of proportion, while the lack of ps1.x support is simply ignored. I find both ridiculous.
I'm also leaning towards common hw functionlity so I prefer arb over extensions. But sometimes those ihv features are handy like in doom3 case.
But it is extremely slanted. Why is NV1x supported while eg Radeon 7x00 or Extreme Graphics are ignored? I would much prefer a slightly less feature-rich path which runs on all hardware of the same class.
So I don't see why you support this. First you say it's nice if you can do the same on old hw... then you support something that ignores most old hardware... basically it means that you need to get a shader card, if your old hardware is the 'wrong' brand. And I don't believe in the 'wrong brand' thing.
Also, CAD hw like from 3dlabs can expose lots of functionality thru gl extensions.
Which is nice if your customers all use 3dlabs... The CAD-software I developed for, had to run on G400s too, for example. Not all CAD-users have high-end workstations... It is not required anyway. That is probably a large misconception... I think most CAD-users actually don't have a (recent) 3dlabs card at all. Perhaps only the big guys that design cars and airplanes and such. But the stuff I wrote was for hydraulic manifolds... Not exactly the same demands as cars or airplanes or such.
I then found gl easier to use, I didn't have to mess with non-gfx related stuff as I did in d3d. I also found it much easier and faster to write test apps using gl than to deal with FVFs and some other nonsense.
Well, when I write tools, I already have a usable engine, so I just build the tools around that engine, which already takes care of all the tough stuff. After all,t hat is what engines do. Stuff like FVFs are just set once in a constructor which is called during an import function or such, and you're done... Besides, even a glVertex() style wrapper would only take about 5 minutes to write in D3D... I've always found that such a non-argument.
Also I don't accept dog-slow code, not in my tools either, so even in OGL I wouldn't use glVertex() everywhere if I could help it.
But really, all you need is just a decently designed set of constructors, and you can abstract all that stuff away, either OGL or D3D.
Anyway, what lack of primitives are you referring to? D3D can draw lines and triangles... convex polygons are just triangle fans ofcourse. What else is there? Quads? Well it's so trivial to convert quads to triangles, that it never bothered me.