我正在使用运行 Arch Linux 的配备英特尔酷睿 i5 vPro 的 Dell Optioplex 7010。我最近(2021 年 4 月)定期将操作系统更新到版本 5.11.9-arch1-1,并注意到使用 OpenGL 的任何东西都显示表面填充不完整,因此您会得到多个“透明”三角形和矩形。这张图片说明了问题: X 屏幕保护程序测地线齿轮显示 OpenGL 问题 对于如何诊断和解决这个问题有什么想法吗?
以下是我迄今为止尝试过的:
- 查看不同的软件,看看是否是某个特定软件包的问题。结果:这不仅限于 X-Screen 保护程序或任何特定软件包 - Cura、FreeCAD 等任何使用 openGL 的软件中都会发生同样的损坏。
- 使用“export MESA_LOADER_DRIVER_OVERRIDE”手动覆盖 mesa 加载程序驱动程序,但所有可用的驱动程序都无法解决问题。
- 检查我的显卡状态。结果:
$ sudo lspci -vnn | grep VGA -A 12
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller [8086:0152] (rev 09) (prog-if 00 [VGA controller])
DeviceName: Onboard IGD
Subsystem: Dell Device [1028:0577]
Flags: bus master, fast devsel, latency 0, IRQ 30
Memory at f7800000 (64-bit, non-prefetchable) [size=4M]
Memory at e0000000 (64-bit, prefetchable) [size=256M]
I/O ports at f000 [size=64]
Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [d0] Power Management version 2
Capabilities: [a4] PCI Advanced Features
Kernel driver in use: i915
Kernel modules: i915
- 检查我的 OpenGL 状态。结果:
$ sudo glxinfo | grep OpenGL OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 2500 (IVB GT1) OpenGL core profile version string: 4.2 (Core Profile) Mesa 20.3.4 OpenGL core profile shading language version string: 4.20 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.0 Mesa 20.3.4 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.0 Mesa 20.3.4 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00 OpenGL ES profile extensions:
在操作系统更新之前,一切都运行良好。我在上面看不到任何错误或需要修复的内容。任何帮助都非常感谢。
[编辑-回应评论]
我还检查了 pacman 日志,以查看上次 -Syyu 更新中更改或添加了哪些软件包。我发现以下内容可能与 OpenGL 图形渲染有关:
- 安装 box2d(2.4.1-1)
- 已安装 gts (0.7.6.121130-2)
- 升级了英特尔媒体驱动程序(20.4.5-1 -> 21.1.2-1)
- 升级 glslang(11.1.0-1 -> 11.2.0-3)
- 升级 gegl (0.4.26-1 -> 0.4.28-2)
- 升级 gd (2.3.0-1 -> 2.3.2-2)
- 升级 mesa(20.3.3-1 -> 20.3.4-3)
因此我降级了升级的软件包(一个接一个,每次升级后重新启动),并卸载了新安装的软件包pacman -Rsc
。不幸的是,这些都无法解决问题。
答案1
我也从 Arch 论坛寻求帮助。多亏了那里的一篇帖子,我找到了答案。原来我需要为 i915 模块设置一个内核参数。具体来说:(i915.mitigations=off
在我的设置中,它之前设置为“自动”)。当我将此内核参数附加到我的
/boot/loader/entries/arch.conf
文件并重新启动时,问题不再存在。不知道为什么以前运行良好,现在却突然需要这样做。