使用 Arc 380 (i915) 时无法在 X11 和 Wayland 上设置自定义(正确)分辨率

使用 Arc 380 (i915) 时无法在 X11 和 Wayland 上设置自定义(正确)分辨率

我有一个自然分辨率非常舒适的显示器 (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)。这太烦人了。

我希望有人可以帮助我或给我进一步的指导,并且这些信息可以为那些与我有相同情况的人提供指导。我想就这个问题做一份错误报告,但不知道在哪里/谁。

概括:

  1. 我的显示器分辨率不标准;
  2. Intel Iris Pro II 可以正确检测到它,而 Intel Arc 380 则不能(它只会让我为屏幕设置 1 个不正确的标准分辨率);
  3. 如果我在启动时通过内核模式设置加载 edid 文件,并且所有内容都正确加载,很多快乐的 i915,但是,Arc 380 的情况不会改变;
  4. Wayland 和 X11 上都会发生这种情况;
  5. xrandr如果在 X11 上我使用edid 文件中提供的模式设置(甚至通过计算)手动添加分辨率,cvt情况不会改变:在 Intel Arc 380 和我的显示器上,我只能获得 1 个标准分辨率;
  6. 挫折。

希望有人可以帮助我解决这个问题。

相关内容