Nvidia's “Open-Source Guy” Has Left the Company
phoronix.com
phoronix.com
Aren't drivers inherently a loss-leader so that a company can sell hardware? Why not always open up the drivers?
- Driver source code may contain info that would give hints to upcoming or in-development products and innovations from the company that they'd prefer to keep secret.
- Drivers may have features disabled in software, but not in hardware - if you could compile your own, it would effectively overrule this.
- Open-sourcing drivers may make it easier for the competition to "copy" innovations and features
- "Security" via obfuscation
1) Nvidia and AMD both do per-game optimizations in the drivers themselves. Though my understand is that Nvidia has more resources dedicated to this. They will send 1 or 2 people to the studios of AAA game devs nearer release to help the company optimize their game plus to add "hacks" into their own drivers to work around inefficiencies in those games.
If they opened sourced their drivers, that work would be made free to AMD and other drivers.
2) "Benchmark Cheating". Graphics Drivers do lots of optimizations depending on the specific application. I'd wager that this includes popular benchmark apps.
3) Patent lawsuits. There are a massive number of patents around the graphics word. Obscuring how a driver works probably helps protect them somewhat from potential patent litigation.
'In the GPU space it is impossible to not infringe on the IP of other vendors.
In fact it is the major reason GPU vendors give for not having an open source driver. I have spoken to the CTO (Jem Davies) of ARM about the GPU drivers and open sourcing them more than once. And every time I've gotten the reply: "No, we can't, it opens us up to IP infringement suits."'
That clearly makes it not impossible, if they cared enough.
As far as I know, we have yet to have an open driver to get the same performance as their closed windows ones in all cases. There may be reasons behind that.
Depending on the nature of the hacks, there's not necessarily anything wrong with that. It's common for drivers, even Open Source drivers, to detect common patterns of API misuse that would otherwise hurt performance, and transform them into patterns that achieve the same effect more efficiently. But that only applies if you can detect the inefficiency by pattern, rather than by application name. If the driver does the latter, then yeah, it'd be hard to Open Source that.
Nvidia "experience" driver management software "optimizes" how games run by finding the .exe name of the game. Change the .exe filename, and your performance drops. So they are doing exactly what you suggested they might be doing.
It's worse than that. Most DirectX code is incorrect to begin with, and GPU manufacturers tailor their drivers to make stuff that should not be valid run for specific games. hence the "the way it's meant to be played" and the nonsense of newer drivers bringing 20-30% performance increase for recent games.
You can easily ship a "plain vanilla" open source GPU driver separate from the proprietary "game optimizer" code, because the former doesn't block the availability of the latter.
And if you suspect a GPU driver is cheating on a benchmark, or you have grounds to sue for IP/patent infringement, you don't need to have the source code for that. Any sufficiently motivated organization can verify that right now by disassembling the binary driver.
The fact is that clues to IP can't be removed when compiling the source to binary form, because implementation details can't be hidden. So the status quo is that they are already public. Granted, it takes more skill and patience to analyze the clues in this form, but any competent hacker can do it. And the absence of names and comments in the binary makes the job harder, but doesn't actually remove the significant clues.
And while it's true that these drivers might be using licensed code, which restricts publication of its source code, this seems like a poor excuse for keeping all the code proprietary. The existence of licensed code doesn't block releasing the rest of the code. And I'm willing to bet there is an army of volunteers out there that is more than happy to write a clean room replacement for the licensed parts, if the vendor can't do it, given the opportunity.
The sad fact is that these are entirely unreasonable claims, and that it would be wholely in NVIDIA's favor to open their drivers.
1) If they release the bulk of their driver work under a BSD-like licence, they can still keep those patches secret.
It would even be to NVIDIA's advantage to do this, since game devs would be able to work with the original driver codebase, and know what to expect from it; and therefore write better code in the first place.
2) Same as #1
3) Intel has open drivers. AMDGPU is open. This is a sad excuse, not a valid reason.
AMD drivers ship important blobs...
Competing manufacturers have not suffered as a result of releasing free Linux drivers, and arguably are profiting from it.
Why care whether the driver is open source? Just consider the driver as part of the black box that is the product. The vendor will provide you with a blob of binary code that you can invoke. This binary code can be the same on Windows and Linux. Of course, a driver has to interact with the kernel, but the required glue logic can be maintained separately.
Edit: Of course, the driver should be run inside a controlled environment (e.g. a sandbox), but this arguably holds for all drivers, even open-source ones.
IMHO
tl;dr ABIs are an implementation detail, what people want are stable drivers. And if Linux did provide a stable ABI, then people would create midlayers, which silos everyone and encourages them to improve their midlayers instead of improving the base, and the improved base is what makes Linux so good in the first place. Using the base is necessary for community interaction.
What makes you think that?
You compromise when you're the little guy, or you lose. (And I don't think the Linux maintainers really care about the desktop all that much, so I understand the decision and it's totally okay in my book. That's why I went back to a Mac and Windows on the desktop. Different tools for different jobs.)
https://web.archive.org/web/20160930051146/http://www.thereg...
"Capcom's Street Fighter V update installed a driver that can be used as a backdoor by any application installed on a Windows computer." (via https://www.gnu.org/philosophy/proprietary-back-doors.html)
https://en.wikipedia.org/wiki/Defense_in_depth_%28computing%...
Of course, the firmware should be open, too.
When a driver is closed source, the only people who can fix bugs, keep the driver updated, patch security holes, implement new APIs like Wayland, Vulkan, OpenGL extensions, etc. are the employees of the company who owns the driver.
Was it important for AMD to make old ATI cards work with newer versions of Xorg? With Wayland? With Windows? AMD certainly didn't think so. Since the existing driver was proprietary, those that did care had to implement another driver from scratch!
Open source drivers exist for practically every video card, and have for decades. The problem is that they all suck except those that were supported by the manufacturer in the first place.
That literally cannot work. The driver is the program that does interaction with hardware.
Unless you mean to put your computer inside a literal box and fill it with sand, which is just hard on those fans.
I can't believe I am reading garbage like this on a forum called "Hacker News." Richard Stallman literally started the Free Software movement because the driver to the Xerox 9700 laster printer was closed source. Please read Steven Levy's Hackers and Sam William's Free as in Freedom. Asking "why care whether the driver is open source" to me as a hacker is like asking "why care whether you are a slave?"
As the performance of this system is absolutely critical, a large part of the value proposition of a GPU is its driver package. Since nVidia clearly leads the pack in the quality of their drivers, they have no intention of opening them up.
If you compare the whole driver stack, KMD+UMDs (OGL,DX,CUDA,Vulkan) to just the kernel part of Linux, sounds about right. The KMD alone is definitely smaller than Linux kernel.
Drivers should never be proprietary. There are no legitimate reasons for them to be, only sad excuses.
Are you an IP lawyer? I'm not, but I work with people who are, and they would disagree with you rather strongly with regard to certain cases and certain fields. It's pretty presumptuous to tell people what legal risks they should expose themselves to (and to forestall the tired and obvious, it's great that Intel thinks that they're OK and can open their stuff--but I sure get why others aren't so cavalier).
It is a sad excuse, but only because we live in a sad reality with massively broken patent laws.
No. Nor do I claim to be.
Did I say that excuse was ill founded, or that it has no basis or support in fact? No. It is, indeed, a valid excuse. That doesn't mean it's a good excuse. Who is going to sue then over IP? AMD? Intel? NVIDIA is touted to have the best drivers. By that logic, NVIDIA should sue Intel, after all, Intel got into graphics much later, so they must be violating NVIDIA's IP, right?
When it is said that "NVIDIA cannot open their source because of potential litigation", that is an excuse, not a reason. That is a potential difficulty of change, not a reason to be stagnant.
I understand how those at NVIDIA might think they need to stay proprietary. There are several valid excuses they can use to support that claim, but each excuse I have heard does not hold up in reality: NVIDIA certainly can and should change.