blob: 7e0fee2bc292bea6cb51601ac79c0898d92f54b7 (
plain) (
blame)
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
|
---
# The GT 750M (GK107M, Kepler architecture) runs under the nouveau open-source
# driver on Linux. Nouveau does not perform automatic GPU reclocking on Kepler —
# it boots at the lowest power state (AC: ~405 MHz core / ~680 MHz memory) and
# stays there. This causes severe lag under Wayland compositors (Hyprland) even
# on simple tasks like switching windows, because the GPU is starved of bandwidth.
#
# The fix is to force the highest performance state (0f: 925 MHz core / 5016 MHz
# memory) via the nouveau DRM pstate sysfs interface. We do this with a udev rule
# that fires the moment nouveau initializes the GPU's DRM device.
#
# WHY NOT nvidia-470xx-dkms (proprietary driver):
#
# Using the proprietary NVIDIA driver with Hyprland/Wayland on this GPU is
# architecturally impossible — not a configuration problem, but a fundamental
# driver limitation:
#
# - Wayland compositors (Hyprland, sway/wlroots) use GBM (Generic Buffer
# Management) — the standard Linux/Mesa buffer allocation mechanism — to
# allocate GPU framebuffers for display.
#
# - The nvidia-470xx driver only supports EGL Streams, NVIDIA's proprietary
# alternative to GBM. NVIDIA added GBM support starting with driver 510+
# (released 2022), but only for Pascal (GTX 10xx) and newer GPUs.
#
# - The 470xx branch is a legacy/frozen branch for Kepler (GT 6xx/7xx). It
# predates the GBM work and will never receive it — NVIDIA officially
# classified Kepler as legacy and ceased feature development.
#
# - wlroots (the compositor library Hyprland is built on) evaluated adding
# EGL Streams support (PR #2769) but abandoned it because NVIDIA was the
# only vendor requiring it. It will never be implemented.
#
# - Consequence: Hyprland asks for GBM, nvidia-470xx only speaks EGL Streams.
# The compositor crashes at EGL initialization with errors like:
# "does not support GL_EXT_read_format_bgra" and
# "does not support explicit sync via EGL_ANDROID_native_fence_sync".
# (Confirmed: joanbm/nvidia-470xx-linux-mainline issue #11, June 2026;
# Hyprland issue #1302; omarchy discussion #4122, January 2026)
#
# - nvidia and nouveau cannot coexist on the same device — they are mutually
# exclusive kernel modules. There is no hybrid mode possible.
#
# - nvidia-470xx reached End of Life. No further feature development.
# Only security/kernel compatibility patches are backported.
#
# CONCLUSION: nouveau is the only viable driver for Hyprland on this GPU.
# The pstate fix below is the correct and only approach to improve performance.
- name: "Force nouveau pstate to maximum on GT 750M"
become: true
ansible.builtin.template:
src: "99-nouveau-pstate-gt750m.rules.j2"
dest: "/etc/udev/rules.d/99-nouveau-pstate-gt750m.rules"
mode: "0644"
|