去年刚进实验室的时候,实验室有有人在从事Windows双屏显示驱动的开发。项目难度很大,因为相关Windows的东西基本都是闭源的,资料少之又少,因此项目进展也很慢。我也被配安排帮助开发驱动程序,当时给我的任务是写一个Windows驱动下读取显示器的EDID的程序。
EDID(Extended Display Identification Data :扩展显示标识数据,一种VESA标准数据格式(显卡有四种总线类型:IAS、VESA、PCI、APG,我们现有程序就是VESA总线)):包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、厂商预设值、分辨率、频率范围的限制、显示器名和序列号的字符串等信息。基本EDID有128个字节,保存在display节中,这些信息可通过DDC与系统进行通信,是在显示器和GPU之间进行的。EDID数据读取到之后,可将相关参数传递给PC的显卡驱动,从而做出调整,使显示内容(数据)与显示屏相匹配。
基本的EDID拥有128个字节信息,其信息如下:
EDID
首先有必要了解一下EDID是什么?EDID(Extended Display Identification Data :扩展显示标识数据,一种VESA标准数据格式(显卡有四种总线类型:IAS、VESA、PCI、APG,我们现有程序就是VESA总线)):包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、厂商预设值、分辨率、频率范围的限制、显示器名和序列号的字符串等信息。基本EDID有128个字节,保存在display节中,这些信息可通过DDC与系统进行通信,是在显示器和GPU之间进行的。EDID数据读取到之后,可将相关参数传递给PC的显卡驱动,从而做出调整,使显示内容(数据)与显示屏相匹配。
基本的EDID拥有128个字节信息,其信息如下:
- 0-7: 头信息,由00 FF FF FF FF FF FF 00 这8个字节组成
- 8-9: 厂商ID
- 10-11: 产品ID
- 12-15: 32-bit序列号
- 16-17 : 制造日期
- 18-19 : EDID 版本
- 20-24 : 显示器的基本信息(视频输入定义,最大横向图像尺寸,最大纵向图像尺寸,显示传输特性,特征支持)
- 25-34 : 显示器的颜色特征
- 35-37 : Established Timings
- 38-53 : Standard Timings Identification
- 54-125:Detailed Timing Description
- 126: 扩展标志位