On 27/09/06, Chris Robinson chris.kcat@gmail.com wrote:
In the case of WineD3D, it should have an OGL version -> D3D version map. So if, say, OGL 2.0 is functionaly equivilant to D3D 9, then it'd report D3D 9 right off the bat for OGL 2.0 drivers; if added extensions can make it functionally equivilant to D3D 10 (say, in the future), then Wine can check for those extensions after determining the OGL version. Then if OGL 2.2 is functionally equivilant to D3D 10, and 2.2 is detected, then D3D 10 is reported right off the bat (assuming Wine has the API structure to handle it, of course), and if extensions can make it behave like D3D 11, then Wine can check for those extensions after checking the OGL version.
D3D doesn't quite work that way, but it's pretty much irrelevant to the discussion.
The bottom line is, though, that if Wine uses OpenGL 2.0, and a driver reports OpenGL 2.0 with no extensions (at all), Wine should still be able to use full OGL 2.0 functionality. If it doesn't, Wine is broken. By ignoring the version number and going on extensions only, you're basically saying "I only use OpenGL 1.0, plus whatever suppliments to 1.0 the driver reports".
While theoretically that's correct, I think checking GL version numbers is more trouble than it's worth. Aside from the version number not always being quite correct, there's also the issue of some core functionality being slightly different than the corresponding extension. Also, I've yet to see a driver that doesn't report the extension while supporting the functionality in the core.