强制刷新率

强制刷新率

我想让我的显示器在 1920x1080 分辨率下以 59hz 工作,因为它在 60hz 时会闪烁。当然,它不在默认选项中,所以我需要以某种方式强制它。在 Windows 中很容易做到,但在 ubuntu 中我做不到,我尝试的任何选项,如 xrandr,都弹出来,因为默认情况下不支持 1920x1080@59。他们有什么办法可以实现它吗?我的卡是 nvidia 9600gt,带有 310.32 驱动程序。

使用 xrandr 会给我以下输出:

失败请求的错误:BadMatch(无效的参数属性)
失败请求的主操作码:153(RANDR) 失败请求的次操作码:18(RRAddOutputMode) 失败请求的序列号:31 输出流中的当前序列号:32

使用 xrandr -r 59 得到:

此尺寸不提供速率 59.0 Hz

我设法将其更改为 1920x1080@59,但显示器拒绝计时,所以我没有运气。我想知道为什么它允许窗口以 59hz 运行?

如果其他人能找到这个主题,我通过添加来改变刷新率

选项“ExactModeTimingsDVI”“TRUE”

在 modeline 命令之前,它看起来像这样:

部分“监视器”标识符“Monitor0”供应商名称“未知”模型名称“未知”HorizSync 30.0 - 81.0 VertRefresh 56.0 - 75.0 选项“DPMS”选项“ExactModeTimingsDVI”“TRUE”模型行“1680x1050_60.00”146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync EndSection

答案1

  • 计算您的分辨率所需的模式行

    cvt 1920 1080 59
    
  • 为显示器添加此新模式xrandr

    xrandr --newmode "1920x1080_59.00"  {add what you got from cvt} -hsync +vsync
    
  • 将此新模式添加到设备

    xrandr --verbose --addmode VGA-0  "1920x1080_59.00"
    
  • 激活新模式

    xrandr --output VGA-0 --mode "1920x1080_59.00"
    

顺便一提 ...

xrandr -r 59

可能会有效,但这可能取决于卡和/或 xrandr 版本。


也不要忘记检查您的显示器:某些显示器允许您使用显示器上的按钮设置刷新率。


失败请求的主要操作码

该问题可能是由于显卡无法从显示器读取 EDID 信息所致。在 xorg.conf 的设备部分中,您可以强制系统不使用 edid 信息。

Section "Device"
<..>    
 Option         "UseEDID"   "FALSE"
EndSection

操作码错误的另一个原因可能是视频驱动程序不允许非 edid 模式(这实际上是当前 NVidia 驱动程序的默认设置)。您可以按照上述方法禁用 EDID,这样也可以,但如果您的 EDID 信息确实正确,那么这种方法就不是最佳选择,因为您将丢失显示器尺寸信息(可能出现错误的字体大小)和显示器报告的默认 EDID 模式等信息。请改用以下方法:

 Option         "ModeValidation"   "AllowNonEdidModes"

ModeValidation 的另一个好处是它允许更细粒度的控制(在多显示器设置的情况下针对每个输出);请查看 NVidia 驱动程序自述文件以获取更多信息。


然后您可以将模式行添加到Section "Monitor"

Section "Monitor"
Identifier     "Monitor0"
VendorName     "Unknown"
ModelName      "CRT-0"
HorizSync       28.0 - 55.0
VertRefresh     43.0 - 72.0
Option         "DPMS"
Modeline    "1920x1080_59.00"  {bunch of numbers from cvt} -hsync +vsync
EndSection

并将模式设为Section "Screen"

SubSection     "Display"
    Depth       24
    Modes      "1920x1080_59"
EndSubSection

答案2

对于像我一样多年后在 Google 上发现此问题的其他任何人,将以下几行添加到 xorg.conf 将禁用所有必要的检查,以允许您在较新的 NVIDIA 显卡上设置任何不受支持的分辨率(对虚拟显示器有用)。在“屏幕”部分下:

Option         "UseEDIDFreqs" "False"
Option         "ModeValidation" "NoDFPNativeResolutionCheck,NoVirtualSizeCheck,NoMaxPClkCheck,NoHorizSyncCheck,NoVertRefreshCheck,NoWidthAlignmentCheck AllowNonEdidModes"

然后使用 cvt 的结果添加模式,一切就绪!如果您想连接虚拟显示器,只需使用

Option         "ConnectedMonitor" "HDMI-0"

将 HDMI-0 替换为您希望显卡用于虚拟显示的任何显示端口。

相关内容