11 ms·
The Truth on OpenGL Driver Quality
- ZenoArrow 12y agoSo... Vendor A - NVidia, Vendor B - AMD, Vendor C - Intel. What are the two Intel drivers?
- Spidler 12y agoWindows and Linux drivers.
- zdw 12y agoI'd assume: Vendor C #1 = Intel on Linux Vendor C #2 = Intel on Windows Given the "open source wiz kids to keep driver #1 plodding forward" and "GL on this platform is totally a second class citizen" comments in each description.
- raverbashing 12y agoHaving some small internal knowledge, I agree
- stormbrew 12y agoI can't imagine anyone taking it up, as it'd be a monstrous project, but it'd be interesting to see someone port the Linux OSS Intel drivers to Windows and/or OSX.
- datenwolf 12y agoYou'd need access to the Windows OpenGL ICD DDK which is one of the few things Microsoft doesn't hand out freely and without signing a NDA (unless the situation somehow changed withing the past few years). OTOH the ICD API should be easy enough to reverse engineer. The registry keys, where the OpenGL ICD is registered are well known and there are plenty of drivers in plenty of versions you can dissect to learn how to talk "ICD".
- kelnos 12y ago... not to mention the bit about C1 being a couple years behind spec: $ glxinfo | egrep 'OpenGL.*version' OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.1.0 OpenGL core profile shading language version string: 3.30 OpenGL version string: 3.0 Mesa 10.1.0 OpenGL shading language version string: 1.30
- deleted 12y ago[deleted]
- bhousel 12y agoI had to smile at this. I've been out of the graphics programming space for the last 15 years and it seems like not much has changed.
- kelnos 12y agoSheesh, has it really been the same for that long? I dropped out (only) about 5 years ago and had a similar thought. I enjoyed how the author didn't name names but made it pretty obvious to anyone who's dealt with this stuff before, even tangentially.
- ZenoArrow 12y agoTo be fair, I've never dealt with these drivers before, but I used to read Phoronix regularly and the companies were easy to identify from that knowledge alone.
- vernie 12y agoThe write-up by the Dolphin team is also worth reading: https://dolphin-emu.org/blog/2013/09/26/dolphin-emulator-and-opengl-drivers-hall-fameshame/ https://dolphin-emu.org/blog/2013/09/26/dolphin-emulator-and...
- clarry 12y agoIt's not just affecting 3D applications that need OpenGL though. I find it sad that we have no modern standard akin to VESA / VBE -- to get any reasonable graphics at all at your native display resolution, you have to live with an incredibly complicated (and unreliable) graphics stack. Purely CPU based rendering (which was fast enough in the 90s) is no longer a choice really.
- rasz_pl 12y agoSDL
- euank 12y agoTo expound on this comment: SDL1 defaults to fully software rendered output. You can hack in opengl hardware rendering, but it's fairly common for SDL1 games and such to be fully software rendered and run fine. SDL2 in general is hardware rendered. SDL1 is a good counter-example to "software rendering isn't quick enough anymore". You can make perfectly performant 2d games with sdl1's software rendering... 3d, not so much.
- tagrun 12y agoPeople usually use SDL1 with OpenGL, and I don't understand what part of it is "hack". Is using OpenGL with a manually created context with tens of platform ifdefs less hacky? Or is EGL/glut/<your favorite wrapper> the one true way of doing things?
- euank 12y agoIt's not a hack in that it's held together by tape, precarious, or any such thing; it's a hack because it's going around the back of SDL to do the graphics, even though SDL is supposed to do all the graphics for you. Perhaps my wording was poor. It's more of a hack than in SDL2, where all the SDL functions support hardware rendering with no need to touch OpenGL directly ever. The general point still stands that you can write performant software rendering in SDL1.
- 12y ago
- AshleysBrain 12y agoIn my experience of writing a GL Windows desktop app alone, driver bugs have been the #1 cause of stability problems for real end users. It's a complete nightmare, with pretty much every manufacturer. I guess that's what happens when hardware companies need to write software.
- kevingadd 12y agoHave you considered shipping a D3D rendering backend for your Windows clients? Or is it too much duplication?
- AshleysBrain 12y agoNo time for a startup, and we had previously used D3D and had other annoying problems (horrible text rendering, annoying redist issues, etc), so it just had its own set of problems.
- Vektorweg 12y agoI think the greatest problem is still OpenGL itself. Vendors have a hard time implementing these and other Khronos specs.
- overgard 12y agoI don't know why you were downvoted for this. OpenGL spec is a mess. I think a lot of the driver issues arise from the fact that OpenGL has so much backwards compatibility and so much complexity.
- vitd 12y agoNot to mention how obtuse it is to learn. Even without the backwards compatibility issues (which are very real), the entire mental model of how OpenGL works is completely messed up. Things like having a texture ID, which you then bind to a particular target on a particular texture unit in order to use it make so little sense to someone learning it for the first time. On the CPU, I just pass the pointer to my image to a function to manipulate it. I don't have to put it into a special slot of a special structure in a special place in memory! It took me years to understand many of these things, and I see others struggling in the exact same way on Stack Overflow, for example. So sad.
- overgard 12y agoYeah, the API is basically insane. Not to mention how many "best" practices aren't. For instance, I remember a few years ago the advice was always "Use VBO's, don't use display lists they're deprecated". Ok, but when I benchmarked them against each other display lists were still twice as fast for the geometry I was rendering than very carefully constructed VBO's. Wtf.
- orbifold 12y agoIf I'm not mistaken there are hardware reasons why VBOs will never be as fast as other methods, at least that is what I dimly recall having heard from a talk by a guy at Valva / Nvidia.
- rwbt 12y agoATI drivers are horrible on the Mac OS X platform too, even though Apple controls all their drivers on the platform. Even though Intel's GPUs are slow their drivers are very stable and work most of the time.
- mwfunk 12y agoThat's actually not true, the NVIDIA and ATI drivers are maintained by the vendors.
- mrec 12y agoIt's a bit of both. I believe Apple maintain the app-facing side of the GL implementation. Backend plugins are provided by IHVs to talk to their specific hardware, but with Apple still controlling the release channels. AFAIK there's no route for an IHV to get an updated driver to a user without going through Apple, put it that way.
- duaneb 12y agoThen how come you can't manually install driver updates? Because Apple controls the release channels and public facing interface.
- Audiophilip 12y agoYou can install Nvidia drivers on your own for OS X, look up "Nvidia Web Driver". Here's an example: http://www.nvidia.com/download/driverResults.aspx/73628/en-us http://www.nvidia.com/download/driverResults.aspx/73628/en-u...
- rwbt 12y agoAFAIK, that driver only applies to CUDA and other proprietary Nvidia platforms, not necessarily OpenGL.
- Audiophilip 12y ago
- dkarapetyan 12y agoCan someone explain why the drivers are closed source. Is it the fear that the hardware can be reverse engineered from just the driver?
- mschuster91 12y agoI believe that much of this originates from the legal department, at least in the NVIDIA case. Probably patent or IP-related.
- jra101 12y agoDriver optimizations are a competitive advantage.
- wtracy 12y agoThat, and sometimes device A is x% faster than competing device B because the driver for device A is faster, not because of the silicon. Open that up, and you give away your competitive advantage. Also, there are always rumors about $LOW_COST_PRODUCT being the same silicon as $HIGH_COST_PRODUCT from the same manufacturer, just with a few features turned off in the driver. This probably isn't true, but nobody can rule it out.
- mschuster91 12y agoRumors? Uh, no. NVIDIA is known for this (http://www.tomshardware.com/news/Nvidia-GTX-680-GTX-770-BIOS-Flash-Hack,22561.html http://www.tomshardware.com/news/Nvidia-GTX-680-GTX-770-BIOS...). IIRC one could also flash a consumer-grade card with a Tesla BIOS and "convert" a couple-hundred-dollars-card into a thousand-dollars-card.
- Crito 12y agoWhile technically the same hardware, isn't it the case that the "higher end" products are the units off the production line that met a higher QA bar? That's my understanding of how it works for CPUs. A four-core CPU with questionable functionality on the 4th core may be sold as a "3 core" CPU. Depending on how "questionable" the 4th was though, it might be possible to use it anyway.
- mschuster91 12y agoI'm completely missing the mobile space in this writeup, but I bet it is a situation even worse than ATI (no way to update the GPU drivers, short of a full OS upgrade on Android)
- simcop2387 12y agoIt absolutely is from what I've heard. There are devices where the Mali GPU works well in some games/apps with one version of the OS and are severely broken in a newer version because the driver broke a lot of things to make other apps work. It's one of the big reasons I'm hoping that with efforts like the driver for GPU for the RPI being open sourced that we'll start to see some more consistent drivers for mobile chipsets.
- mschuster91 12y agoI more fear of a world like DOS/W3.11-era games - that games ship their own drivers like back in the old days it was done for soundcards...
- mrec 12y agoOr move the whole rendering to a server in the cloud, where any awfulness is at least going to be consistent and predictable. This is what NV were (are?) pushing as "Grid", though I haven't heard all that much about it. They say they can keep latency at acceptable levels, but it strains credulity a little bit.
- ah- 12y agoAny idea wether the Intel osx driver is related to the Windows one or also completely different?
- overgard 12y agoNot a vendor per se, but since they pretty much prevent you from installing any updated drivers I'll also say: Apple's OpenGL support is horrid. Like, buggy, entirely behind the times, incredibly slow. I tend to reboot my mac into windows whenever I need to do actual graphics coding, which is a shame.
- deleted 12y ago[deleted]
- wlesieutre 12y agoA friend of mine was working on a cross platform OpenGL project and wanted to use some OpenGL extension that was originally proposed by a couple of people from Apple and somebody at Nvidia. You would assume that having proposed it, Apple would have implemented it. Nope. Windows only. Apple advertises their support for OpenGL 4 in Mac OS 10.9, but they're only up to 4.1. That's the version of the spec from 2010. No tessellation or compute shaders, among other things that were added in 4.2, 4.3, or 4.4. In particular, 4.3 would be a big step because of parity with OpenGL ES 3.
- mattst88 12y agoTessellation shaders were a part of GL 4.0. See https://developer.apple.com/graphicsimaging/opengl/capabilities/ https://developer.apple.com/graphicsimaging/opengl/capabilit...
- wlesieutre 12y agoAh, you're right. Still, compute shaders are a pretty big deal to be missing, especially for offloading calculations like particle systems and realtime global illumination to the GPU. 10.10 announcements should be starting up in not too long, so maybe we'll see improvements.
- ekianjo 12y ago> Apple's OpenGL support is horrid. Funny, they still do get a lot more game ports than Linux so far (while Linux is progressively getting there).
- izacus 12y agoMost of those things pretty much stem from the fact that OpenGL is nowhere near priority for those companies - D3D game performance in benchmarks is what sells the accelerators. Additional features like HW video encoders are second. OGL support is far behind.
- svdree 12y agoThis guy should try some OpenGL-ES development on Android. Suddenly vendors A, B and C don't sound so bad anymore...
- mattgreenrocks 12y agoWhat's horrible is I've done almost zero OpenGL dev and I could pick these out immediately based on anecdotal experiences with drivers on Windows. Vendor B might be getting better (supposedly), but I still have a tendency to shy away from their drivers (thus, them) due to past experiences.
- anon4 12y agoWell let me put it like this. I bought a Radeon 9600 back in 2003 when ATi still existed as an independent company. In the time since then, I haven't seen enough improvement to justify buying anything other than nVidia. To be fair, they are better - I haven't heard them lately crashing the kernel so hard the alt-sysrq combos don't work.
- veesahni 12y agoIs it practical to create a driver abstraction that masks cross vendor issues and provides a consistent interface to the dev? Like what jquery did for browsers.
- Negitivefrags 12y agoYes. It's called OpenGL.
- cleversoap 12y agoA lot of engines do this to some extent (eg. OGRE3D, Irrlicht, et al.) but there are pitfalls there as well. While jquery does a good job of shimming in hacks for older browsers the world of graphics programming isn't really that flexible and even newer drivers can still be a total grab bag of what they support - think of it like this: you have the latest version of Firefox and you can support everything but rendering text in italics. How would you shim that in? Can you? What if it tells you it supports it but it actually slants text the other way? What if it renders correctly but doing it the normal way takes an hour but there's a hack for only this operating system and version of Gecko that works. Also there really isn't a manual and StackOverflow is full of questions that contain all your search terms but are actually for a completely unrelated matter. So you drop it from the common interface that your abstraction presents because it's just not consistent enough.... There are also a TONNE of shader abstraction languages that transcribe to HLSL or GLSL on the fly for the same reason. tldr; Engine developers stare into the abyss and somehow the abyss gives back a projection matrix.
- exDM69 12y ago> Is it practical to create a driver abstraction that masks cross vendor issues and provides a consistent interface to the dev? Like what jquery did for browsers. Yes and no. The situation with OpenGL and drivers is quite different to browsers and jQuery. OpenGL drivers are generally quite good in implementing the API as it is specified and this is tested with a huge bunch of conformance suites. It's not like ancient browsers where one vendor's understanding of the CSS box model is different from the others'. However, OpenGL has a huge number of different versions, some require hardware support (major versions like GL 4.x vs. 3.x), while others might be software only additions (minor versions, GL 3.2 to 3.3). And then there are lots of API extensions that may or may not be available. This is a relatively simple problem to solve and we have tools like Regal and ANGLE to patch the little things. But the real problem is functional bugs. Incorrect pixels on the screen ranging from a minor annoyance to a completely destroyed image. And more severe issues like application crashes, completely corrupted display/desktop to blue screens and kernel hangs. This is something that cannot be fixed.
- lolo_ 12y agoNot to stray too off topic but what does TDR stand for? :)
- klodolph 12y agoApparently, it is a feature where Windows detects that a video card is unresponsive and resets it. http://nvidia.custhelp.com/app/answers/detail/a_id/3335/~/tdr-(timeout-detection-and-recovery)-and-collecting-dump-files http://nvidia.custhelp.com/app/answers/detail/a_id/3335/~/td...
- Someone 12y ago"you can git your hands dirty and try to fix it and submit a patch." Typo or funny wordplay?
- awalton 12y agoIntel's OSS driver is maintained in git. So, wordplay.
- ksec 12y agoI have been wondering about this for long time. The biggest cost in GPU development isn't the Hardware itself. But the drivers. Nvidia famously said they have much more software engineers then hardware guys. And as history can tell having great Hardware on paper means nothing when your Drivers aren't being up to standard ( S3, PowerVR on Desktop). Hence the smaller group of GPU maker were forced out because they dont have the resources to complete on the software front. And yet over the decades nothing has improved. When Browser wanted to do hardware Acceleration there were many Laptop GPU being blacklisted simply because they dont have any drivers update. Situation is much better on Mac because the drivers and testing happens to be the same people. There are people who wanted the GPU to be just another CPU. Intel Larrabee. But none of them has succeeded. I wouldn't have thought with GPU IP taking rounds, drivers quality being in the hands of vendor would have improve the situation abit. However it seems no one wants to invest into it. So do we have no solution for this? Rumors has it Apple are designing their own GPU. May be they are tackling the drivers problem themselves by getting rid of it?
- anon4 12y agoLarrabee did succeed - it just got rebranded as Xeon Phi and is sold as a high-performance computing PCI card.
- MichaelGG 12y agoWhat do they mean by nVidia embedding developers on teams? Like covertly getting nVidia employees hired by game teams to sabotage non-nVidia?
- mcpherrinm 12y agoNot covert at all. Nvidia engineers come to your office and work on your code for you. They know more secret sauce and contacts inside their company, so they can help you get your performance up on their chips.
- nitrogen 12y agoSo, they're Field Application Engineers, basically?
- dman 12y agoAny ideas on whether Nvidia and Intel will support opencl 1.2 on their gpus on linux anytime soon?
- sharpneli 12y agoEven though this is offtopic I'll answer: Not going to happen. Nvidia hates OpenCL as it eats their Cuda business and Intel performs market segmentation, therefore their Linux implementation supports only CPU and Xeon Phi and Windows supports the GPU. They don't want server builders to purchase their desktop chips with GPU's. They want them to purchase the massively expensive Xeon Phi and use normal Xeon CPU's.
- programminggeek 12y agoI assume driver incompatibility and things of this nature are one reason why so many games are built on engines like Unreal, Crytek, Unity, etc.? At some point you need to be working on shipping a game, not writing driver compatibility code that a framework could/should handle for you.