

A Case for Open-Source GPU Drivers - ssp
http://www.linaro.org/linaro-blog/2011/11/30/a-case-for-open-source-gpu-drivers/

======
ggchappell
The reasons for not open-sourcing the drivers don't make sense to me. Sure,
the community might not have the knowledge necessary to improve your drivers,
but then no harm done. Drivers might be taken in directions you don't want
them to go? These companies release new chips multiple times per year. With
them come new drivers. Who cares what directions the old drivers take?

And furthermore, chip companies might just get free driver debugging. That
makes their chips look better. It makes them look better. More sales.

Is there any possibility that the real reason for the lack of open-source
drivers, is that in many cases "different" graphics chips are essentially the
same, and what you're really paying for with the more expensive ones, is a
driver that enables high-end functionality? Open-sourcing would wreck that.

~~~
forgottenpaswrd
"The reasons for not open-sourcing the drivers don't make sense to me. "

It makes total sense to me:

1-Every couple of years they can sell you a new card as the one that you have
does not work with the new OS.

2-Competitors can not look at the code, understand and copy it, so technology
leaders like NVIDIA are not reached by followers without significant
investment.

3-Software Patents holders(patent trolls) can not look at the code and demand
them exorbitant fees because using a buffer to paint on a computer screen is
patented by them. This is very common in the USA and the main reason companies
asked me for an NDA if I saw their drivers code.

4-People can not unblock features of cheap cards to make the same things
expensive cards does(it is very common to make only one chip to get mass
production cost and then to use some cheap hardware or software switch to
deactivate features on cheap cards).

5- Video decoding and other stuff could be out sourced to specialist companies
that demand their code to be secret by contract.

~~~
exDM69
>> 4-People can not unblock features of cheap cards to make the same things
expensive cards does(it is very common to make only one chip to get mass
production cost and then to use some cheap hardware or software switch to
deactivate features on cheap cards).

This is also sometimes done with slightly defective chips. E.g. AMD has sold
some quad-cores as three-core cpu's when one of the cores has failed some
quality control check. Sometimes they can be enabled and they work fine but
there may be a risk involved.

I know this is sometimes also done because of marketing reasons. Some years
ago, IBM was selling additional Java or DB "accelerator" chips to high-end
servers. They were in fact the same kind of processor that the server shipped
with but they were crippled with microcode so they could only run the JVM or a
DB2 server or something. I very much dislike this practice, talk about wasted
engineering effort.

------
wmf
An example problem of proprietary drivers: Nvidia doesn't support the latest
KMS/GEM APIs which are needed for smooth-looking boot and (I guess) for future
stuff like Wayland. If the driver was open, the community would have ported
it.

~~~
binarycrusader
I disagree with "needed". It's entirely possible to have a modern, "smooth-
looking boot" now even with the nVidia drivers as they are.

Wayland support is a valid point though.

Regardless, nVidia remains at the top of the pile in terms of performance and
support on Linux. Especially for high-end 3D applications like Maya, CUDA,
etc.

nVidia also has fundamental disagreements about the right graphics
architecture for the system with many of the Linux folk. I personally think
nVidia's concerns about that are valid.

It's unclear whether GEM, etc. are the right long-term approach.

~~~
jiggy2011
Saying that the nVidia drivers are "at the top of the pile" doesn't say much
for the competition.

Just a few of the problems that I have had:

1) In a 2 Monitor setup there is no way to rotate one of the monitors into
portrait mode without the other unless you create them as 2 seperate X
sessions.

2) Fullscreen almost any OpenGL app/game and it will span across both
monitors, which just looks weird.

3) A very odd issue where on my second monitor the fonts will randomly screw
up or parts of a window randomly become transparent and I can see the window
behind (seems to happen mostly with flash) through it. Only way to fix it is
to disable and then re-enable monitor.

Yes, I used to have an ATI card and I can confirm that it had just as many if
not more issues.

~~~
exDM69
>> 2) Fullscreen almost any OpenGL app/game and it will span across both
monitors, which just looks weird.

This is because the games often use a library like SDL to do the windowing.
Their idea of opening a window is called "SetVideoMode", so no wonder it goes
wrong.

If a software uses X11 windowing in a way that most apps these days do, using
extended window manager hints for fullscreen, etc, this problem would not
exist. Btw. I use my window manager's full screen feature to do this. It works
a whole lot better for games which allow resizing windows (this often excludes
SDL-based games because you explicitly have to tell SDL you want a resizable
window) than letting the game set full screen mode (usually via some horrible
deprecated X11 legacy api).

The nVidia display driver is not perfect either, it doesn't support Xrandr
yet, so expect problems with multiple displays (and rotation) until the
situation is corrected.

------
moomin
I believe a lot of the problem is that the major vendors believe they'll
expose themselves to patent lawsuits by making it easier for aggressors to
make a case.

~~~
adestefan
Besides any patents there are issues were Nvidia/AMD do not write every piece
of their drivers. They can't unilaterally open source pieces of code that they
don't even own the copyright on.

~~~
marshray
That's always an issue with open-sourcing any large code base.

It's always been worked around before.

