summaryrefslogtreecommitdiffstats
path: root/_posts/2017-10-26-Fuck-you-nvidia.md
blob: 6b5f02d86ff95ac15251ad5c802eb4babfec3521 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
---
layout: post
title: Nvidia sucks and I'm sick of it
tags: [nvidia, wayland]
---

There's something I need to make clear about Nvidia. Sway 1.0, which is the
release after next, is *not* going to support the Nvidia proprietary driver,
EGLStreams, or any other proprietary graphics APIs. The only supported driver
for Nvidia cards will be the open source nouveau driver. I will explain why.

Today, Sway is able to run on the Nvidia proprietary driver. This is not and has
never been an officially supported feature - we've added a few things to try and
make it easier but my stance has *always* been that Nvidia users are on their
own for support. In fact, Nvidia support was added to Sway without my approval.
It comes from a library we depend on called wlc - had I'd made the decision on
whether or not to support EGLStreams in wlc, I would have said no.

Right now, we're working very hard on replacing wlc, for reasons unrelated to
Nvidia. Our new library, wlroots, is better in every conceivable way for Sway's
needs. The Nvidia proprietary driver support is not coming along for the ride,
and here's why.

So far, I've been speaking in terms of *Sway* supporting Nvidia, but this is
an ass-backwards way of thinking. *Nvidia* needs to support Sway. There are
Linux kernel APIs that we (and other Wayland compositors) use to get the job
done. Among these are KMS, DRM, and GBM - respectively Kernel Mode Setting,
Direct Rendering Manager, and Generic Buffer Management. Every GPU vendor
but Nvidia supports these APIs. Intel and AMD support them with mainlined[^1],
open source drivers. For AMD this was notably done by replacing their
proprietary driver with a new, open source one, which has been developed in
cooperation with the Linux community. As for Intel, they've always been friendly
to Linux.

Nvidia, on the other hand, have been fucking assholes and have treated Linux
like utter shit for our entire relationship. About a year ago they announced
"Wayland support" for their proprietary driver. This included KMS and DRM
support (years late, I might add), but *not* GBM support. They shipped something
called EGLStreams instead, a concept that had been discussed and shot down by
the Linux graphics development community before. They did this because it makes
it easier for them to keep their driver proprietary without having work with
Linux developers on it. Without GBM, Nvidia *does not* support Wayland, and they
were real pricks for making some announcement like they actually did.

When people complain to me about the lack of Nvidia support in Sway, I get
really pissed off. It is *not my fucking problem* to support Nvidia, it's
Nvidia's fucking problem to support me. Even Broadcom, *fucking Broadcom*,
supports the appropriate kernel APIs. And proprietary driver users have the gall
to *reward* Nvidia for their behavior by giving them *hundreds of dollars* for
their GPUs, then come to *me* and ask me to deal with their bullshit *for free*.
Well, fuck you, too. Nvidia users are shitty consumers and I don't even want
them in my userbase. Choose hardware that supports your software, not the other
way around.

Buy AMD. Nvidia-- fuck you!

**Edit**: It's worth noting that Nvidia is evidently attempting to find a better
path with [this new GitHub project](https://github.com/cubanismo/allocator). I
hope it works out, but they aren't really cooperating much with anyone to build
it - particularly nouveau. It's more throwing code/blobs over the wall and
expecting everyone to change for them.

[^1]: Mainlined means that they are included in the upstream Linux kernel source code.