Vesa dmt что это
Используем высокие разрешения на неподдерживающих их видеокартах
Засматриваетесь на 4K UHD-мониторы, но ваш лаптоп не поддерживает высокие разрешения? Купили монитор и миритесь с частотой обновления в 30Гц? Повремените с апгрейдом.
TL;DR: 3840×2160@43 Гц, 3200×1800@60 Гц, 2560×1440@86 Гц на Intel HD 3000 Sandy Bridge; 3840×2160@52 Гц на Intel Iris 5100 Haswell.
Предыстория
Давным-давно, когда все мониторы были большими и кинескопными, компьютеры использовали фиксированные разрешения и тайминги для вывода изображения на экран. Тайминги были описаны в стандарте Display Monitor Timings (DMT), и не существовало универсального метода расчета таймингов для использования нестандартного разрешения. Мониторы отправляли компьютеру информацию о себе через специальный протокол Extended display identification data (EDID), который содержал DMT-таблицу с поддерживаемыми режимами. Шло время, мониторам стало не хватать разрешений из DMT. В 1999 году VESA представляет Generalized Timing Formula (GTF) — универсальный способ расчета таймингов для любого разрешения (с определенной точностью). Всего через 3 года, в 2002 году, его заменил стандарт Coordinated Video Timings (CVT), в котором описывается способ чуть более точного рассчитывания таймингов.
История
Наконец-то настала эра высокой плотности пикселей и на ПК. На протяжении последних нескольких лет, нас встречал театр абсурда, когда на мобильные устройства ставят пятидюймовые матрицы с разрешением 1920×1080, полки магазинов уставлены большими 4K-телевизорами (хоть на них и смотрят с расстояния 2-4 метров), а мониторы как были, так и оставались с пикселями с кулак. Подавляющее большинство говорит, что Full HD выглядит «достаточно хорошо» и на 27″ мониторе, забывая, что предыдущее «достаточно хорошо» чрезвычайно быстро ушло после выхода iPad с Retina. Вероятнее всего, такая стагнация произошла из-за плохой поддержки высокой плотности пикселей в Windows, которая более-менее устаканилась только к выходу Windows 8.1.
Как бы то ни было, в 2015 году у нас есть выбор из 246 моделей 4K UHD-телевизоров и аж 36 моделей мониторов, одну из которых — Dell P2415Q — мне посчастливилось купить за сравнительно небольшие деньги (€377). Это 23.8-дюймовая модель с разрешением 3840×2160 и плотностью пикселей в 185 PPI, с возможностью подключения по DisplayPort 1.2 и HDMI 1.4. Первые 4K-мониторы определялись в системе как два отдельных монитора и комбинировались в один большой средствами драйвера видеокарты. Это было сделано из-за низкой производительности скейлеров, которые в то время не могли работать в полном разрешении, поэтому приходилось ставить два скейлера, каждый из которых выводил 1920×2160. Современные мониторы избавились от такого костыля, но, в то же время, стали требовать более производительные видеоадаптеры. К сожалению, мой уже сравнительно старый лаптоп Lenovo ThinkPad X220 не поддерживает, судя по информации на сайте Intel и от производителя, разрешения выше 2560×1440. Можно ли с этим что-то сделать? Как оказалось, можно.
Стандартные и нестандартные стандарты
Современным мониторам и видеокартам нет никакого дела до фиксированных разрешений и таймингов времен DMT, они могут работать в широком диапазоне разрешений и частот обновления. Давайте посмотрим в техпаспорт моего монитора:
Поддерживаемая горизонтальная частота развертки | 31-140 кГц |
Поддерживаемая вертикальная частота развертки | 29-76 Гц |
И максимальный пресет:
Режим | Частота горизонтальной развертки | Частота вертикальной развертки | Частота пикселизации | Полярность синхронизации |
---|---|---|---|---|
VESA, 3840×2160 | 133.3 кГц | 60.0 Гц | 533.25 МГц | H+/V- |
Итак, почему лаптоп не может использовать максимальное разрешение?
Дело в частоте пикселизации. Многие видеокарты, а тем более интегрированное в процессор видео, имеют железные ограничения частоты пикселизации, а из-за того, что в EDID монитора нет максимального разрешения с меньшей частотой вертикальной развертки вследствие ограниченности его размера, компьютер не может использовать максимальное разрешение.
К сожалению, производители редко публикуют максимальную частоту пикселизации видеочипов, ограничиваясь максимальным поддерживаемым разрешением, но для интересующих меня карт я нашел необходимую информацию:
Intel HD 3000 (Sandy Bridge): 389 кГц
Haswell ULT (-U): 450 кГц
Haswell ULX (-Y): 337 кГц
Что делать и что сделать?
Ответ очевиден — нужно уменьшить частоту пикселизации! Ее уменьшение приведет и к уменьшению частоты обновления монитора. Как нам это сделать? Нам нужно сгенерировать так называемый modeline — информацию о таймингах для видеокарты и монитора. В сети можно найти множество генераторов modeline, но большинство из них безнадежно устарели и ничего не знают о стандарте CVT-R, который мы и будем использовать. Я рекомендую вам воспользоваться umc под Linux, PowerStrip под Windows и SwitchResX под Mac OS. К слову, SwitchResX — единственная программа, которая может рассчитывать modeline по стандарту CVT-R2, но мой монитор его не поддерживает.
Modeline содержит следующую структуру:
Посмотрите на таблицу выше: минимальная вертикальная частота обновления моего монитора может равняться 29 Гц.
Давайте сгенерируем modeline для разрешения 3840×2160 с частотой обновления в 30 Гц:
Как видим, частота пикселизации с данным режимом будет установлена в 262.75 МГц, что далеко от ограничений моего видеоадаптера.
Давайте попробуем установить и активировать наш режим:
Если все прошло удачно, вы увидите картинку в «неподдерживаемом» вашей картой разрешении на мониторе. Ура!
У нас все еще есть большой запас по частоте пикселизации, да и вряд ли кому-то будет комфортно использовать монитор с частотой обновления в 30 Гц, поэтому мы будем увеличивать ее до тех пор, пока частота пикселизации не приблизится к значению в 389 МГц — пределу моего видеоадаптера. Путем нехитрых манипуляций удалось установить, что при такой частоте мы получаем вертикальную развертку в 44.1 Гц.
Не блеск, но жить можно!
Как можно заметить, частота горизонтальной развертки — 97.25 кГц — вполне в диапазоне поддерживаемых монитором. Как в случае с вертикальной разверткой, так и в случае с разрешением, монитору нет дела до конкретных режимов, поэтому мы можем использовать 3200×1800 при 60 Гц — еще не такое низкое разрешение, как 2560×1440, и с привычной частотой обновления.
Для второго способа достаточно создать файл с Xorg-секцией «Monitor» и поместить его в /etc/X11/xorg.conf.d/ :
Где Identifier — название вашего видеовыхода согласно xrandr. Опцией «PreferredMode» можно задать режим, который будет выбран по умолчанию.
У меня не получается!
Убедитесь, что вы подключаете монитор через DisplayPort 1.2. HDMI 1.4 не позволяет использовать частоту пикселизации выше 340 МГц, в то время как для DisplayPort (HBR2) верхнее ограничение равно 540 МГц. Также удостоверьтесь, что ваш монитор поддерживает частоту обновления выше 30 Гц на максимальном разрешении, т.к. ранние модели этим грешили.
Заключение
Не стоит слепо верить технической документации на монитор. В ходе исследований оказалось, что ограничение по вертикальной частоте аж 86 Гц, вместо 76 Гц по заявлению производителя. Таким образом, я могу наслаждаться плавной картинкой, хоть и в не в самом высоком разрешении
Какой размер VESA у моего ТВ? Что такое стандарт VESA для кронштейнов
Содержание
Содержание
С появлением технологии жидкокристаллических экранов компании начали производить недорогие плоские модели ТВ, сделав их общедоступными. Такие телевизоры зачастую нельзя поставить на подставку или мебель. Крепить их надо на стене или даже под потолком. Специально для этой задачи придумали стандарт креплений VESA. Что это такое и как подобрать кронштейн под свой телевизор? Подробности – в этом материале.
Что такое VESA
Нынешний стандарт креплений для плоских телевизоров разработала ассоциация VESA – в честь которой он и получил свое название. Полное его наименование – VESA FDMI (Flat Display Mounting Interface). Грубо говоря, это квадрат или прямоугольник с четырьмя отверстиями для болтов. Стандарт определяет взаиморасположение и размеры этих отверстий – исходя из этого, можно подобрать нужный кронштейн и крепеж. Почти все телевизоры, которые крепятся на стене или на потолке, имеют специальные отверстия по стандарту VESA.
В зависимости от расстояния между крайними точками, могут использоваться крепежи M4, M6 и М8. Последние два обычно применяются в VESA размером от 200 мм × 200 мм. Болты M4 используются для квадратных креплений размером 100 мм × 100 мм и меньше. В комплекте с кронштейном или ТВ также могут идти специальные шайбы.
Классификация стандартов VESA FDMI
Если вы подбираете кронштейн под свой телевизор, обязательно стоит изучить стандарты VESA FDMI. Многие изделия имеют сразу несколько наборов отверстий под разные типоразмеры. Обычно установка не вызывает трудностей – достаточно совместить отверстия между кронштейном и телевизором, после чего закрутить крепежи. Обязательно стоит заранее узнать, какой максимальный вес выдерживает нужный вам кронштейн. Если производитель по какой-то причине не указал эту информацию, ориентируйтесь на общепринятый стандарт.
Наименования стандарта | Максимально допустимый вес, кг | Рекомендуемая диагональ | Размеры креплений | Используемые болты |
MIS-B | 2 | до 7,9» | 50х20 мм | М4 |
MIS-C | 4,5 | до 11,9» | 75х35 мм | |
MIS-D 75 | 8 | до 22,9» | ||
MIS-F M6 | 50 | до 90» | 200×200 мм и более | M6 |
MIS-F M8 | 114 | M8 |
При покупке кронштейна нужно, в первую очередь, ориентироваться на вес и диагональ телевизора. По массе нужен запас хотя бы в 25%, чтобы нагрузка на крепеж не доходила до критической. Ограничения по диагонали важны, если телевизор будет поворачиваться в какой-либо плоскости.
На кронштейны можно вешать не только телевизоры, но и компьютерные мониторы, если они имеют крепежи согласно стандарту VESA
В маркировке VESA для кронштейна или телевизора может стоять еще одна дополнительная буква. Она обозначает расположение крепления не панели. В большинстве случаев используется вариант C – центральное расположение. Однако встречаются и варианты: L (слева), R (справа) или T (сверху). Учитывайте это при выборе.
Что делать, если на вашем ТВ и имеющемся кронштейне разные типоразмеры VESA? Решить проблему помогут специальные переходники. Их используют для перехода с одного типоразмера на другой. Другая, не менее востребованная функция – подсоединение кронштейнов VESA к мониторам без подходящих креплений. Последнее часто актуально для техники от Apple.
Так что выбрать нужный кронштейн VESA – довольно легко. Достаточно заказать модель, в которой имеются отверстия с нужной конфигурацией. Если вы устанавливаете какую-то нестандартную технику, то в первую очередь ориентируйтесь на максимально допустимый вес для выбранного кронштейна.
Разновидности кронштейнов: что выбрать?
Все разнообразие моделей кронштейнов можно разделить на три основных категории.
VESA: стандарт новый, проблемы старые
Cтандарты VESA 1.2 и VBE 2.0, некоторые рекомендации по их использованию.
При разработке своих компьютеров фирма IBM основывалась на том, что в целях совместимости все функции управления экраном должны выполняться через прерывания, а практический опыт и программирования, и практики производства аппаратуры привел к появлению своих правил, допускающих прямое программирование экранных операций, например рисование точки, тем более что поточечный вывод графики через прерывания оказался недопустимо медленным для большинства приложений. Вследствие этого VESA стандартизировала именно прямой доступ к видеопамяти, установив, что поддержка старых функций BIOS не обязательна для новых видеорежимов.
Первые 13h номеров видеорежимов были заданы де-факто стандартом VGA, и диапазон 14h-7Fh использовался фирмами-производителями видеоадаптеров по-разному, поэтому выделить в нем подобласть для введения нового стандарта, не «обижая» никого из разработчиков, оказалось невозможно. В связи с этим VESA решила вынести все вводимые новым стандартом функции, в том числе и установку видеорежима, в новую функцию прерывания 10h. В версии 2.0 на номер видеорежима отводилось уже не восемь, а шестнадцать бит, причем старший бит (теперь уже 15-й), как и раньше, управлял очисткой видеопамяти. Содержимое 8-го бита показывало, принадлежит данный режим стандарту VESA (единица) или нет (ноль). Такой подход позволил работать через интерфейс VESA как с вводимыми стандартом новыми режимами, так и со старыми, в том числе и режимами VGA.
Таблица 1. Стандартные видеорежимы VESA 1.2 | ||||
Номер режима | Тип | Разрешение | Число цветов | Число бит на цвет |
100h | Графический | 640×400 | 256 | — |
101h | Графический | 640×480 | 256 | — |
102h | Графический | 800×600 | 16 | — |
103h | Графический | 800×600 | 256 | — |
104h | Графический | 1024×768 | 16 | — |
105h | Графический | 1024×768 | 256 | — |
106h | Графический | 1280×1024 | 16 | — |
107h | Графический | 1280×1024 | 256 | — |
108h | Текстовый | 80×60 | 16 | — |
109h | Текстовый | 132×25 | 16 | — |
10Ah | Текстовый | 132×43 | 16 | — |
10Bh | Текстовый | 132×50 | 16 | — |
10Ch | Текстовый | 132×60 | 16 | — |
10Dh | Графический | 320×200 | 32K | (1:5:5:5) |
10Eh | Графический | 320×200 | 64K | (5:6:5) |
10Fh | Графический | 320×200 | 16.8M | (8:8:8) |
110h | Графический | 640×480 | 32K | (1:5:5:5) |
111h | Графический | 640×480 | 64K | (5:6:5) |
112h | Графический | 640×480 | 16.8M | (8:8:8) |
113h | Графический | 800×600 | 32K | (1:5:5:5) |
114h | Графический | 800×600 | 64K | (5:6:5) |
115h | Графический | 800×600 | 16.8M | (8:8:8) |
116h | Графический | 1024×768 | 32K | (1:5:5:5) |
117h | Графический | 1024×768 | 64K | (5:6:5) |
118h | Графический | 1024×768 | 16.8M | (8:8:8) |
119h | Графический | 1280×1024 | 32K | (1:5:5:5) |
11Ah | Графический | 1280×1024 | 64K | (5:6:5) |
11Bh | Графический | 1280×1024 | 16.8M | (8:8:8) |
В версии 1.2 предусмотрено девять функций (с номерами от 0 до 8), а в версии 2.0 добавлено еще две. Мы рассмотрим только первые девять, поскольку они поддерживаются обеими версиями стандарта.
Функция 0 возвращает информацию о версии VESA и производителе видеоплаты. Перед ее вызовом необходимо выделить в нижней памяти буфер длиной 256 байт. В версии 2.0 функция позволяет получить некоторую дополнительную информацию, если в первые четыре байта выделенного буфера предварительно записать 4-байтную сигнатуру «VBE2». При этом размер буфера должен составлять 512 байт.
Информационный блок имеет следующую структуру:
Первые три поля информационного блока пояснений, пожалуй, не требуют, кроме того, что числу 0102h соответствует версия 1.2, а не 1.02.
В версии 2.0 добавлено:
Функция 1 возвращает информацию о конкретном видеорежиме. Она выдает расширенную информацию о каждом режиме из списка, возвращаемого функцией 0. Требует выделения 256-байтного блока.
Информационный блок имеет следующую структуру:
ModeAttributes определяет наиболее важные характеристики видеорежима. Имеет следующую структуру:
Как уже было сказано, не все видеорежимы, номера которых выдаются функцией 0, могут быть доступны из-за ограничений, связанных с установленным объемом видеопамяти и т. п. Если видеорежим недоступен в данной конфигурации, бит D0 устанавливается в ноль.
Установка в единицу бита D5 сигнализирует о том, что видеоадаптер несовместим с VGA на уровне регистров, иными словами, перепрограммировать эти регистры не рекомендуется.
Таблица 2. | ||
Доступные режимы: | D7 | D6 |
Оконный (VGA) | 0 | 0 |
— | 0 | 1 |
Оконный и LFB | 1 | 0 |
LFB | 1 | 1 |
BytesPerScanLine определяет длину логической строки в байтах, которая может быть больше длины отображаемой линии растра.
WinAAttributes и WinBAttributes описывают способ доступа процессора к видеопамяти при оконном режиме.
WinGranularity и WinSize показывают granularity и размер окна в килобайтах соответственно.
MemoryModel определяет типы организации памяти:
Довольно часто у начинающих программистов возникает вопрос: «Если я установил прямое кодирование цвета, то как будут располагаться биты каждого из цветов в двух (трех) байтах, отведенных на одну точку?» Ответ дают восемь полей информационного блока.
RedMaskSize, GreenMaskSize, BlueMaskSize и RsvdMaskSize определяют глубину цвета в битах для каждой из цветовых составляющих. Например, в режиме прямого кодирования 64 Кбайт цветов 5:6:5 эти величины будут иметь значения 5, 6, 5 и 0 соответственно. При кодировании в режиме YUV цветовые координаты будут следовать в таком порядке: V, Y, U.
DirectColorModeInfo содержит флаги основных характеристик режимов с непосредственным кодированием цвета. В настоящее время используются два бита:
Функция 2 устанавливает видеорежим.
В общем случае при использовании любого видеорежима (оконного или LFB) необходимо выставлять соответствующий бит для его инициализации, но некоторые видеоплаты позволяют одновременно использовать оба.
Если видеорежим поддерживается, но недоступен режим адресации, заданный 14-м битом, то функция возвращает код ошибки, равный 2.
Функция 3 возвращает текущий видеорежим.
Функция 4 сохраняет/восстанавливает состояние. Она является развитием функции 1Ch прерывания 10h. Ее введение вызвано необходимостью сохранять и восстанавливать состояние расширенных регистров.
Функция, естественно, не сохраняет содержимое видеопамяти.
Функция 5 управляет экранным окном. Она позволяет переместить окно, через которое процессор обращается к различным участкам видеопамяти, а также узнать, в котором положении установлено текущее окно. Для повышения производительности эта функция может быть вызвана напрямую по адресу, возвращаемому функцией 1.
В версиях до 1.2 включительно функция, вызванная напрямую, не возвращала статуса завершения. Ее нельзя вызывать в режиме LFB. В этом случае она возвращает код ошибки, равный 3.
Функция 6 управляет логической длиной строки. Она позволяет изменить логическую длину строки, что может понадобиться для реализации горизонтального скроллинга, а также узнать текущую длину строки. Сам горизонтальный скроллинг, так же как вертикальный, управляется функцией 7.
Функции BL = 2 и BL = 3 были добавлены в версию 2.0.
Вследствие аппаратных ограничений запрошенный размер строки может не поддерживаться, и тогда устанавливается его ближайшее большее значение.
Эта функция доступна и в текстовых режимах, причем в них длина строки задается не в символах, а в точках растра. Для этого длину строки в символах надо умножить на размер знакоместа в точках, возвращаемый функцией 1. Если задать длину строки, не кратную размеру знакоместа, то это приведет к ошибке. При слишком большой длине строки функция возвращает код ошибки, равный 2.
Возможность производить установку во время вертикального обратного хода луча появилась только в версии 2.0. Эта функция поддерживается также в текстовых режимах. В этом случае в регистры заносится произведение номера строки или столбца на соответствующий размер знакоместа.
Функция 8 управляет форматом DAC палитры. Она позволяет управлять разрядностью цвета в регистрах палитры, если это поддерживается аппаратно (см. информационный блок поле Capabilities). По умолчанию в этих регистрах на каждый цвет отводится по шесть бит.
Если запрошенная разрядность цвета не может быть установлена, будет установлена ближайшая доступная, а ее величина будет возвращена в регистре BH.
Об остальных функциях VESA, поддерживаемых только версией 2.0, а также об особенностях использования функций этого стандарта в 32-битном защищенном режиме будет рассказано в следующей статье.
Для иллюстрации работы с основными функциями VESA приведем простенькую программу, в которую входит модуль, содержащий их интерфейс. Описание информационных блоков в тексте модуля опущено для сокращения длины листинга.
Работа программы разбита на несколько этапов, иллюстрирующих различные возможности. Для перехода к очередному этапу выполнения необходимо нажать на клавишу. Программа последовательно выполняет следующее:
— запрашивает общую информацию VESA, выводит некоторые данные на экран и производит опрос параметров для видеорежима 800x600x256 цветов, который затем будет установлен. Номер видеорежима выбирается таким, чтобы он мог быть установлен даже на видеоадаптере с видеопамятью 512 Кбайт. В этом случае, правда, трудно рассчитывать на панорамирование и скроллинг изображения. Впрочем, сложности с этим возникают и на некоторых мегабайтных видеокартах (в частности, на микросхеме S3);
— переключает видеоадаптер в графический режим и заполняет каждый банк видеопамяти своим цветом, для чего производятся два обращения к процедуре заполнения памяти, так как наиболее часто встречаемое granularity, равное 64 Кбайт, превосходит максимальную длину области, заполняемой процедурой FillChar;
— выводит на экран многоцветную наклонную полосу с помощью процедуры рисования точки, образец которой помещен в основной программный модуль;
— переключает логическую длину строки, после чего горизонтальные цветные полоски, соответствующие банкам видеопамяти, становятся уже, а наклонная полоса «рассыпается»;
— рисует многоцветную полосу заново с учетом новой геометрии экрана;
Следует отметить, что для максимального сокращения объема текста в программе отсутствуют анализ успешного завершения функций, проверка доступности окна А на запись и т. п.