There were a lot of options discussed - it's hard to believe that none of them were feasible :
- use the GL 1.5-ish code paths by default (which worked on all drivers) and make GL 2.x code paths a user option
- use a (DX9-ish) subset of GL 2.x which could be supported on all of the hardware where that level of support was exposed
- use a small set of functional tests rather than blacklisting, discussed with driver devs to use what "should work", driver devs would prioritize anything that crashed those tests
- work with the driver devs to identify a set of extensions/levels which could be used to identify drivers that would work well with KWin
- in the worst case, whitelist for GL 2.x code paths rather than blacklist
I don't know how you do function tests with partly unstable drivers? Like for example nouveau, when i try the dx10+ cards then these work fine. dx9 however have got no problem with basic kde effects, but as soon as i try a game (with kernel .39) then the driver will crash. So how does your function check look like in that case? Test something and see if there is kernel oops? Something similar you find with other drivers certainly too, on some days r600g git was extremely unstable too... The best way is to know first that the driver works, therefore whitelisting is not that bad. Of course using an environment var to disable the opengl checks is a bit complicated. At least when you don't know it - usually you can not see in any gui use this var to override those settings. With kde 4.4.5 there was at least a menu option that disabled those checks. In case of bad drivers (which did not fully crash the system) you could at least press alt+shift+f12 to get from a black screen to 2d desktop. Of course if your system crashes after login you have to find the configfile to disable the setting, also not that simple... In a perfect (driver) world everything would just work and be stable as advertised, but in reality this it not always the case.
That was why I said "discussed with the driver devs to determine what should work". The challenge was dealing with driver code that was still under development and that's why working out the functional tests with the driver devs was recommended.
Not sure I understand. We're not talking about something that will make the apps immune to day-by-day regressions, just something that will determine if the app should try to use GL 2.x on that *released* version.
Especially when the functionality being used was still under development. The primary recommendation was not to automatically use the code but instead to make the GL 2.x code paths an easily selectable option.
Can I ask a question to Martin, "what has been your best ever money saving tip?"
It isn't necessary for a rolling release distro to have bleeding edge versions of every piece of software. Slackware being the prime example of this. You are correct that frequently updated backports are another way to achieve the goal of getting important fixes to users on a timely basis.
I was using xf86-video-ati and KDE together for a year or two without incident. My main problem with the open source drivers is lack of game support (and I believe this mostly due to upstream mesa limitations, not the drivers themselves). That, combined with the difficulties in running the AMD/ATI proprietary driver on non-Ubuntu distros, make an Nvidia GPU plus their proprietary driver the only viable alternative for me.
However, it was flaws in the mesa drivers which forced Kwin to do the "wrong" thing.
The drivers are supposed to report what features they support, and Kwin tried to do the right thing by querying the drivers. However some drivers crashed when queried. Other drivers would claim to support features, then crash when those features were used. To work around these mesa flaws Kwin instead used the drived identification strings. The mesa devs complained about this, but didn't offer Kwin any workable alternatives.