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