我有一个自然分辨率非常舒适的显示器 (1920x860),我使用 Artix (6.8.2-artix1-1),并且使用 Kde Plasma 6 (plasmashell 6.0.2)。
我有一个 iGPU(Intel Iris Pro II)和一个 GPU(Intel Arc 380)。
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Iris Pro Graphics 6200 (rev 0a)
03:00.0 VGA compatible controller: Intel Corporation DG2 [Arc A380] (rev 05)
$ glxinfo | grep "OpenGL version"
OpenGL version string: 4.6 (Compatibility Profile) Mesa 24.0.3-arch1.2
如果我将显示器连接到 iGPU,则显示器工作正常。如果我将其连接到 GPU,则只有一种可用分辨率:1280x720。此分辨率不考虑屏幕比例,因此所有内容都会被拉伸和涂抹。
我通过 get-edid | 检查了 linux 上的 edid 文件parse-edid,从 Linux 我得到的信息很少。因此,我能够使用 EnTech Monitor Asset Manager 深入研究 Windows 10 上的 edid 文件。
我得到了 edid 文件的完整读数,这就是有趣的消息出现的地方:我的显示器的 edid.bin 文件显示:
Native/preferred timing... 1920x860p at 60Hz
Modeline............... "1920x860" 110,680 1920 1968 2000 2106 860 863 868 876 +hsync +vsync
Standard timings supported
1280 x 720p at 60Hz - VESA STD
所以我尝试使用 edid.bin 文件并且:
- 我将edid文件放在/usr/lib/firmware/edid/中。
- 我在/etc/mkinitcpio.conf中设置了
MODULES=(i915)
and 。FILES="/usr/lib/firmware/edid/edid.bin"
然后跑了# mkinitcpio -P
- 我将 KMS 放在
drm.edid_firmware=HDMI-1:edid/edid.bin drm.edid_firmware=HDMI-A-1:edid/edid.bin
/etc/default/grub 的 GRUB_CMDLINE_LINUX_DEFAULT 中。然后明确运行grub-mkconfig -o /boot/grub/grub.cfg
(我设置了自定义edid两次,因为HDMI-1是X11识别我的显示器的方式,而HDMI-A-1是Wayland识别它的方式)。
现在,如果我用 dmesg 检查没有错误,并且 edid 文件已正确加载,没有任何问题,i915 模块也是如此。
Xorg日志也完全干净,没有任何问题。 i915 驱动程序已正确加载,唯一缺少的功能(由于我的主板)是可调整大小的 BAR,这对于解决此问题并不重要。
尽管如此,在 Wayland 和 X11 上,唯一可以设置的分辨率是 1280x720(始终拉伸)。使用 X11 和 xrandr 我可以添加 modeline 1920x1080 并使用它(可能是因为它是标准的),但所有内容仍然被拉伸,因为它不尊重屏幕比例。
所以我尝试在 /etc/X11/xorg.conf.d/20-intel.conf 文件中进行配置:
Section "Device"
Identifier "IntelGraphics"
Driver "modesetting"
# Driver "intel"
Option "AccelMethod" "sna"
Option "DRI" "iris"
# Option "DRI" "2"
Option "CustomEDID" "HDMI-1:/usr/lib/firmware/edid/edid.bin"
Option "CustomEDID" "HDMI-A-1:/usr/lib/firmware/edid/edid.bin"
Option "IgnoreEDID" "false"
Option "UseEDID" "true"
EndSection
但尽管如此,X11 和 Wayland 上唯一可以设置的分辨率是 1280x720。
尝试这种方式,我在 Xorg 日志中收到一些警告,因为驱动程序“modesetting”没有 edid 选项:
[ 5.973] (WW) modeset(0): Option "DRI" is not used
[ 5.973] (WW) modeset(0): Option "CustomEDID" is not used
[ 5.973] (WW) modeset(0): Option "IgnoreEDID" is not used
[ 5.973] (WW) modeset(0): Option "UseEDID" is not used
[ 5.973] (WW) modeset(0): Option "DisplaySize" is not used
[ 5.993] (WW) modeset(G0): Option "DisplaySize" is not used
我还尝试使用 xf86-video-intel,因此设置驱动程序“intel”(这就是我在 20-intel.conf 中留下 # 条评论的方式),但这种方式不起作用,因为 xf86-video-intel 不工作无法使用该 GPU。
我尝试在 X11 上使用 xrandr 来手动添加 edid 文件中指定的 modeline ("1920x860" 110,680 1920 1968 2000 2106 860 863 868 876 +hsync +vsync)。不起作用。
如果我使用 Arc 830,我似乎只能设置 Vesa 标准分辨率 (1280x720),而不能设置 edid 文件中指示的首选分辨率 (1920x860)。这太烦人了。
我希望有人可以帮助我或给我进一步的指导,并且这些信息可以为那些与我有相同情况的人提供指导。我想就这个问题做一份错误报告,但不知道在哪里/谁。
概括:
- 我的显示器分辨率不标准;
- Intel Iris Pro II 可以正确检测到它,而 Intel Arc 380 则不能(它只会让我为屏幕设置 1 个不正确的标准分辨率);
- 如果我在启动时通过内核模式设置加载 edid 文件,并且所有内容都正确加载,很多快乐的 i915,但是,Arc 380 的情况不会改变;
- Wayland 和 X11 上都会发生这种情况;
xrandr
如果在 X11 上我使用edid 文件中提供的模式设置(甚至通过计算)手动添加分辨率,cvt
情况不会改变:在 Intel Arc 380 和我的显示器上,我只能获得 1 个标准分辨率;- 挫折。
希望有人可以帮助我解决这个问题。