I know I know, nouveau sucks when comes to stability. I am curious about the motivations, maybe nvidia gpus are easier to program?
On the radeon side, the VLIW architecture means that scheduling instructions order is very important to get the best performance. The current radeon shader compiler basically doesn't exist for r600g (r300g does have one, and performance under that driver is generally much better). It just throws instructions at the card in the order they are received. I'm guessing a proper compiler could double performance. The newest SI cards (79**) are more like NVidia cards and don't need as many optimizations directly in the driver.
Also, a while ago Michael showed that enabling PCIE-2 support gave quite a boost to the radeon cards. I'm guessing nouveau drivers have that enabled.
Last edited by smitty3268; 01-30-2012 at 03:41 PM.
And as far as why slower cards tend to do better on mesa (comparatively)
I'm pretty sure it's because they are less CPU limited. (or PCIE bus bandwidth or latency limited, which amounts to the same thing)
The binary drivers have gone to great lengths to make sure the GPU is never stalling out waiting on the CPU for instructions or data. The mesa drivers aren't as good at that, but for slower cards often the CPU can keep up reasonably well. With the faster cards it becomes really obvious that some of those optimizations are missing.
It seems that, by the end of this year, Nouveau can catch-up with binary blob performance-wise, making binary blob obsolete in the same second (except for newest chip). Maby that could be a moment for NVIDIA, to get their heads out of their asses and start investing in Nouveau.
NVidia should be able to support this by providing register programming docs for at least setting functions that are not controlled by any 3rd party restricted code within their drivers..in other words they should be able to assist the nouveau developers to create a "sanitized" driver freed of any 3rd party IP code. This is pretty much the route AMD/ATI has done with the open Radeon drivers in comparison...providing code and documentation for the parts of their driver that's not encumbered with restricted 3rd party code. The missing stuff was either replaced with "clean" code or simply indicated as not implemented.
With the nouveau driver coming quite close to being on a par with the closed blob, nVidia should embrace this so at least people can continue to use their older cards that are no longer supported by their blob or even provide an alternative.