On Tuesday 26 September 2006 08:47, you wrote:
The problem is that a version check is not reliable. For instance in case of a remote X session the version number for instance in case of the nvidia drivers can be 2.0 while most extensions aren't supported. For reasons like this we can't use version checks and should only detect extensions.
Can't that be considered a broken driver then? It's reporting support for something and then not supporting it.
A version check is the only reliable method to check for core functionality. The driver is fully within OGL spec by reporting a version and not any extensions that are in core of that version, so the program needs to deal with that.
It is because of this that extensions should not be relied upon. If it's functionality you require, then you have to go on the version and the version alone. The extensions should be nothing more than suppliments for the OpenGL version you need. Think of extensions like "sneak peeks" of what may be available in future OGL versions.
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.
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".