我正在 Xfce 桌面环境中运行 Manjaro GNOME 18.1.4,使用 amdgpu (xf86-video-amdgpu 19.1.0-1)。
如果我在启用垂直同步的情况下全屏运行游戏,并且当 Xfwm4 的作曲家被禁用时,我每 5 秒就会遇到一次小“故障”,屏幕会冻结几分之一秒,但是仅有的当游戏全屏运行时。这是在启用 Vsync 并运行 Quakespasm 的 Gallium HUD 中的外观:
当我在 Xfwm4 中启用合成时,图表显示了这一点,但“问题”仍然存在:
如果我在启用合成的情况下在窗口模式下运行 glxgears,它也会受到“故障”的影响,但图表没有显示这一点。
这不是地震痉挛的错,因为这种情况也发生在glxgears
Retroarch 中。
运行时xrandr --verbose
会显示当前使用的屏幕。请注意,刷新率为 60.02Hz:
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
eDP connected primary 1920x1080+0+0 (0x59) normal (normal left inverted right x axis y axis) 382mm x 215mm
Identifier: 0x55
Timestamp: 3131421
Subpixel: unknown
Gamma: 1.0:1.0:1.0
Brightness: 1.0
Clones:
CRTC: 0
CRTCs: 0 1 2 3 4 5
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
EDID:
00ffffffffffff0030e4e80400000000
001a0104952615780a0bb5a35955a027
0c505400000001010101010101010101
0101010101012e3680a070381f403020
35007ed71000001a0000000000000000
00000000000000000000000000fe004c
4720446973706c61790a2020000000fe
004c503137335746342d53504635004c
GAMMA_LUT_SIZE: 4096
range: (0, -1)
DEGAMMA_LUT_SIZE: 4096
range: (0, -1)
GAMMA_LUT: 0
range: (0, 65535)
CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1
DEGAMMA_LUT: 0
range: (0, 65535)
TearFree: auto
supported: off, on, auto
vrr_capable: 0
range: (0, 1)
max bpc: 8
range: (8, 16)
underscan vborder: 0
range: (0, 128)
underscan hborder: 0
range: (0, 128)
underscan: off
supported: off, on, auto
scaling mode: None
supported: None, Full, Center, Full aspect
link-status: Good
supported: Good, Bad
CONNECTOR_ID: 59
supported: 59
non-desktop: 0
range: (0, 1)
1920x1080 (0x59) 138.700MHz +HSync -VSync *current +preferred
h: width 1920 start 1968 end 2000 total 2080 skew 0 clock 66.68KHz
v: height 1080 start 1083 end 1088 total 1111 clock 60.02Hz
1680x1050 (0x5a) 138.700MHz +HSync -VSync
h: width 1680 start 1968 end 2000 total 2080 skew 0 clock 66.68KHz
v: height 1050 start 1083 end 1088 total 1111 clock 60.02Hz
1280x1024 (0x5b) 138.700MHz +HSync -VSync
h: width 1280 start 1968 end 2000 total 2080 skew 0 clock 66.68KHz
v: height 1024 start 1083 end 1088 total 1111 clock 60.02Hz
1440x900 (0x5c) 138.700MHz +HSync -VSync
h: width 1440 start 1968 end 2000 total 2080 skew 0 clock 66.68KHz
v: height 900 start 1083 end 1088 total 1111 clock 60.02Hz
1280x800 (0x5d) 138.700MHz +HSync -VSync
h: width 1280 start 1968 end 2000 total 2080 skew 0 clock 66.68KHz
v: height 800 start 1083 end 1088 total 1111 clock 60.02Hz
1280x720 (0x5e) 138.700MHz +HSync -VSync
h: width 1280 start 1968 end 2000 total 2080 skew 0 clock 66.68KHz
v: height 720 start 1083 end 1088 total 1111 clock 60.02Hz
1024x768 (0x5f) 138.700MHz +HSync -VSync
h: width 1024 start 1968 end 2000 total 2080 skew 0 clock 66.68KHz
v: height 768 start 1083 end 1088 total 1111 clock 60.02Hz
800x600 (0x60) 138.700MHz +HSync -VSync
h: width 800 start 1968 end 2000 total 2080 skew 0 clock 66.68KHz
v: height 600 start 1083 end 1088 total 1111 clock 60.02Hz
640x480 (0x61) 138.700MHz +HSync -VSync
h: width 640 start 1968 end 2000 total 2080 skew 0 clock 66.68KHz
v: height 480 start 1083 end 1088 total 1111 clock 60.02Hz
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
我不知道在哪里可以尝试寻找来解决这个问题。我尝试使用以下命令在 xorg 配置文件中启用变量刷新:
Section "Device"
Identifier "AMD"
Driver "amdgpu"
Option "VariableRefresh" "true"
EndSection
我使用的笔记本电脑(华硕 ROG GL702zc)支持 40 到 60 Hz 之间的 Freesync,所以我不确定为什么不能启用 VRR。
答案1
编辑:我发现是 Redshift 导致了这个问题!我一退出,这种情况就不再发生了!
我将其设置为使用 Xfce 会话自动运行。
旧答案:
似乎将 Xfwm4 的vblank_mode
Xfconf 设置设置为off
并打开合成似乎可以解决此问题。完成此操作后,我再也看不到“故障”了(或者它们更加微妙?)。
要测试这一点,您可以运行xfwm4 --replace --vblank=off &
respawn xfwm4 并将vblank_mode
其设置为off
。要使此更改永久生效,请运行xfconf-query -c xfwm4 -p /general/vblank_mode -t string -s "off" --create
.
但唯一的问题是它会导致屏幕撕裂,这并不理想。它关闭垂直同步:(