结论
终于可以回到我们的问题,谁决定了最终的显示分别率呢?实际上是由显卡和显示器共同决定的。
A. 显示器存储了EDID信息,里面有它可用的所有显示分辨率的列表。
B. 高低端显卡本身有自己可以支持的分辨率列表。
C. 显卡驱动程序用DDC从显示器那里提取过来EDID信息,得到显示器分辨率集合。同时知道自己显卡的分辨率集合。它对两个集合做一个交集,报告给操作系统。
D. 操作系统在分辨率设置界面显示出这个集合供用户挑选。
真相大白,似乎可以结束了。但是凡是总有例外,有些特殊情况还值得一提:
1. 很多嵌入式Panel和LCD为了方便或者降低成本,并没有配备存储EDID的EEPROM。那分辨率信息是谁来给出呢?作为一个介绍UEFI的专栏,聪明的你也许猜出了。是的,是由UEFI固件给出的,UEFI固件通过在固件的VBT表中加入硬编码的分辨率信息,并传递给操作系统的驱动来指定一个已知的分辨率。
2. 某些早期的或者便宜的VGA线缆中没有传递DDC的11,12和15号pin脚的连线,那分辨率如何给出呢?大家可以回去想一想。
3. 如果你对现有分辨率不满意,可不可以自己指定分辨率呢?答案是肯定的。很多显卡驱动程序提供定制分辨率的选项,我们以Intel的核显为例:
极限玩家还可以通过修改显卡驱动程序inf文件的OverrideEDID节,甚至刷新LCD的EEPROM的方法直接修改EDID内容,但仅限老鸟。