------
sedachv
IMO all drivers need to be Free Software. The problem is that as soon as you
introduce loadable modules into a kernel, there's really no way to prevent
them because of the precedent set by Linux. One of the reasons the LGPL was
developed was the linking issue, but Linux developers seem to be ok with
letting binary blob modules as a "gray area":
<http://kerneltrap.org/node/1735>

If Linux developers had from the start demanded Free Software drivers, they'd
have had them (please spare me the arguments about "Linux wouldn't have grown
if they didn't allow binary drivers"). Letting that precedent pass means that
hardware developers don't have many incentives to provide sources for their
drivers. This affects not just Linux, but all Free Software operating systems.

~~~
alf
What incentive would hardware venders have to provide open source drivers for
a tiny enthusiast operating system? No other OSs have had that requirement.
It's hard enough to get working binary drivers.

I don't think that all the Linux driver issues would be solved with the
release of source code. Driver code already makes up a large majority of the
kernel. The sheer amount of code contained in binary drivers would dilute the
already relatively small number of volunteers available. The best way to
increase the quality of Linux drivers is to get venders to invest more in
Linux driver development. The only way to do that is to vote with your wallets
by supporting Linux friendly hardware, and increasing the size of the Linux
market.

~~~
sedachv
OpenBSD has always had a policy against binary drivers.

The reason it's "hard to get binary drivers" is because hardware manufacturers
have no incentive to release documentation for their hardware, because they
know they can get away with a binary driver for Linux. Then they call
themselves "Linux friendly" and people like you get the wool pulled over your
eyes (until you encounter a bug, or work on the kernel, or want to use
FreeBSD, or suddenly find that your hardware isn't supported on Linux 2.6.xyz,
etc, etc)

Even if they were to write Free Software drivers themselves, it's likely they
wouldn't make it into Linux anyway because of quality issues (most driver code
is shit). Community-developed drivers are frequently better quality.

Arguing that Free Software drivers would be "too much code" in Linux is just
idiotic. Let's just stop writing Free Software altogether because it's "too
much code."

------
wtracy
A missed bullet point: Ability for FOSS developers to port drivers to obscure
platforms. Right now the Haiku OS folks are having a heck of a time trying to
get hardware acceleration to work with nVidia hardware.

------
tintin
Maybe it should start with open hardware. The Open Graphics Project seems
dead, but maybe there are other alternatives.

There are a lot of open hardware projects lately. Synthesizers, computers, 3D
printers. All great examples. But video cards might be too complex to be open.

------
rhizome
First we need an open-documentation GPU.

~~~
wmf
AMD/ATI Radeon.
[http://www.phoronix.com/scan.php?page=news_item&px=OTA4O...](http://www.phoronix.com/scan.php?page=news_item&px=OTA4OA)

Even with documentation, the open source driver is not very fast because there
just aren't enough volunteers.

~~~
ChuckMcM
_"...the open source driver is not very fast because there just aren't enough
volunteers."_

I'm sure that is part of it, but also writing a high performance/low latency
GPU driver is really hard. So when you find someone who can write such
drivers, they have no time to 'volunteer' because of all the money people are
throwing at them.

It would be fabulous also if AMD would dedicate a resource to walking through
their specs and then writing a paragraph about each register and how it was
used. The original Voodoo library for the 3Dfx cards was done that way and it
really helped. We need GPU documentation for someone who hasn't designed a GPU
before.

~~~
sliverstorm
Ah, yes, the moving goalposts. I remember those.

"If only they would release documentation!"

"If only they would release really good documentation!"

"If only they would release some code examples!"

... And so it would go, with neither party ever happy.

~~~
jerf
Yes, but to be fair, it is more the hedonic treadmill than when goalposts get
hiked around in a debate as a bad-faith debating tactic. I'm using the ATI
drivers right now and I'd have loved to have had this quality of driver ten
years ago at the height of the "if only they'd release documentation" phase.

~~~
ChuckMcM
I really resonate with this comment. The drivers that exist today are so much
better than the ones we had before. They aren't as good as the ones on Windows
or MacOS but they actually do 3D acceleration and handing multiple monitors,
which they did poorly or not at all before.

So in that regard things are much better. But the grass is not only greener on
the Windows side of the fence they have better shader support to make it wave
:-) One of the things I had hoped various FOSS organizations might create
would be the equivalent to a University 'chair', a position paid for by an
endowment to the organization, to encourage some expert in the chair's area of
interest in working full time on that.

NetApp supported a group at UMich for a long time who were making the NFS
drivers in Linux better and Trond Myklebust who was the kernel gatekeeper.
Sort of a public/private partnership. That effort was working because
everything needed to succeed was pretty much available (docs, sources,
examples, etc).

I had a marketing VP at S3 (back when they were making graphics chips and not
an IP holding company) tell me that they didn't release documentation because
they didn't know if they were violating someones patent and this way even if
they were the patent holder didn't know either, it was better for everyone.

Now later events have born out the notion that patents are the center of the
dispute here, between the SGI patents, the Microsoft patents, the 3dfx and
nVidia patents, and various other players, clearly that has had a tremendous
chilling effect on open communication.

Of course Voodoo graphics were introduced in 1996, so in 2016 3D video card
patents start expiring and by 2020 most of the DirectX 9 pipeline's concepts
will be public domain. Sadly we have to wait until 2025 for shader technology
to unlock sufficiently.

