diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-04-12 10:04:28 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2017-04-12 10:04:44 -0400 |
commit | b3541d9dc5e3037889026d3d918b174d9ecc9567 (patch) | |
tree | da7b2dbe82457d3f446cf094cc02e809bcd72a19 /sway/main.c | |
parent | Downgrade nvidia proprietary driver warning (diff) | |
download | sway-b3541d9dc5e3037889026d3d918b174d9ecc9567.tar.gz sway-b3541d9dc5e3037889026d3d918b174d9ecc9567.tar.zst sway-b3541d9dc5e3037889026d3d918b174d9ecc9567.zip |
Implement more thourough nvidia config check
Diffstat (limited to 'sway/main.c')
-rw-r--r-- | sway/main.c | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/sway/main.c b/sway/main.c index ab6ecc1f..39bf225e 100644 --- a/sway/main.c +++ b/sway/main.c | |||
@@ -57,24 +57,55 @@ void detect_proprietary() { | |||
57 | if (!f) { | 57 | if (!f) { |
58 | return; | 58 | return; |
59 | } | 59 | } |
60 | bool nvidia = false, nvidia_modeset = false, nvidia_uvm = false, nvidia_drm = false; | ||
60 | while (!feof(f)) { | 61 | while (!feof(f)) { |
61 | char *line; | 62 | char *line; |
62 | if (!(line = read_line(f))) { | 63 | if (!(line = read_line(f))) { |
63 | break; | 64 | break; |
64 | } | 65 | } |
65 | if (strstr(line, "nvidia")) { | 66 | if (strstr(line, "nvidia")) { |
66 | fprintf(stderr, "\x1B[1;31mWarning: Proprietary nvidia driver support is considered experimental.\x1B[0m\n"); | 67 | nvidia = true; |
67 | free(line); | 68 | } |
68 | break; | 69 | if (strstr(line, "nvidia_modeset")) { |
70 | nvidia_modeset = true; | ||
71 | } | ||
72 | if (strstr(line, "nvidia_uvm")) { | ||
73 | nvidia_uvm = true; | ||
74 | } | ||
75 | if (strstr(line, "nvidia_drm")) { | ||
76 | nvidia_drm = true; | ||
69 | } | 77 | } |
70 | if (strstr(line, "fglrx")) { | 78 | if (strstr(line, "fglrx")) { |
71 | fprintf(stderr, "\x1B[1;31mWarning: Proprietary AMD drivers do NOT support Wayland. Use radeon.\x1B[0m\n"); | 79 | fprintf(stderr, "\x1B[1;31mWarning: Proprietary AMD drivers do " |
80 | "NOT support Wayland. Use radeon.\x1B[0m\n"); | ||
72 | free(line); | 81 | free(line); |
73 | break; | 82 | break; |
74 | } | 83 | } |
75 | free(line); | 84 | free(line); |
76 | } | 85 | } |
77 | fclose(f); | 86 | fclose(f); |
87 | if (nvidia) { | ||
88 | fprintf(stderr, "\x1B[1;31mWarning: Proprietary nvidia driver support " | ||
89 | "is considered experimental. Nouveau is strongly recommended." | ||
90 | "\x1B[0m\n"); | ||
91 | if (!nvidia_modeset || !nvidia_uvm || !nvidia_drm) { | ||
92 | fprintf(stderr, "\x1B[1;31mWarning: You do not have all of the " | ||
93 | "necessary kernel modules loaded for nvidia support. " | ||
94 | "You need nvidia, nvidia_modeset, nvidia_uvm, and nvidia_drm." | ||
95 | "\x1B[0m\n"); | ||
96 | } | ||
97 | f = fopen("/proc/cmdline", "r"); | ||
98 | if (f) { | ||
99 | char *line = read_line(f); | ||
100 | if (line && !strstr(line, "nvidia-drm.modeset=1")) { | ||
101 | fprintf(stderr, "\x1B[1;31mWarning: You must add " | ||
102 | "nvidia-drm.modeset=1 to your kernel command line to use " | ||
103 | "the proprietary driver.\x1B[0m\n"); | ||
104 | } | ||
105 | fclose(f); | ||
106 | free(line); | ||
107 | } | ||
108 | } | ||
78 | } | 109 | } |
79 | 110 | ||
80 | void run_as_ipc_client(char *command, char *socket_path) { | 111 | void run_as_ipc_client(char *command, char *socket_path) { |