The 303.4fps was Win7 + OpenGL, not D3D9. But yes, D3D9's high per batch overhead is old news, what isn't old news is that (nvidias) OpenGL drivers are still good enough to take advantage of this. (Most "recent" games with both OpenGL and D3D9 renderers have gotten far worse performance with OpenGL and it does show that OpenGL performance is "good enough"). As for what OpenGL version they're using it is quite likely that it is 2.x since they didn't make a clean rewrite, (its based on the Mac version afterall).
Ah, my bad - I was short of time when I originally skimmed the article and just recycled my numbers from my original comment on another forum
I suspect the GL vs DX9 speed was simply people not finding the GL 'fast path' either due to the API not making it easy or effort not being placed in that area. I don't think there has ever been a question of OpenGL's performance vs D3D9 being anything but 'good enough' - the problem was that for ages D3D9 had features GL did not which were pretty fundimental (hello FBO extension!) and driver quality wasn't that good (ATI, back in the day, I'm looking at you).
They don't mention what they basis it on, reading it seems to imply it was based off the core D3D path just with abstraction layers built in; so it doesn't really answer how they did it.
If anything this result seems to imply that despite 'batch batch batch' being shoved down everyones throats for the past X years Valve are Doing It Wrong ;)
The "problem" faced by OpenGL right now is that;
a) "Everyone" already has a D3D11 path in place and are phasing out D3D9 engines and features
b) D3D11-a-like is the expected API for the XBox
c) The biggest OpenGL market, outside of Windows, is OSX
d) OSX is massively lagging cutting edge GL development (OSX10.7 supporting 3.2; 3 year old spec on a 1 year old machine)
e) Not including Compute or requiring OpenCL interop in the core was also a mistake imo
Between feature lag in the API, an established API and tools path in existance and OSX's lag most AAA studios have no intrest in it right now; however I suspect they will be watching Valve's experiance closely and when the first numbers come out with regards to market share this might change.
(On a personally note, while I once prefered GLSL's way of doing things to HLSL's when it came to declaring inputs and varyings all that 'layout' stuff is just horrible - I'd love to know what they were smoking when they decided on that. HLSL really nails that. Same with providing things like batch ids etc via semantic tagged inputs into the main function vs globals. Really not a fan of 'magic' globals in my shaders these days; prefer to be able to name and require them myself - its the gl<Matrix name> all over again.)