Dolphin Emulator and OpenGL drivers - Hall of Fame/Shame
dolphin-emu.org
dolphin-emu.org
Does anyone have any insight into how this ends up happening? Are Qualcomm just understaffing that team, hiring incompetent people, deprioritizing it (let the intern do it)?
After hundreds of different router models, it's vexing that so many of these companies are/were unable to come up with software as decent as ddwrt/openwrt to work on their OWN hardware. It's not even standardized across models. Why the hell would you use completely different stuff on two different but ultimately similar products you have? Why not just license one of the existing opensource solutions and call it a day?
</rant>
I kind of wish there was some open standard on this OS interoperation glue stuff -- X11+NFS+Kerberos+MIT client-cert auth was just about right for the early 90s, but we screwed it all up somehow instead of evolving it into something competitive with the two big modern closed-source environments. I mean, Linux got WINS-based zero-config link-local peer name resolution from Microsoft, Bonjour/mDNS-based resolution from Apple, but this was never a problem the FOSS community (or even the BSD folks) tried solving themselves. When there are real open-spec solutions for problems, Microsoft and Apple both seem happy to implement them; Linux just doesn't seem to want to do anything other than playing catch-up when it comes to multi-device experience.
>And because nobody seems to care about these issues
The word "quality" is very subjective in this case. Perhaps the driver already did everything Qualcomm needed it to do. Maybe the code isn't perfect, but if it's working and money is being made... "if it ain't broke, don't fix it". I'm sure a non-trival amount of people on HN have worked in less-than-good codebases, but finite resources & politics kinda prevents you from cleaning it all up with weeks of re-factoring and testing. I know I've seen this.
Wouldn't Qualcomm spec something out and have a contractor do it, and once the requirements are met that's it? No fine-tuning or extra work involved.
> OpenGL ES 3.0 includes as core functionality the features of many extensions supported in OpenGL ES 2.0 on iOS. But OpenGL ES 3.0 also adds new features to the OpenGL ES shading language and new core functionality that has never been available on mobile processors before, including multiple render targets and transform feedback. You can use OpenGL ES 3 to more easily implement advanced rendering techniques, such as deferred rendering.
https://developer.apple.com/library/ios/releasenotes/General...
I assume you're referring to "no interpreted code".
I believe the rules are that you can interpret code, as long as you supply all of the code up-front.
So if you're using Lua you can appear on the App Store, as long as your app contains all the .lua files or strings or whatever in the app bundle that gets reviewed by Apple.
So Dolphin could be allowed on iOS devices if it shipped with the games it was going to emulate, and those games didn't download code.
EDIT: From yet another perspective, maybe rolling your own crappy driver infrastructure and OpenGL implementation that only you and your colleagues understand is the smartest decision of all.
Building your own might sound like a great idea when you first start out: you can fix any bugs you want without having to trudge through the giant amount of open-source code and keep up with all the architecture changes since.
Also, sometimes companies make dumb decisions. The fact that Mali and Qualcomm share some code smells to me like they've licensed a GL implementation from a third-party, which could be a reason why we aren't seeing any bug fixes: they don't have the source code to their own GL implementation.
The cost of actually fixing a bug is proportional to the amount of time which has elapsed since the code was written. The cheapest time to fix a bug, of course, is right when a programmer is initially writing something, and it only gets more expensive as time goes by. This is why writing unit tests is so important; if you can catch bugs up front you'll end up saving a lot of pain and agony of trying to go back and figure out what went wrong.
Another important factor is there are a lot of politics in big companies. If there isn't an advocate (usually an engineer) who demands that a bug gets fixed, the bug probably isn't going to be fixed. The problem with advocating for something though means that you need to spend some political capital. When it comes to bugs, unfortunately there isn't a lot of positive political capital that you'll recapture as a result of fixing it. Managers aren't going to get praised for the lack of bugs in a particular piece of software, unless the software was buggy to begin with, someone complained loudly about it, and they went in and cleaned it up. If that happens and they were responsible for the bugs to begin with, they're probably not going to want to highlight the fact that it was their fault.
This leads to fun things like using the threading API causing a device reset, and the device reset API doing nothing.
We eventually settled on
int i = 0;
while (1) {*i++ = 0;}besides that almost gossip, i never dealt with qualcomm. So i couldn't say anything about their quality.
What did surprised me on that article was ARM. always thought they had very good people and products.
1 - Hardware companies DO NOT KNOW how to develop software. The one that knew best was Nokia and see what happened to them. That's why mobile vendors are moving to Android or "pre-packaged solutions"
2 - They usually go for the pre-package corporate BS "solutions" for their development process, like Java in underpowered hardware, "solutions" that involves shuffling huge amounts of XML, "tools" like clearcase, etc. Don't think for a second this doesn't affect software quality (for the worse)
3 - The way people end in companies like that is: "I'm focusing on a stable job", hence knowledge of latest technologies (like OpenGL - that "latest" in a very wide sense) tends to suffer.
So, yeah, absolutely, 100% not surprising to me.
By helping out the FOSS community to have better OpenGL driver support it will get Valve Software a lot of goodwill. Projects like Dolphin will benefit from it, and of course those Steam Linux games will as well.
I really want to see the Linux Gaming Platform take off, many game developers avoid Linux ports because of buggy OpenGL drivers and bad support of it. I think Microsoft did this with DirectX standards because I remember early on DirectX drivers were buggy and game companies wanted to stay with DOS based games and not port to Windows, because DOS had better video support drivers. Once Microsoft worked with video card OEMs to improve their drivers and DirectX support, the video game companies ported their games to Windows 32 bit format (Windows 9X and then later NT/2000/XP) because of DirectX based libraries and better drivers and fewer bugs. It will take a company like Valve to coordinate the OpenGL stability between OEMs to get it stable enough to port games to Linux.
The second issue is with the driver subsystem. The kernel developers need either a) stop breaking the existing driver interface ever other release or b) create new modern interface that's stable like MS did with Vista.
Imagine if every windows update, you had to worry about you games not working because MS might break the drivers. This is how Linux is now. This situation is especially bad for users with old and very new cards. For example, my X1900 can't run the catalyst drivers with any modern kernel, making it useless in Linux as my spare gaming rig. Of course it works perfectly in Win7, running about 2-5x faster than the worthless, buggy, open source drivers.
Fixing the video driver subsystem is exactly the kind dedication that would prove to me that Value is serious about making Linux a competitive gaming platform and likely convince me to purchase a SteamMachine.
AMD have been shit since forever. There should be a message with giant letters printed on each box saying "THIS PRODUCT DOESN'T HAVE LINUX DRIVERS WORTH A DAMN".
Not that it helps your situation now, but maybe if you upgrade in the future, try with an nvidia card?
I don't use most of the extensions that the Dolphin guys are using, though, and I wouldn't expect anything but the most basic ES 3.0 stuff to work. But maybe spending so many years on mobile has taught me to have low expectations! :).
This, and the post is not solely about performances. In fact, it's only a minor component, most of the notes and complaints are about outright bugs and broken implementations.
And of course, you "wouldn't expect anything but the most basic ES 3.0 stuff to work" while the Dolphin guys are porting down from desktop-class graphics backends.
[1] http://www.opengl.org/discussion_boards/showthread.php/16354...
http://www.g-truc.net/doc/OpenGL%20status%202013-04.pdf
I suppose same methodology could be applied to mobile drivers too.
But yeah, the Mali driver has various performance quirks and oddities (there used to be a lot of weird stuff around how you updated index buffers too).
You can then run the WebGl Conformance Tests[1]. I found that my integrated Intel did better in ANGLE and Nvidia card did better with native drivers. Epic Citadel WebGL also slightly faster with native Nvidia.
[1] https://www.khronos.org/registry/webgl/sdk/tests/webgl-confo...
(just to be clear, I'm just saying that the mobile space doesn't have to be horrible, so the adreno doesn't really have that as an excuse).