Как Windows XP использует EDID монитора для определения допустимых режимов отображения?

Я работаю над устройством отображения видео, которое использует настраиваемые тайминги для разрешений 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 заполняет этот ползунок.

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


person Bobby Moretti    schedule 02.04.2009    source источник


Ответы (3)


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

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

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

person Community    schedule 02.04.2009

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

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

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

person jerwood    schedule 21.01.2010
comment
Да, я должен был указать, что сделал все это при создании EDID. Он имеет именно те разрешения, которые мне нужны, в том порядке, в котором я хочу, как указано в 3.10. Я пришел к выводу, что в Win XP и Vista поддержка EDID/DDC полностью зависит от видеодрайвера. Другими словами, производители устройств отображения полностью зависят от поставщиков драйверов, поддерживающих нестандартные тайминги. Различные поставщики обеспечивают разную степень соответствия (некоторые хорошие, другие плохие). К сожалению, не было ни одного источника этой информации. Я должен был сделать вывод и собрать его воедино из многих мест. - person Bobby Moretti; 21.01.2010
comment
Ну, я думаю, мы все в таком же плохом положении по этому поводу. Так много для стандартов. - person jerwood; 22.01.2010

По моему опыту, вам нужен графический адаптер с достаточно мощным драйвером, чтобы вы могли настраивать тайминги также и в драйвере. Насколько я могу судить, в 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. Таким образом, вы должны использовать прожорливый Atom или выше, чтобы получить тайминги :-(

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

person Frank Rysanek    schedule 16.11.2011