Debian 11 的屏幕问题

Debian 11 的屏幕问题

我遇到了屏幕闪烁的问题,在不间断的工作中每小时会随机出现几次。鼠标拖动后,它就会消失,但我对这种行为的原因感到困扰。

不久前,除了这个问题之外,显示器边缘附近还出现了一个透明斑点。

我有一块 Nvidia G960M 显卡,以下是输出英伟达-SMI命令:

在此输入图像描述

当前设置的窗口系统是X11:

在此输入图像描述

显示管理器是GNOME。

我的显示器的分辨率是 1920x1080。这刷新率为 60.02Hz(尽管我尝试了 120.02Hz、59.xHz 相当长一段时间)。此外,我使用小夜灯显示功能,温度设置为 1800。

最近,我发现了一个透明斑点在我的显示器上。首先,它是一个点,然后细分为两个点,现在又像以前一样,变成了一个斑点。

我根据类似问题的答案尝试了几种方法,但都没有奏效。

我的问题是如何修复 Debian 11 中的屏幕闪烁?难道和最近出现的透明斑点有关?

更新

/var/log/Xorg.0.log 的内容可通过关联

输出来自xrandr --listproviders命令:

❯ xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x44 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 3 outputs: 2 associated providers: 0 name:modesetting

答案1

英伟达 G960中号建议使用笔记本电脑,因此它可能具有双 GPU:一个独立的 Nvidia GPU 和一个集成到主 CPU 的更节能的 iGPU。这被称为 Nvidia 的“Optimus”配置。历史上,这些在 Linux 中处理起来有点尴尬,特别是在 Debian 中,但幸运的是 Debian 11 拥有足够新的组件,Optimus 现在的支持应该相当顺利。

您的 Xorg.0.log 确认您确实有双 GPU:

[ 10944.179] (II) modeset(0): glamor X acceleration enabled on Mesa Intel(R) HD Graphics 530 (SKL GT2)
...
[ 10944.204] (II) NVIDIA(G0): NVIDIA GPU NVIDIA GeForce GTX 960M (GM107-A) at PCI:1:0:0

但当前只有 Intel iGPU 的modeset驱动程序正在检测连接的显示器。

[ 10944.189] (II) modeset(0): EDID for output eDP-1
...
[ 10944.190] (II) modeset(0):  LG Display
[ 10944.190] (II) modeset(0):  LP156WF6-SPK1
...
[ 10944.195] (II) modeset(0): Output eDP-1 connected
...
[ 10944.195] (II) modeset(0): Output eDP-1 using initial mode 1920x1080 +0+0

Nvidia 驱动程序无法找到连接到 Nvidia GPU 的任何显示器,并且默认虚拟屏幕尺寸为 640x480:

[ 10944.204] (II) NVIDIA(G0): Validated MetaModes:
[ 10944.204] (II) NVIDIA(G0):     "NULL"
[ 10944.204] (II) NVIDIA(G0): Virtual screen size determined to be 640 x 480
[ 10944.204] (WW) NVIDIA(G0): Unable to get display device for DPI computation.

intel根据我的经验,如果您的配置使用旧的iGPU 驱动程序而不是较新的基于内核的modesettingiGPU 驱动程序,则某些使用屏幕调光的窗口管理器效果可能会导致某些 Intel iGPU 型号闪烁。但由于您的日志表明您已经在使用modesettingX11 驱动程序,因此这不是闪烁问题的根源。

您的活动 GPU 目前是 Intel HD Graphics 530,其中包括一些带有自己的可加载固件文件的微控制器组件。这些微控制器被称为:

  • 显示微控制器 (DMC),负责在低功耗和正常状态之间转换时保存和恢复显示引擎状态。
  • 图形微控制器 (GuC),也与电源管理和快速 GPU 上下文切换相关。
  • HEVC/H.265 微控制器 (HuC),专用于 HEVC/H.265 视频编解码器操作。

闪烁让我觉得可能与 GPU 电源管理或上下文切换相关的事情没有按应有的速度发生,这可能是由于缺少 DMC 或 GuC 固件造成的。确保您已安装 Debian 11 存储库部分firmware-misc-nonfree中的软件包non-free:它包含 Intel iGPU 所需的所有固件文件。

