我需要一些帮助来弄清楚为什么 xrandr 无法设置所需的分辨率。
我有双显示器设置:
- 13 英寸笔记本电脑,分辨率为 2560x1440
- 24 英寸显示器,分辨率为 1920x1200
由于高 dpi 的原因,我想将笔记本电脑的分辨率提高到 1920x1080,但显示管理器无法识别。
我只得到这个:
2560x1440 59.95*+
1920x1440 60.00
1856x1392 60.01
1792x1344 60.01
1600x1200 60.00
1400x1050 59.98
1280x1024 60.02
1280x960 60.00
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
为了获取模式行,我使用:
cvt 1920 1080
然后,为了使更改在会话之间持久,我将以下几行添加到以下文件夹中的脚本中,该脚本在 x11 初始化期间执行:
/etc/X11/xinit/xinitrc.d
内容(add-fullhd-to-edp1.sh):
xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr --addmode eDP1 1920x1080_60.00
之后我发现 xrandr 现在支持该分辨率
2560x1440 59.95*+
1920x1440 60.00
1856x1392 60.01
1792x1344 60.01
1600x1200 60.00
1400x1050 59.98
1280x1024 60.02
1280x960 60.00
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
1920x1080_60.00 59.96
因此,当我使用 xrandr 或 GUI 选择分辨率后,屏幕会闪烁一次,因为它会尝试设置分辨率,然后第二次闪烁以恢复。发生这种情况时,Xorg.log 中的条目仅是帧缓冲区调整大小:
(II) intel(0): resizing framebuffer to 1920x2280
(II) intel(0): switch to mode [email protected] on HDMI1 using pipe 0, position (0, 0), rotation normal, reflection none
(II) intel(0): switch to mode [email protected] on eDP1 using pipe 1, position (0, 1200), rotation normal, reflection none
(II) intel(0): resizing framebuffer to 2560x2640
(II) intel(0): switch to mode [email protected] on HDMI1 using pipe 1, position (0, 0), rotation normal, reflection none
(II) intel(0): switch to mode [email protected] on eDP1 using pipe 0, position (0, 1200), rotation normal, reflection none
(II) intel(0): switch to mode [email protected] on HDMI1 using pipe 0, position (0, 0), rotation normal, reflection none
(II) intel(0): switch to mode [email protected] on eDP1 using pipe 1, position (0, 1200), rotation normal, reflection none
正如你所看到的,我有一个英特尔驱动程序,Iris 显卡。
00:02.0 VGA compatible controller: Intel Corporation Device 0a2e (rev 09)
有趣的是,它一直运行良好,直到某个更新推出,我才弄清楚是哪一个更新破坏了它。
有什么线索吗?非常感谢您的帮助。
答案1
我向 gdm 开发人员发布了这个错误并得到了使用静态配置的提示。
/etc/X11/xorg.conf.d/21-intel.conf
内容:
Section "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "monitor-eDP1" "eDP1"
EndSection
Section "Monitor"
Identifier "eDP1"
Modeline "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
EndSection
并且成功了。有趣的是,我认为这确实是 xrandr 开发人员的一个错误。