我正在开发一种视频显示设备,该设备使用自定义时序来处理 848x480 和 800x480 的分辨率,但不符合任何 VESA 标准。该设备有一个 EDID 来指定这些时序。
我想了解 Windows XP 用于确定显示分辨率的过程,以及它如何向用户提供选择列表。这似乎高度依赖于显卡制造商和驱动程序。
我观察到不同系统上的行为截然不同:
- 除了启动时之外,普通 Windows XP 似乎不会查询 EDID,但是笔记本电脑和自定义视频驱动程序有时似乎会随意查询 EDID(无需重新启动即可插入计算机,点击演示模式,然后输入设备名称)出现)
- 有些 PC 生成 848x480 或 800x480 似乎没有问题,但有些 PC 似乎忽略了详细的时序并回退到 VESA 640x480。如果您指定自定义计时模式,任何给定的视频驱动程序/卡能够生成正确的 VGA 信号的机会有多大?
- 通常,EDID 信息会传输到系统,但如果您打开 Windows 显示属性,并在设置选项卡中选择设备,可用模式的 slider 不会显示 848x480 或 800x480。它通常只在其他标准模式列表中显示 640x480(但不提供提供的自定义模式)。
- 如果发生这种情况,您通常可以通过在显示属性 -> 设置 -> 高级 -> 适配器 -> 列出所有模式下的所有模式列表中选择设备来以 848x480 或 800x480 的分辨率显示设备。当您选择此选项时,它会切换到正确的分辨率。
- 但是,如果您返回显示属性 -> 设置,您将看到您在 slider 中选择的模式,但 slider 只有一种分辨率。它应该(至少)也显示 640x480。在处理 Windows XP 和非标准视频计时时,这只是生活中的事实吗?如果能够准确地了解 Windows 如何填充该 slider ,那就太好了。
我将非常感谢任何讨论与所有这些相关的细节的资源。我知道严格来说这不是一个编程问题,但它与我遇到的编程问题密切相关,并且我很难找到有关此主题的任何信息。
最佳答案
啊,我感受到你的痛苦。以前去过那里。你也在写显示驱动吗?显示驱动程序还可以调整模式,但通常只有在由于某种原因无法物理处理时才会这样做。此外,许多显示驱动程序都会添加特定的默认模式列表(例如 640x480),而不管 EDID 中的内容如何。
我知道 Windows 会对 EDID 中指定的显示器范围限制进行一些检查。而且它们也不是直观的检查,因此您可以使用它。此外,刷新率也会影响 Windows 修剪逻辑。
关于何时读取 EDID,我通常会在启动后第二次打开显示属性时以及此后每次看到 EDID 被读取。
关于windows - Windows XP 如何使用显示器的 EDID 来确定允许的显示模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/707925/