我正在开发一种视频显示设备,该设备使用不符合任何 VESA 标准的 848x480 和 800x480 分辨率的自定义时序。设备有一个 EDID 来指定这些时间。
我想知道 Windows XP 用于确定显示分辨率的过程,以及它如何向用户提供选择列表。这似乎高度依赖于视频卡制造商和驱动程序。
我在不同的系统上观察到截然不同的行为:
- 似乎 vanilla Windows XP 除了在启动时不会查询 EDID,但是笔记本电脑和自定义视频驱动程序有时似乎会随意查询 EDID(插入不重新启动的计算机,点击演示模式,然后显示设备名称)
- 有些 PC 似乎可以毫无问题地生成 848x480 或 800x480,但有些似乎只是忽略了详细的时序并退回到 VESA 640x480。如果您指定自定义时序模式,任何给定的视频驱动程序/卡将能够生成正确的 VGA 信号的机会有多大?
- 很多时候,EDID 信息会传输到系统,但是如果您打开 Windows 显示属性,并在设置选项卡中选择设备,可用模式的滑块不会显示 848x480 或 800x480。它通常只在其他标准模式列表中显示 640x480(但不是提供的自定义模式)。
- 如果发生这种情况,您通常可以通过在显示属性 -> 设置 -> 高级 -> 适配器 -> 列出所有模式下的所有模式列表中选择设备来让设备以 848x480 或 800x480 显示。当您选择此项时,它会切换到正确的分辨率。
- 但是,如果您返回显示属性 -> 设置,您将在滑块中看到您选择的模式,但滑块只有一种分辨率。它应该(至少)也显示 640x480。在处理 Windows XP 和非标准视频时序时,这只是现实吗?很高兴确切地知道 Windows 如何填充该滑块。
我将非常感谢任何讨论与所有这些相关的细节的资源。我知道这不是严格意义上的编程问题,但它与我遇到的编程问题密切相关,而且我很难找到有关此主题的任何信息。