windows - Windows XP 如何使用显示器的 EDID 来确定允许的显示模式?

标签 windows windows-xp resolution

我正在开发一种视频显示设备,该设备使用自定义时序来处理 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/

相关文章:

python - 使用 python 检测应用程序启动

android - 如何将设备上运行的 android 应用程序连接到本地 Web 应用程序?

CSS:从液态到固定以实现更小的分辨率

c++ - 使用 SetCount 的 CAtlArray 奇怪行为

windows - 从 cmd 启动具有特定环境设置的程序

java - Java 中删除的文件会发生什么?

c# - 调试错过的广播数据报,它出现在 wireshark 中,但不出现在 C# 应用程序中?

windows - 从映射的网络驱动器快速复制文件

android - Android 上不同分辨率的不同图标大小

javascript - 匹配 Canvas 分辨率与视频分辨率 - 叠加