在全屏游戏和合成器中,帧率每 5 秒“卡顿”一次

在全屏游戏和合成器中,帧率每 5 秒“卡顿”一次

我正在 Xfce 桌面环境中运行 Manjaro GNOME 18.1.4,使用 amdgpu (xf86-video-amdgpu 19.1.0-1)。

如果我在启用垂直同步的情况下全屏运行游戏,并且当 Xfwm4 的作曲家被禁用时,我每 5 秒就会遇到一次小“故障”,屏幕会冻结几分之一秒,但是仅有的当游戏全屏运行时。这是在启用 Vsync 并运行 Quakespasm 的 Gallium HUD 中的外观:

镓 HUD 图表的屏幕截图,显示帧速率每五秒下降一次

当我在 Xfwm4 中启用合成时,图表显示了这一点,但“问题”仍然存在:

Gallium HUD 图表的屏幕截图,显示帧速率徘徊在 60 fps 左右

如果我在启用合成的情况下在窗口模式下运行 glxgears,它也会受到“故障”的影响,但图表没有显示这一点。

这不是地震痉挛的错,因为这种情况也发生在glxgearsRetroarch 中。

运行时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_modeXfconf 设置设置为off并打开合成似乎可以解决此问题。完成此操作后,我再也看不到“故障”了(或者它们更加微妙?)。

要测试这一点,您可以运行xfwm4 --replace --vblank=off &respawn xfwm4 并将vblank_mode其设置为off。要使此更改永久生效,请运行xfconf-query -c xfwm4 -p /general/vblank_mode -t string -s "off" --create.

但唯一的问题是它会导致屏幕撕裂,这并不理想。它关闭垂直同步:(

相关内容