12. 整合在一起

Xconfig 文件中的视频模式表包含多行数字,每一行都是 X 服务器操作的一种完整模式的规范。这些字段分为四个部分:名称部分、时钟频率部分、水平部分和垂直部分。

名称部分包含一个字段,即该行其余部分指定的视频模式的名称。此名称在 Xconfig 文件的“图形驱动程序设置”部分的“Modes”行中引用。如果前一行的名称与当前行相同,则可以省略名称字段。

点时钟部分仅包含视频模式行的点时钟(我们称之为 DCF)字段。此字段中的数字指定用于生成以下部分中数字的点时钟。

水平部分由四个字段组成,这些字段指定如何在显示器上生成每条水平线。该部分的第一字段包含每行点的数量,这些点将被点亮以形成图像(我们称之为 HR)。该部分的第二字段(SH1)指示水平同步脉冲将在哪个点开始。第三字段(SH2)指示水平同步脉冲将在哪个点结束。第四字段指定总水平帧长度(HFL)。

垂直部分也包含四个字段。第一字段包含将显示在显示器上的可见行数(VR)。第二字段(SV1)指示垂直同步脉冲将在哪一行开始。第三字段(SV2)指定垂直同步脉冲将在哪一行结束。第四字段包含总垂直帧长度(VFL)。

示例

     #Modename    clock  horizontal timing  vertical timing

     "752x564"     40    752 784  944 1088  564 567 569 611
	           44.5  752 792  976 1240  564 567 570 600

(注意:标准的 X11R5 不支持 Fractional Dot Clocks。)

对于 Xconfig,刚刚提到的所有数字 - 行上点亮的点的数量、将点亮的点与同步脉冲开始位置分隔开的点的数量、表示脉冲持续时间的点的数量以及同步脉冲结束后的点的数量 - 相加后得到每行的点数。水平点的数量必须能被 8 整除。

水平数字示例:800 864 1024 1088

此示例行包含点亮的点的数量(800),后跟同步脉冲开始时的点的编号(864),然后是同步脉冲结束时的点的编号(1024),最后是水平线上最后一个点的编号(1088)。

再次注意,所有水平数字(800、864、1024 和 1088)都可以被 8 整除!垂直数字则没有此要求。

从显示器顶部到底部的行数构成帧。帧的基本定时信号是行。许多行将包含图像。在显示最后一条点亮的行之后,在生成垂直同步脉冲之前,会发生若干行的延迟。然后,同步脉冲将持续几行,最后,帧中的最后几行,即脉冲后所需的延迟,将被生成。指定此操作模式的数字以类似于以下示例的方式输入。

垂直数字示例:600 603 609 630

此示例表明显示器上有 600 条可见行,垂直同步脉冲从第 603 行开始,到第 609 行结束,并且总共使用了 630 行。

请注意,垂直数字不必能被 8 整除!

让我们回到我们一直在处理的示例。根据以上所述,从现在开始我们需要做的就是将我们的结果写入 Xconfig,如下所示

<name>   DCF     HR  SH1 SH2   HFL   VR  SV1 SV2 VFL

其中 SH1 是水平同步脉冲的开始刻度,SH2 是其结束刻度;类似地,SV1 是垂直同步脉冲的开始刻度,SV2 是其结束刻度。

为了放置这些,回想一下上面关于“黑魔法”和同步脉冲的讨论。SH1 是启动水平同步脉冲前沿的点;因此,SH1 = HR + HGT1。SH2 是后沿;因此,SH2 = SH1 + HSP。类似地,SV1 = VR + VGT(但 VGT 通常为零),SV2 = SV1 + VSP。

#name    clock   horizontal timing   vertical timing    flag
936x702  65      936 968 1200 1232   702 702 710 737

无需特殊标志;这是一种非隔行扫描模式。现在我们真的完成了。