niri 在混合显卡笔记本外接显示器上出现延迟卡顿怎么解决?
【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niri
在同时拥有核显和独显(hybrid GPU)的笔记本上,niri 外接显示器时可能出现画面延迟和卡顿。本文给出 niri 官方文档(FAQ 的 “How to fix lag on external monitors connected to a hybrid GPU laptop?” 条目)确认的两条解决路径:有 MUX 开关的机型直接在 UEFI 里切换到独显;没有 MUX 开关的机型则用render-drm-device调试选项让 niri 在独显上渲染。
为什么外接显示器会卡顿
文档对这一现象的解释是:
- 混合显卡笔记本通常把外接显示器接口接在独显上,而内置屏幕接在核显上;
- niri 默认使用核显进行渲染,因此外接显示器的内容要先在核显上渲染,再拷贝到独显进行显示;
- 在部分笔记本上,这个拷贝过程会导致延迟和卡顿,且显示器分辨率和刷新率越高越明显。
这也是为什么内置屏幕正常、只有外接显示器卡顿——问题出在核显渲染后向独显拷贝这一步。
路径一:有 MUX 开关的机型(优先尝试)
如果笔记本有 MUX 开关——通常是 UEFI 设置里的一个 GPU 切换项——把它切到使用独显。切换后 niri 会直接在独显上渲染,外接显示器就不会再出现延迟。
这是 FAQ 给出的首选方案,不需要修改任何 niri 配置。注意文档同时提醒:用独显渲染会显著加快笔记本的耗电,这是与续航之间的取舍。
路径二:没有 MUX 开关,用render-drm-device指定渲染 GPU
render-drm-device是 niri 的一个调试选项,作用是“覆盖 niri 用于所有渲染的 DRM 设备”,可以强制 niri 使用默认的 GPU 之外的另一块 GPU 渲染,详见 调试选项说明。
第一步:找到独显对应的渲染设备
列出当前系统的 DRM 设备:
$ ls -l /dev/dri/ drwxr-xr-x@ - root 14 мая 07:07 by-path crw-rw----@ 226,0 root 14 мая 07:07 card0 crw-rw----@ 226,1 root 14 мая 07:07 card1 crw-rw-rw-@ 226,128 root 14 мая 07:07 renderD128 crw-rw-rw-@ 226,129 root 14 мая 07:07 renderD129以上是 快速开始文档 中的文档示例输出。文档说明混合显卡机器上通常会出现两个card设备和一个或两个render设备(如renderD128、renderD129),你需要把独显对应的那个render设备路径填进配置。
如果无法确定哪个renderD属于独显,可以按文档的思路逐个尝试:先用一个render(或card)设备配置、重启 niri 观察,不行再换另一个。
第二步:修改 niri 配置
niri 的配置从$XDG_CONFIG_HOME/niri/config.kdl或~/.config/niri/config.kdl加载(两者都缺失时才回退到/etc/niri/config.kdl),见配置说明。打开~/.config/niri/config.kdl,加入一个debug段,把/dev/dri/renderD128替换为你第一步中确认的独显设备路径:
debug { render-drm-device "/dev/dri/renderD128" }保存前可以先用niri validate解析配置、检查语法错误。然后保存配置并重启 niri——文档给出的操作就是“保存,然后重新启动 niri”。niri 的默认配置中退出 niri 的快捷键是Mod+Shift+E(TTY 下 Mod 为 Super 键),重新登录或重新在 TTY 启动 niri-session 即可生效。
验证是否生效
FAQ 给出的成功条件是:切换后 niri 在独显上渲染,外接显示器不再出现延迟。用同样的负载对比外接显示器的流畅度即可判断。
限制与相关边界
- 耗电:让独显承担渲染会让笔记本电量消耗明显变快,这是文档明确指出的代价;
- 调试选项不保证稳定:所有
debug {}选项不受 niri 的配置 breaking change policy 保护,文档提示它们可能随时被修改或停止工作,见调试选项总览; - 卡顿与分辨率、刷新率相关:同一台机器上,提高外接显示器的分辨率或刷新率可能让问题更明显;
- 区分不同症状:如果你的 Intel + NVIDIA 混合显卡组合上出现的不是卡顿,而是屏幕不点亮、只显示白色等画面异常,那是另一类已知问题。文档提供的处理方式是在
debug段设置disable-10bit-output禁用 10-bit 输出格式,直到 Smithay 修复该问题,见对应选项说明。
【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niri
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考