开学后搬到楼上的实验室,分到了一台机器,CPU:Intel® Pentium®III Coppermine™ 800MHz,内存 256MB PC133 SDRAM,显卡 nVidia® Vanta/Vanta LT 16MB,显示器 EMC M558-PXXM 15"(还不平),这机器虽然不咋的,不过也没什么,能用就行了。

最让我感觉不爽的是,在 Linux 下显示器的刷新率最高只能到 60Hz,调到 800x600 也不行,感觉有些闪,挺累眼。可是在 Windows 下,800x600 时,刷新率就能到 85Hz。

于是我想是不是 Linux 下的显卡驱动没装好,就重装了显卡驱动,可是依然没效果。于是我又猜测是不是显示器的驱动没装好,可是去网上找来找去也没找到显示器的驱动下载,只好作罢。

无奈之下翻翻周围,以其能找到有关的说明书或驱动光盘什么的,可惜依旧是一无所获。不过看到了显示器后面的铭牌,上面写着:行频:30-55kHz;场频:50-150Hz。于是就去网上查查什么是行频,什么是场频。

小熊在线上一篇较早的文章上看到如下的话:
场频(Vertical Scanning Frequency):又称为“垂直扫描频率”,指每秒钟屏幕刷新的次数,以 Hz(赫兹)为单位。早期显示器通常支持 60Hz 的扫描频率,但是不久以后的调查表明,仍然有 5% 的人在这种模式下感到闪烁,因此 VESA 组织于 1997 年对其进行修正,规定 85Hz 逐行扫描为无闪烁的标准场频。

行频(Horizontal Scanning Frequency):又称为“水平扫描频率”,指电子枪每秒在荧光屏上扫描过的水平线数量,等于“垂直分辨率x场频”(画面刷新次数)。以 800x600 的分辨率,和 85Hz 的场频为例,显示器的行频至少应为“600x85=51kHz”。

视频带宽(Band Width):指每秒钟电子枪扫描过的总象素,等于“水平分辨率x垂直分辨率x场频(画面刷新次数)”。在实际应用中,为了避免图像边缘故的信号衰减,保持图像四周清晰,电子枪的扫描能力需要大于分辨率尺寸,水平方向通常要大25%,垂直方向要大8%,所以实际视频带宽的计算公式为“水平分辨率x125%x垂直分辨率x108%”,即“行幀x135%“。仍然以上面为例:800x600x85Hz 图像模式,实际带宽为“800x600x85x135%=55.1MHz”。
看了上面的话,对显示器的一些基本参数有了点认识,于是对照自己的显示器参数,算了一算,800x600 分辨率下的刷新率(也就是垂直扫描频率,场频)可以到 85Hz,而在 1024x768 分辨率下则不可能了。

可是,为什么在 Linux 下 800x600 分辨率时,刷新率最大只能到 60Hz 呢?决定查一下 X 配置文件,果然在配置文件中找到了下面一段:
Section "Monitor"
        Identifier      "Generic Monitor"
        Option          "DPMS"
        HorizSync       28-51
        VertRefresh     43-60
EndSection
于是“胆战心惊”(早先听人说,这样可能会损坏显示器,故心里惴惴)的把 HorizSync(水平同步,也就是水平扫描频率,行频)的值修改为“30.0-55.0”,把 VertRefresh(垂直刷新,场频)的值修改为“50.0-85.0”。然后重启 X,打开“屏幕分辨率”,发现可以调到 85Hz,心里一阵窃喜,选定后,屏幕能亮,果然不闪了,总算放心,又惊又喜阿

现在再回头想想,其实显示问题一般情况下要从显卡和显示器两方面综合来看,而不能单纯的只考虑一个方面,而且有时不一定是驱动问题,可能是设置不正确。类似这一次,当我装好系统后,系统自己能够让显示达到 24 位色深,最大 1024x768 的分辨率,说明系统已经识别并按装好了显卡和显示器的驱动程序,只不过是某些设置有问题。而在设置的时候一定要按照设备的相关手册、说明进行,这样才能发挥设备的最佳性能。