WineD3D: glBlend* fixes

Chris Robinson chris.kcat at gmail.com
Tue Sep 26 19:18:46 CDT 2006


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".



More information about the wine-devel mailing list