I was very involved in this driver subject for some years. The issue is more complicated than it looks.
Closed source GPU drivers are not ordinary drivers. They have a lot of quirks and workarounds for programs, especially games.
When a dev studio makes some mistake in its engine or the engine doesn't fit well to current workflow of the driver, a new driver is shipped with specific workarounds for this game. These quirks generally add shims between the program and the driver by basically modifying calls to the driver to increase performance.
e.g.:
- A game is calling too many clears while it shouldn't? Pool them in the shim layer and let them through in batches of 1000.
- Is a particular benchmark is overloading the card by forcibly drawing off screen portions and hurting scores? Insert a shim to prevent drawing off-screen parts and chea... ehrm, optimize the performance.
- Is an important legacy application exploiting a quirk in an older driver for something? Introduce that quirk via another shim.
When you try to port these drivers as-is to another platforms, things get awry. Also the drivers were tremendously Windows specific. This is why FGLRX had (or does it still have) various daemons, HAL layers, during its teething years.
OTOH, free/OSS drivers has no shims, workarounds and other stuff. They are just drivers. Plain, simple, vanilla. They are easier to maintain and develop. Radeon driver is such a driver. Also AMD/ATI has some more tricks up their sleeve for more stable, better drivers regardless of their platforms.
- IP separation: All of the NDA bound parts of the GPU (currently it should be the HDCP stuff only) is a different IP module on the GPU. The cards are designed so that even the Radeon driver can work with HDCP module while being completely blob free. ATI/AMD specially altered silicon and GPU architecture to enable FOSS drivers on Linux and I think its effects are huge.
- "Factory Team:" Radeon driver is carried forward by volunteers but AMD also has a dedicated team working on Radeon driver full time. This group cannot communicate with FGLRX team to prevent tainting each-others wells. So, Radeon is blessed by AMD/ATI on hardware, software and management level.
When you publish your specs, dogfood it with another team, and optimize your GPU silicon and board to accommodate these open source exceptionally well, you have a killer combination.
Closed source GPU drivers are not ordinary drivers. They have a lot of quirks and workarounds for programs, especially games.
When a dev studio makes some mistake in its engine or the engine doesn't fit well to current workflow of the driver, a new driver is shipped with specific workarounds for this game. These quirks generally add shims between the program and the driver by basically modifying calls to the driver to increase performance.
e.g.:
- A game is calling too many clears while it shouldn't? Pool them in the shim layer and let them through in batches of 1000.
- Is a particular benchmark is overloading the card by forcibly drawing off screen portions and hurting scores? Insert a shim to prevent drawing off-screen parts and chea... ehrm, optimize the performance.
- Is an important legacy application exploiting a quirk in an older driver for something? Introduce that quirk via another shim.
When you try to port these drivers as-is to another platforms, things get awry. Also the drivers were tremendously Windows specific. This is why FGLRX had (or does it still have) various daemons, HAL layers, during its teething years.
OTOH, free/OSS drivers has no shims, workarounds and other stuff. They are just drivers. Plain, simple, vanilla. They are easier to maintain and develop. Radeon driver is such a driver. Also AMD/ATI has some more tricks up their sleeve for more stable, better drivers regardless of their platforms.
- IP separation: All of the NDA bound parts of the GPU (currently it should be the HDCP stuff only) is a different IP module on the GPU. The cards are designed so that even the Radeon driver can work with HDCP module while being completely blob free. ATI/AMD specially altered silicon and GPU architecture to enable FOSS drivers on Linux and I think its effects are huge.
- "Factory Team:" Radeon driver is carried forward by volunteers but AMD also has a dedicated team working on Radeon driver full time. This group cannot communicate with FGLRX team to prevent tainting each-others wells. So, Radeon is blessed by AMD/ATI on hardware, software and management level.
When you publish your specs, dogfood it with another team, and optimize your GPU silicon and board to accommodate these open source exceptionally well, you have a killer combination.