为了确保固件确实被下载,您可能需要为i915驱动 Intel iGPU 的模块添加一些模块参数。创建/etc/modprobe.d/i915.conf包含以下内容的文件:

options i915 modeset=1 enable_guc=2

由于 Linux 中 GuC 微控制器的使用仍处于实验阶段,因此这些选项指示驱动程序仅使用最小的已知安全操作集。

添加此配置片段后,运行update-initramfs -u以便添加的选项将包含在 initramfs 中,因为i915驱动程序通常在启动过程的早期加载。


如果笔记本电脑硬件不包含用于在 GPU 之间切换输出的多路复用器(称为无复用器Optimus),然后每个显示连接将硬连线到特定的 GPU。在此配置中,您仍然可以使用两个 GPU,但有时必须将显示数据从一个 GPU 传输到另一个 GPU(称为“PRIME 渲染卸载”或“反向 PRIME”,具体取决于传输方向)。

有关 Debian 维基的更多详细信息:https://wiki.debian.org/NVIDIA%20Optimus#PRIMEOffload

如果您的笔记本电脑的硬件确实包含多路复用器,那么它应该可以使用 Linux 进行控制VGA切换器子系统。在无复用系统上,当您知道不需要 Nvidia GPU 和/或需要最大限度地减少电池功耗时,您还可以使用它来完全关闭 Nvidia GPU。

通常在具有无复用 Optimus 硬件设置的笔记本电脑上,笔记本电脑的集成显示器将硬连线到 iGPU,以便在未连接外部显示器且不需要高性能 3D 图形时最大限度地减少电池电量使用。


我的工作笔记本电脑的配置与您的配置非常相似,因此这里有一些在 Debian 11 上使用 Optimus 的技巧。

这与您的闪烁问题无关,但为了准备您的 X11 服务器以在 PRIME 或反向 PRIME 配置中使用两个 GPU,您可能需要添加一个配置片段,如下所示/etc/X11/xorg.conf.d/20-optimus.conf

Section "Screen"
    Identifier "DefaultScreen"
    GPUDevice "Nvidia dGPU"
    Device "Intel iGPU"
EndSection
Section "Device"
    Identifier "Intel iGPU"
    Driver "modesetting"
    BusID "PCI:0:2:0"
EndSection
Section "Device"
    Identifier "Nvidia dGPU"
    Driver "nvidia"
    BusID "PCI:1:0:0"
EndSection

添加此操作后(并重新启动 X11 服务器或重新启动),您xrandr --listproviders应该列出两个提供程序(即两个 GPU 驱动程序),并且您的配置应该准备好进行 PRIME 或反向 PRIME 操作。

对于 PRIME(即笔记本电脑内部屏幕上的 Nvidia 增强图形),只需为任何需要高性能图形的程序设置以下两个环境变量:

__NV_PRIME_RENDER_OFFLOAD=1
__GLX_VENDOR_LIBRARY_NAME=nvidia

对于反向 PRIME(使用通过 Nvidia GPU 连接的显示器来扩展当前的桌面配置),您需要运行两个命令:

xrandr --setprovideroutputsource 1 0   # tell Nvidia to accept display data from Intel
xrandr --auto   # autodetect displays on now-available Nvidia display outputs

(请不要发布文本图像,除非问题与文本的显示渲染有关:此类图像对于有视力问题的人来说可能会出现问题,并且通常不会提供有关使用代码块复制和粘贴实际文本的更多信息添加了格式。)


“透明斑点”听起来像是隐私罩、防眩光膜或类似物下的气泡。如果是这样,那将是一个物理问题,与 GPU 或其驱动程序无关。如果您使用桌面环境的屏幕截图工具,它是否捕获了斑点?

如果屏幕截图中看不到该斑点,则它可能是显示器表面薄膜下的气泡或实际显示面板中的其他物理问题。如果它可见,则可能表示 GPU 驱动程序错误或负责 blob 位置的显示内存中存在故障。

相关内容