nouveau 致使部分程序启动时卡顿

不是什么大问题,也都能忍,记录一下

主要的问题

多数情况也没什么问题,Vulkan 相关的用 DRI_PRIMEVK_LOADER_DRIVERS_* 等等都可以解决。主要似乎是因为 OpenGL 相关的。

目前日常的场景主要是启动 Xwayland (rootful) 时会卡顿一两秒,期间画面冻结。

前两天 nouveau 应该是出了问题炸了,炸掉之后就不会被卡了,所以这个问题最差的一个缓解方案应该就是把 nouveau 给屏蔽掉(

设备:

NVIDIA GeForce RTX 3060 Mobile / Max-Q [Discrete]
Intel UHD Graphics @ 1.15 GHz [Integrated]

当前未安装 vulkan-nouveau,未安装 nvidia
不安装 nvidia(-open) 主要是这玩意之前在我这也出过不少问题直接一直烧着显卡或是干脆把内核弄死了

桌面环境:

niri 25.11 (b35bcae)

其他表现:

eglinfo -B 输出:
GBM platform:
随后卡顿两秒左右,有以下报错后正常输出
MESA: error: ZINK: failed to choose pdev

fastfetch 试图输出 OpenGL 信息时会卡顿。

尝试的方案

参考 https://wiki.archlinuxcn.org/wiki/OpenGL#Mesa

设置 MESA_LOADER_DRIVER_OVERRIDE=i915

没有解决。 此时 eglinfo -B 和 fastfetch 会产生段错误,看起来就不能设它:

GBM platform:
DRM_IOCTL_I915_GEM_APERTURE failed: Invalid argument
Assuming 131072kB available aperture size.
May lead to reduced performance or incorrect rendering.
get chip id failed: -1 [22]
param: 4, val: 0
i915 does not support EXECBUFER2
[1]    17635 segmentation fault (core dumped)  MESA_LOADER_DRIVER_OVERRIDE=i915 eglinfo -B

设置 MESA_LOADER_DRIVER_OVERRIDE=libdril 虽然仍有卡顿,但Xwayland 不会导致画面冻结,其他的看起来都不太像值得试的东西()

参考 https://docs.mesa3d.org/envvars.html#envvar-DRI_PRIME 设置 DRI_PRIME 变量未注意到有什么明显区别。

另此前有 vulkan-nouveau 安装时也尝试过 MESA_LOADER_DRIVER_OVERRIDE 的设置, 印象里是没解决掉(

可能有关的配置:

tlp.conf:

PCIE_ASPM_ON_AC=default
PCIE_ASPM_ON_BAT=powersupersave
RUNTIME_PM_ON_AC=auto
RUNTIME_PM_ON_BAT=auto
RUNTIME_PM_ENABLE="01:00.0"

可以尝试全局禁止 Vulkan ICD 选择 nouveau 驱动, 这样 zink 就不会跑到独显上了

已经有这俩了,现在更是连 nouveau 的 vulkan 都没装

VK_LOADER_DRIVERS_SELECT=intel_hasvk_icd.x86_64.json,intel_icd.x86_64.json
VK_LOADER_DRIVERS_DISABLE=nouveau_icd.x86_64.json,nouveau_icd.i686.json

还是说要弄别的

mesa 的 i915 gallium 驱动是给 gen3 的英特尔 GPU 用的,你可能应该试试 iris

直接设变量 eglinfo -B 会一直卡住并提示
MESA: warning: Driver does not support the 0x2520 PCI ID.

开Xwayland也还是老样子(

看一下 lspci -nn

00:02.0 VGA compatible controller [0300]: Intel Corporation CometLake-H GT2 [UHD Graphics] [8086:9bc4] (rev 05)
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] [10de:2520] (rev a1)

你之前的 DRI_PRIME 是怎么设的,设成 DRI_PRIME=8086:9bc4 呢?同时设它和 MESA_LOADER_DRIVER_OVERRIDE=iris 呢?

也可以加上 DRI_PRIME_DEBUG 环境变量看看有没有什么值得注意的输出

都还是老样子()
输出没动静,可能干脆没 DRI_PRIME 的事

试了个 vulkan 的游戏倒是有 DRI 相关的输出,不过它本来也没问题()

我觉得你可能可以去 mesa 开个 issue 问问了(

https://gitlab.freedesktop.org/mesa/mesa/-/issues

好的谢谢,我有空去问问。