Как Windows XP использует EDID монитора для определения допустимых режимов отображения? - PullRequest
2 голосов
/ 02 апреля 2009

Я работаю на устройстве отображения видео, которое использует настраиваемые тайминги для разрешений 848x480 и 800x480, которые не соответствуют ни одному стандарту VESA. Устройство имеет EDID, который определяет эти временные характеристики.

Я хотел бы знать, как Windows XP определяет разрешение отображения и как он предоставляет пользователю список вариантов. Это сильно зависит от производителя и драйвера видеокарты.

Я наблюдал дико различное поведение в разных системах:

  • Кажется, что ванильная Windows XP не запрашивает EDID, кроме как во время загрузки, однако иногда кажется, что ноутбуки и пользовательские видеодрайверы запрашивают EDID по желанию (подключите компьютер без перезагрузки, нажмите кнопку режима презентации и имя устройства). появляется)
  • Некоторые ПК, похоже, без проблем генерируют 848x480 или 800x480, но некоторые просто игнорируют подробные тайминги и прибегают к VESA 640x480. Если вы укажете пользовательский режим синхронизации, какова вероятность того, что любой данный видеодрайвер / карта сможет генерировать правильный сигнал VGA?
  • Часто информация EDID передается в систему, но если вы откроете свойства экрана Windows и выберете устройство на вкладке настроек, ползунок доступных режимов не будет отображаться ни 848x480, ни 800x480. Обычно он показывает только 640x480 из списка других стандартных режимов (но не пользовательских режимов).
  • Если это произойдет, то вы часто можете настроить устройство на отображение с разрешением 848x480 или 800x480, выбрав его в списке всех режимов в свойствах дисплея -> настройки -> расширенные настройки -> адаптер -> перечислить все режимы. Когда вы выбираете это, он переключается на правильное разрешение.
  • Однако, если вы вернетесь к отображению свойств -> настройки, вы увидите режим, который вы выбрали на слайдере, но слайдер имеет только одно разрешение. Это должно (по крайней мере) также показать 640x480. Является ли это просто фактом жизни при работе с Windows XP и нестандартными таймингами видео? Было бы здорово узнать, как именно Windows заполняет этот слайдер.

Буду очень признателен за любые ресурсы, в которых обсуждаются детали, связанные со всем этим. Я знаю, что это не совсем вопрос программирования, но он тесно связан с проблемой программирования, с которой я сталкиваюсь, и мне трудно найти какую-либо информацию по этому вопросу.

Ответы [ 3 ]

2 голосов
/ 21 января 2010

Я работаю над аналогичной проблемой. Первым шагом было бы установить желаемое разрешение (я) в качестве подробного времени в EDID.

То есть вместо стандартных таймингов. Если у вас есть спецификация EDID, это подробно описано в разделе 3.10. Согласно спецификации, первое подробное время будет иметь разрешение с наивысшим приоритетом, за которым следует второе подробное время, Стандартное время и затем Установленное время.

Далее, вы должны попытаться оставить все другие настройки времени и разрешения без поддержки.

2 голосов
/ 03 апреля 2009

Ах, я чувствую твою боль. Был там раньше. Вы тоже пишете драйвер дисплея? Драйвер дисплея также может обрезать режимы, но обычно это происходит только в том случае, если есть какая-то причина, по которой он не может справиться с этим физически. Кроме того, многие драйверы дисплея добавляют определенный список режимов по умолчанию (например, 640x480), независимо от того, что было в EDID.

Я знаю, что Windows выполняет некоторые проверки по отношению к пределам диапазона монитора, указанным в EDID. И они не являются интуитивными проверками, так что вы можете поиграть с этим. Кроме того, частота обновления также учитывается в логике обрезки Windows.

Что касается чтения EDID, я обычно вижу, что EDID читают во второй раз, когда вы открываете свойства экрана после загрузки, и каждый раз после этого.

1 голос
/ 16 ноября 2011

По моему опыту, вам нужен графический адаптер с достаточно смелым драйвером, чтобы позволить вам настроить время в драйвере . Насколько я могу судить, в Windows на данный момент единственным вариантом является приобретение ПК с интегрированной графикой Intel. И вы должны обратить внимание на драйвер: для чего угодно, вплоть до Extreme Graphics серии 3x / 4x, получите Intel IEGD (и вам придется свернуть пользовательскую сборку IEGD перед установкой), или просто на складе Драйвер HD Graphics для настольного компьютера / ноутбука для Nehalem +.

Кажется, я вспоминаю, что, возможно, Nvidia также позволяет вам вручную указывать время в режиме видео.

Кажется, я помню, что драйверы Matrox действительно допускают некоторую подстройку, но если память служит, остановитесь точно так, чтобы позволить вам ввести низкоуровневое разрешение и значения синхронизации.

И, говоря об EDID / DDC, вам лучше всего полностью избавиться от него, обрезая линии SDA / SCL (фактически, обрезает только SCL), что позволит вам заставить водителя используйте конкретное разрешение.

Существует ряд симпатичных, изящных наборов микросхем с низким энергопотреблением и SoC (Geode, Vortex, Via Nano) - к сожалению, ни один из них не позволяет указать время в Windows. Таким образом, вы должны использовать энергоемкий Атом или выше, чтобы получить время: - (

Обратите внимание, что любое полуприличное аппаратное обеспечение SVGA + по существу идеально способно выдавать практически любое мыслимое разрешение (возможно, по модулю 8) на любых пиксельных тактовых частотах, которые вы можете придумать (ограниченных пропускной способностью синтезатора и ЦАП, обычно 200–400 МГц). Настоящее время). Это драйверы Windows, которые накладывают глупые ограничения - они, как правило, придерживаются стандартного набора типичных экранных форматов DMT / CVT. Linux + Xwindows позволяют вам устанавливать любое разрешение и время практически на любом VGA-оборудовании. Раньше я думал об использовании выходного порта ЭЛТ в качестве быстрого трехканального генератора произвольных сигналов с частотой дискретизации до 400 МГц при разрешении 8 бит и буферным пространством более миллиона выборок: -)

...