I have now spent two weeks using the open source Nouveau driver on my desktop and I have some results here. Let's see how well Nouveau did for me!
Let's start by talking a bit about a thing called GPU reclocking. By default your GPU will most likely be running at a low clockrate to conserve power and prevent unnecessary heat build-up. Only when the GPU power is really needed, it will get reclocked to a higher power level by the GPU driver. For the longest time this was a problem with the Nouveau driver as it suffered from a lack of GPU reclocking, leaving your GPU to the lowest possible power level each and every time. So it's not surprising that Nouveau gained the reputation of being a very under-performing driver.
Work has been done to fix this issue recently and on some cards you can access higher power levels. This is done manually by echoing values into /sys/class/drm/card0/device/pstate. Not really all that intuitive but I was able to reclock my GPU. However, this functionality is still very experimental and attempting to reach the two highest power levels turned my screen into pixel salad.
Luckily I had some reclocking capability and I was able to push my cores up to around 79% of the maximum clock rate. In the case of my GTX 760 that means 966 MHz out of 1228 MHz. Memory clockrate wasn't too good and the 0a power level I had access to only yielded 1620 MHz out of the 6008 MHz maximum, which naturally affects the performance in some games.
But regardless of these reclocking limitations, performance with most games has been surprisingly good. When I last tried Nouveau the clockrates were limited to the BIOS values which are too low to run most 3D games at a reasonable framerate. Now I get over twice as much power out of my GPU and the results reflect that.
A surprising amount of games work just fine with Nouveau, some of them even being big titles. Naturally you are limited to games that run on OpenGL 3.3, so Metro Redux and Bioshock Infinite are out of the question but the majority of games out there still use GL3. So these past two weeks, even if I haven't gotten to test out Bioshock Infinite, haven't been completely devoid of games. My gaming has mostly consisted of Mount & Blade: Warband and Cities: Skylines but, like I promised at the beginning of the experiment, I also widened my horizons just a bit and tried to play as many games as possible.
In basic usage Nouveau mostly worked flawlessly. One annoying thing has been this weird vertical purple line on the left side of my monitor. It's only a pixel or two wide, so it doesn't really negatively affect my screen space but it was a bit distracting at the beginning. I barely even notice it now but it's a thing I'd like to get rid of. It also seems like the image quality took a hit when I switched from the blob and everything seems a bit blurrier. I'm not quite sure what is the cause for that but luckily the difference is barely noticeable and I forgot about it in two days. Some software can also make Nouveau act a bit wonky. For example viewing a video in Flash (ugh) in a browser and then switching to another workspace while the video is playing seems to somehow mess with the screen buffer and make all kinds of weird things happen on the screen. I ended up switching to HTML5 video on YouTube with Firefox due to this problem. Same thing happened with SimpleScreenRecorder when I attempted to capture a certain region of the screen but fullscreen recording worked fine. The area I was recording also looked normal. Maybe someone with more knowledge can explain what might be happening with that. OBS was also a dead end and only seemed to output weird, distorted green video even when the preview looked fine. So video production was a bit tricky at times on Nouveau.
Okay, let's talk about something that might interest you more than my video production worries. Let's see how games worked on Nouveau.
I have to say, I was positively surprised by the performance of various games. Games like Mount & Blade: Warband and Xonotic worked absolutely fantastic with average framerate of 60 fps and beyond. I also had plenty of success with Source titles, including Counter-Strike: Global Offensive which also ran at solid 60 FPS. Valve certainly has optimized their games well. The only Source game that wouldn't cooperate was Left 4 Dead 2 which for some reason complained about glGetError. As far as I know my card should support the necessary spec even on Nouveau, so it could be a bug either in Nouveau or in L4D2. I also tried Dota 2 and after some slight tweaking it too ran at 60 FPS. Sadly my testing with it was limited by my abilities so I couldn't do extensive testing with it.
Note: the following CS:GO video was captured at 720p but that was to compensate for the recording. The game actually ran at 60 FPS at 1080p.
https://www.youtube.com/watch?v=3vo26bzWPlo
https://www.youtube.com/watch?v=H3pZkgHTg0U
Those games are nice, but surely you'll want to see something more. So let's bring in the big guns. Borderlands 2 and The Pre-Sequel were games you wished I would test, so I downloaded them both. The results were a bit mixed. TPS ran at a solid 60 FPS but it crashed only after a couple of minutes of play. BL2 on the other hand ran at a lower framerate, around 30 FPS, but seemed more stable. To my understanding they should run on the same engine so I'm left puzzled why one is more stable than the other. The performance difference is easier to explain, since BL2 has more going on in its world than on the barren moon of TPS.
The following video was captured at 720p with everything set to low.
https://www.youtube.com/watch?v=bazxhfnd8qY
When you think of a graphically intensive game, what comes to mind? Well, some people would say Metro: Last Light and that's what I decided to test. Due to the missing GL4 components in Nouveau I had to go with the original Metro port, but that's better than nothing. The results were surprising. Not only did Metro: Last Light run but it actually ran pretty well. It's most certainly not solid 60 FPS all the time but without recording it did manage to mostly stay above 30 FPS. The more open areas and large amounts of fire did have a pretty big impact on the framerate but I'd consider it playable if not smooth. I also tried some Unreal Tournament pre-alpha. Not the smoothest experience ever but once again playable.
https://www.youtube.com/watch?v=EXSMFjT-mA8
https://www.youtube.com/watch?v=y76zJOCNCLU
You also wanted me to find out how well Unity3D games worked. Here the results were a bit mixed. Interstellar Marines, unsurprisingly, ran at 20-30 FPS and Kerbal Space Program didn't do much better. Wasteland 2 also had trouble reaching 30 FPS. Not all Unity3D games performed badly though. Ziggurat, one of my favourite Unity3D games, ran at a respectable 40-60 FPS at 1080p and at a pretty much solid 60 FPS in 720p. Hand of Fate also ran at an acceptable 30-40 FPS.
The experiment wasn't just sunshine and rainbows though. Let's take a look at the disaster department.
While most games would run, some stubbornly crashed and burned either after just a couple of minutes of gameplay or immediately after launching them. The Feral ports were especially unlucky. XCOM: Enemy Unknown would crash immediately when you entered combat and Empire: Total War was even worse. When you started up Empire it would first turn everything on your screen red and then lock up your GPU entirely, making your computer hang. Sometimes the OS managed to recover from the situation by restarting Xorg, sometimes it would just hang until you forced a reboot. Same thing happened with Talos Principle and War Thunder. These GPU lockups were probably the biggest problem I encountered, since they made everything crash, not just the game and recovering from them was time consuming and annoying.
Luckily they didn't happen just randomly. They consistently only happened when certain games were run or when you tried to do something a bit “exotic”. I found a way to trigger it by streaming a game from my desktop to my laptop using Steam's In-Home Streaming and then trying to alt-tab on my desktop. If I let the host be, In-Home Streaming itself worked flawlessly.
In conclusion, Nouveau isn't perfect but it most certainly isn't unusable. A hardcore gamer probably wouldn't find Nouveau to be all that useful but for someone into more casual games and possibly an interest in software ethics it could be just powerful enough. Though someone like that probably would rather use an AMD card with a lot more complete open source driver. It's also not the most newbie-friendly, since you have to navigate quite deep into the system folders to even reclock your GPU. Once that process is automated and you can reliably access the highest possibly power states, I can see Nouveau becoming a viable alternative to the blob even for the less-technical people.
This experiment was a pretty fun one and I enjoyed testing all kinds of stuff with Nouveau. I imagine some of you might also want to test Nouveau to compare your experience to mine but a word of warning before you wipe that blob of yours: GPU support in Nouveau is limited. Especially if you are on one of those new Maxwell cards (GTX 750 + 900 series) you might find that you completely lack graphics and the reclocking only seems to work on Kepler hardware. So if you have a 600 or 700 series card you might be able to test it out. No promises, I'm no Nouveau dev.
Hopefully you found this experiment interesting. I will definitely keep an eye out for Nouveau's progress and probably test it out a lot more frequently than I've done so far. Have you tested Nouveau recently? What have your experiences been with it?
X-COM:EU/EW locks the GPU. Anything even remotely taxing will run like a car with cubic wheels.
EDIT: For who is curious: AMD Radeon HD 7770 Cape Verde.
Both XCOM and Empire:TW run fine with R600, so that must be a Nouveau bug. Did you test gallium-nine at all? It's definitely worth giving a shot imo.I spent a couple of hours trying to sort it out for testing but I couldn't figure out the necessary configurations in time. I am not too skilled with Wine or Gallium3D, so in the end I just got frustrated and left Gallium-nine out of the testing entirely.
As someone with an AMD card believe me, the OS driver isn't nearly as good as some people claim it is.I see that you use openSUSE. Is that openSUSE 13.2 or openSUSE Tumbleweed you are using? I hope to not sound condescending by saying this, but open source graphics drivers on Linux benefit from the latest Linux and Mesa updates. Do you have the latest version of Linux and Mesa?
X-COM:EU/EW locks the GPU. Anything even remotely taxing will run like a car with cubic wheels.
EDIT: For who is curious: AMD Radeon HD 7770 Cape Verde.
As far as I can understand, Vulkan drivers will be a separate beast entirely.
So my question of the day is, what is stopping nVidia from open-sourcing it?*
Get hype?
* again according to my limited understanding the main counter-argument for their OpenGL driver was 'legal issues'. I wonder if that is an euphemism for 'assholes in Redmond'.
As someone with an AMD card believe me, the OS driver isn't nearly as good as some people claim it is.
X-COM:EU/EW locks the GPU. Anything even remotely taxing will run like a car with cubic wheels.
EDIT: For who is curious: AMD Radeon HD 7770 Cape Verde.
Must be your machine, as I can run this game just fine on my HD 6950 with Mesa on Archlinux.
Actually I run pretty much everything apart from Natural Selection 2 (doesn't work since many months on Mesa), Dead Island and Dying Light fine, which I play on Windows for the time being.
Well, I am on arch with a 3.19.2 kernel and mesa 10.5.2. Not really bleeding edge, but recent enough to expect it not to crash my GPU :( (I use an HD 6870)Well, I tried again today, but Radeon Hangs on UE4 Demos. How did you manage to get UT4 Working ? Did it work out of the box ?
Older r600g versions will hang. I don't know about bleeding edge; haven't tried the very latest myself yet, but it could well be the same still.
I hope it will be sorted out before UE4 games start kicking in for Linux.
Thank you for your answer.
As someone with an AMD card believe me, the OS driver isn't nearly as good as some people claim it is.
X-COM:EU/EW locks the GPU. Anything even remotely taxing will run like a car with cubic wheels.
EDIT: For who is curious: AMD Radeon HD 7770 Cape Verde.
I'm very much satisfied with my Radeon R9 270 and opensource drivers. It's absolutely stable for standard office work (except for occasional system resume failure), and most games which don't require OpenGL 4+ run just fine. Not all of them, but most of them. The performance is sufficient, I'd say 50-80% of the Windows driver. I've bought it because I wanted to have a hassle-free experience under Linux (e.g. I can boot a bleeding edge kernel or a Live image and I don't have to deal with binary blobs, everything just works, unlike Nvidia) and play some games too (with some limitations, they indeed run OK, and much faster than with Intel).
I'm also very happy with all the steps that AMD took in the last year or so - hiring more open source developers, announcing that they'll put all their efforts into a new opensource driver on Linux in the future and get rid of the proprietary one, steadily improving the existing driver. And the driver improved a lot, it's very noticeable. I'm running Fedora as a distro with fairly new and fresh software, and every release the graphics stack becomes better and better.
It's good news that Nouveau has been improving as well, and I'm very glad for it. But truth be told, I consider experiences from the article to be a small miracle. I've had my hands on quite a few Nvidia cards in the past years and the results were extremely mixed, sometimes you're lucky if just basic 2D works, and sometimes even that doesn't. It was totally unreliable. Since that time, I completely avoid Nvidia in any of my machines. Binary blobs are too much trouble for everyone (general users and power users alike, especially if they tend to work with bleeding edge software), and Nvidia's attitude prevents Nouveau from working reasonably well even for for basic use cases. I very much hope they change their mindset in the near future. Until then, I follow the Linus example :-)
Now that I own the new Shadow Warrior I will finally be able to properly test out the new card though. Other than Trine 2 I have been lacking in terms of a decent benchmark.
I see that you use openSUSE. Is that openSUSE 13.2 or openSUSE Tumbleweed you are using? I hope to not sound condescending by saying this, but open source graphics drivers on Linux benefit from the latest Linux and Mesa updates. Do you have the latest version of Linux and Mesa?
Well, I dualboot OpenSUSE and Arch and both have the same problem, so unless I should switch to Arch testing or use the KOTD in OpenSUSE, I don't think updating will make too much of a difference.
Funnily enough I switched to OpenSUSE because when Arch rolled to... 3.14 I think (maybe 3.16?), even simply watching a video under the OS drivers would cause a kernel panic. While before that I had no problems whatsoever.
EDIT again: So many people having good experiences with the OS driver, maybe my card is simply cursed or something. There should be more lists of what hardware works well under Linux and what doesn't.
An amazingly thorough presentation, Liam, and I am impressed with the effort you went through
Only it was Samsai that did it. Credit where credit is due and all that.
I had access to only yielded 1620 MHz out of the 6008 MHz maximum, which naturally affects the performance in some games.
I hope you know that your 760GTX has GDDR5 memory, so the maximum of 6008 MHz is actually 1502 MHz, because you need to multiply it with 4. So if you tried to run your memory at a frequency of 1620 MHz, that's 6480 MHz, probably to much. I hope you didn't mix up these facts and that this comment is useless but I thought I'll just share this information.
See more from me