• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Dolphin Emulator and OpenGL drivers - Hall of Fame/Shame

Timely article. Lock if old, please.

In light of the recent announcements by NVIDIA and AMD in support of Linux for their graphics drivers, we would like to share with the world some of the experience we had developing our open source project, Dolphin, a GameCube and Wii emulator for Windows, Linux, Mac and recently Android.

At the beginning of this year, after the successful release of Dolphin 3.5, Markus Wick (degasus) and Ryan Houdek (Sonicadvance1) started working on a rewrite of Dolphin's OpenGL backend in order to be compliant to the OpenGL ES 3.0 standard. While this rewrite was needed for other reasons (it provides the foundations for very cool optimizations), compatibility with mobile devices and the future Android port of the emulator (now in beta) was one of the key goals. This rewrite was merged into the main Dolphin codebase a few months back and started to be used by tens of thousands of Dolphin users, either on OS X and Linux where it is the only viable graphics backend, or on Windows where it is available alongside our D3D11 graphics backend.

Sadly, using recent, advanced OpenGL features also meant we got to discover how bad some graphics drivers actually are at doing their job. It turns out very few applications use some parts of the OpenGL standard we need to rely on to accurately emulate a GameCube GPU. More than that, on Android, OpenGL ES 3.0 support is extremely recent and only a couple applications on the Play Store use ES 3.0 features.

Here is basically our hall of shame of graphics drivers, sorted by the number of issues we found, how hard it is to report issues to the company and how many bugs were actually fixed.

Excellent - NVIDIA
Good - Mesa
Good - Intel HD Graphics on Windows
Mediocre - AMD
Bad - ARM/Mali
Horrible - Qualcomm/Adreno

One of the reasons we wrote this post is to give some attention to the extremely bad state of mobile GPU drivers. If people want mobile to become a serious contestant for graphics intensive applications, they will have to fix these issues, and it looks more and more like Qualcomm and ARM will not be able to develop proper drivers in the future or support newer versions of graphics APIs quickly. NVIDIA stepping into the mobile world might just be the best thing that has happened for mobile graphics developers; while Dolphin cannot run properly on Tegra 3 devices because of one single missing feature (24bit depth buffer - Tegra 3 is limited to 16/20 bit depth), we are hoping we can get our hands on a Tegra 4 device in the future and that it will work as well as NVIDIA drivers on Windows and Linux.

AMD recently announced that they wanted to support Linux more, and to give them some credit they have released a lot of documentation about their GPUs internals (at least compared to NVIDIA) and contribute a lot to open source drivers (being the largest Gallium3D contributors). But so far, NVIDIA drivers are just plain better on Linux. We cannot wait to see what Mantle, the new graphics API from AMD, will bring to the table. While we currently recommend our users to not use AMD CPUs or APUs because of their terrible single-core performance (see this PCSX2 benchmark), bringing good support for Unified Memory Access support to their APUs could improve Dolphin performance a lot and reduce our high time spent waiting for copies and streaming vertices.
https://dolphin-emu.org/blog/2013/09/26/dolphin-emulator-and-opengl-drivers-hall-fameshame/
 

Easy_D

never left the stone age
AMD? Bad drivers? I can't believe it!

Edit: Beyond posting the obvious, this is a pretty interesting read.
 
Who is Mesa and how are they above AMD???

Also, as excited as I am for Mantle, its worrying to think that the same people that cant get drivers right are making an entire API...
 

-KRS-

Member
Who is Mesa and how are they above AMD??

I think they make an open source implementation of OpenGL that is used by open source GPU drivers for Xorg. Or something. It's a little confusing.
It's not that they're "better" than AMD though, it's just that AMD's OpenGL implementation has historically always been pretty shitty.
 

XiaNaphryz

LATIN, MATRIPEDICABUS, DO YOU SPEAK IT
Anyone whose done a lot of high-end OpenGL work on Linux pretty much stick to NVIDIA so this shouldn't be surprising. Weta, ILM, and Pixar are examples.
 
Who is Mesa and how are they above AMD???

Also, as excited as I am for Mantle, its worrying to think that the same people that cant get drivers right are making an entire API...

Surprisingly, open source drivers (Mesa) were far from the worst offenders: while one could assume they receive less QA and less professional testing, it turns out that we only found a few bugs in Mesa, all related to a single feature that was supported recently in Mesa 9.0/9.1. More than that, all of the bugs we found in Mesa were promptly fixed after we reported them through the correct channel (freedesktop.org bug tracker). Communication with drivers developers was always good, which is standard in the open source world: when asking on IRC, Mesa developers were very excited about having an application using their new, shiny feature.

For a developer this is probably one of the greatest things. Not only are you improving your own project, you are helping another open source project, and then every project which uses it.
 

cyberheater

PS4 PS4 PS4 PS4 PS4 PS4 PS4 PS4 PS4 PS4 PS4 PS4 PS4 PS4 PS4 PS4 PS4 Xbone PS4 PS4
AMD drivers are mediocre. Yep. There was a reason why I switched to nVidia and never looked back.

Excellent - NVIDIA
We had no occasion to test NVIDIA's response time to driver issues because we actually never had any issue with NVIDIA's OpenGL implementation, either on Windows or on Linux.

Nice.
 

-KRS-

Member
So... you're saying that they are """better"""

lol. Well yeah their opengl is better, because that's all Mesa focuses on, but I'm sure AMD could be very capable of getting their OGL implementation up to snuff if they actually bothered with it. But since most PC games that matter use D3D they don't give a shit. So that's it. They didn't give a shit about OpenGL and therefore their implementation is shitty. Actually they still don't give a shit about OpenGL, preferring now to make their own API instead of fixing their mess...
 

XiaNaphryz

LATIN, MATRIPEDICABUS, DO YOU SPEAK IT
lol. Well yeah their opengl is better, because that's all Mesa focuses on, but I'm sure AMD could be very capable of getting their OGL implementation up to snuff if they actually bothered with it. But since most PC games that matter use D3D they don't give a shit. So that's it. They didn't give a shit about OpenGL and therefore their implementation is shitty. Actually they still don't give a shit about OpenGL, preferring now to make their own API instead of fixing their mess...

AMD never really had any reason to improve their OpenGL drivers. NVIDIA, meanwhile, have to support a lot of businesses that need solid OpenGL support in other operating systems.
 

Durante

Member
Everyone who has worked with OpenGL knows this. However, I think it's really good for the authors of such a popular and widely-known project to come out and make it more public.

If more consumers know about these issues it may shame the more reluctant companies to invest more into their OpenGL driver support and standards compliance.
 
Top Bottom