VESA BIOS Extensions ( VBE ) — это стандарт VESA , в настоящее время версии 3, который определяет интерфейс, который может использоваться программным обеспечением для доступа к совместимым видеоплатам с высоким разрешением и глубиной цвета. Это противоречит «традиционным» вызовам INT 10h BIOS , которые ограничены разрешением 640×480 пикселей с глубиной цвета 16 цветов (4 бита) или меньше. VBE доступен через BIOS видеокарты , который устанавливает некоторые векторы прерываний , указывающие на себя во время загрузки .
Большинство новых карт реализуют более эффективный стандарт VBE 3.0. Более старые версии VBE предоставляют только интерфейс реального режима , который не может быть использован без существенного снижения производительности в операционных системах защищенного режима . Следовательно, стандарт VBE почти никогда не использовался для написания драйверов видеокарт; поэтому каждому производителю приходилось изобретать собственный протокол для связи со своей собственной видеокартой. Несмотря на это, драйвер часто обращается к прерыванию реального режима, чтобы инициализировать режимы экрана и получить прямой доступ к линейному буферу кадров карты , поскольку в противном случае эти задачи потребовали бы обработки многих сотен собственных вариаций, которые существуют от карты к карте.
В системах EFI 1.x INT 10H и VESA BIOS Extensions (VBE) заменены протоколом EFI UGA. В широко используемых системах UEFI 2.x INT 10H и VBE заменены UEFI GOP . [1] [2]
VBE 1.0 (VS891001) был определен в 1989 году. [3] VBE 1.1 (VS900602) был определен в 1990 году. VBE 1.2 (VS911022) был определен в 1991 году. [4] Для работы этих версий VBE требуется реальный режим.
VBE определяет несколько новых функций, вызываемых через INT 10H . Нумерация функций начинается с AX=4F00 или (AH=4F, AL=00) для функции 00h . 00h по 05h были определены в VBE 1.0, 06h и 07h в 1.1 и 08h в 1.2.
Этот стандарт обеспечивает основную функциональность расширений VESA BIOS. Он позволяет приложениям определять возможности графической карты и обеспечивает возможность устанавливать найденные режимы отображения. VBE 2.0 добавляет некоторые новые функции по сравнению с предыдущим стандартом VBE 1.2, включая линейный доступ к буферу кадров и защищенный режим банкинга. Некоторые из функций VBE Core 2.0 [5] включают:
Расширение стандарта VBE 2.0. Этот стандарт добавляет управление частотой обновления , возможности для стереоочков , улучшенную многобуферизацию и другие функции к стандарту VBE 2.0.
В качестве альтернативы функции 0Ah была добавлена новая «Точка входа в защищенный режим» .
VBE/AF предоставляет низкоуровневый стандартный интерфейс для общих функций ускорения, доступных на большинстве аппаратных средств. Некоторые из функций, определенных в стандарте, включают доступ к аппаратным курсорам, Bit Block Transfers (Bit Blt), внеэкранные спрайты , аппаратное панорамирование, рисование и другие функции. Он определен для работы в 32-битном защищенном режиме. Несмотря на широкое распространение VBE Core, очень немногие устройства поддерживают VBE/AF. Проект FreeBE/AF реализует бесплатные сторонние драйверы VBE/AF для определенных видеокарт.
Дополнительные спецификации обеспечивают независимый от устройства интерфейс между прикладным программным обеспечением и оборудованием Super VGA. Номера функций назначаются Комитетом по стандартам программного обеспечения VESA (SSC).
DPMS — это аппаратный стандарт, позволяющий графическим картам взаимодействовать с мониторами, совместимыми с DPMS , посредством специальной системы сигнализации, которая может использоваться с существующими графическими контроллерами и кабелями мониторов. Эта система сигнализации позволяет графической карте сообщать монитору о необходимости перехода в ряд различных состояний управления питанием или энергосбережения, которые фактически позволяют монитору выключаться, когда он не используется.
Обеспечивает доступ к специальным функциям контроллеров с плоским экраном.
Предоставляет стандартные аудиоуслуги.
В настоящее время (версия 1.00) спецификация VBE/AI определяет три класса устройств: WAVE, MIDI и VOLUME. Типы устройств, не охваченные:
Предоставляет стандартный доступ к расширениям, специфичным для поставщика.
Display Data Channel или DDC — это цифровое соединение между дисплеем компьютера и графическим адаптером , позволяющее дисплею передавать свои характеристики адаптеру. Стандарт был создан VESA .
Предоставляет аппаратно-независимые средства для операционной системы и приложения для чтения и записи данных через последовательный интерфейс управления I²C .
Хотя номер режима — это 16-битное значение, необязательные номера режимов VBE имеют ширину 14 бит. Бит 15 используется VGA BIOS как флаг для очистки или сохранения памяти дисплея. VBE определил номера режимов следующим образом:
Начиная с VBE/Core 2.0, VESA больше не определяет новые номера режимов VESA и больше не требует устройства для реализации старых номеров. Для правильного определения информации о режиме экрана используйте функцию 01h - Return VBE Mode Information .
Режим 81FFh — это специальный видеорежим, предназначенный для сохранения текущего содержимого памяти и предоставления доступа ко всей видеопамяти.
Начиная со стандарта VBE 2.0, VESA не будет определять новые режимы, а старые режимы больше не являются обязательными. Использование определенных режимов следует считать устаревшим: современные видеокарты могут использовать или не использовать эти номера режимов (хотя большинство используют их для обратной совместимости), а современное программное обеспечение не должно их использовать. Правильный способ обнаружения программным обеспечением доступных режимов отображения — получить список режимов (используя «Function 00h — Return VBE Controller Information»), а затем проверить каждый режим (используя «Function 01h: Return VBE Mode Information»), пока не найдет требуемый режим/ы. [ необходима цитата ]
Режимы 264–268 являются текстовыми режимами. 264 (0108h) — 80 столбцов × 60 строк (80×60), 265 (0109h) — 132×25, 266 (010Ah) — 132×43, 267 (010Bh) — 132×50 и 268 (010Ch) — 132×60.
В таблице ниже объединены режимы, определенные VESA (значения, обозначенные черным цветом), а также обычно используемые режимы, которые, однако, могут работать не на всех видеокартах, поскольку они не определены ни одним стандартом ( обозначены красным цветом ).
Было написано несколько инструментов для обнаружения режимов VBE, доступных в системе. Они обычно работают, вызывая функцию 01h , что надежнее, чем предполагать таблицу расширенных режимов, поскольку она является частью самодокументирования устройства.
hwinfo --framebuffer
отчетов выводит графическую информацию, включая режимы VESA в строке «Mode».vbetest
программу, которая выводит на печать информацию VESA.vbetest
для DOS, датируемая 1994 годом.vbeinfo
команду для распечатки доступных видеорежимов и vbetest
для попытки определенного режима. Они используют встроенную таблицу вместо функции 01h . Для других платформ, включая x86 EFI, они заменяются более общими videoinfo
и videotest
.Ядро Linux позволяет пользователю выбирать режим VESA во время загрузки, передавая код в памяти ядру. Загрузчик LILO передает этот код на основе параметра "vga" в своем конфигурационном файле. Он принимает форму "vga=XXX", где XXX - десятичное значение, или "vga=0xHHH", где HHH - шестнадцатеричное значение. Однако параметр загрузчика "vga=" напрямую не принимает номера видеорежима VESA; вместо этого номер видеорежима Linux - это номер VESA плюс 512 (в случае десятичного представления) или плюс 0x200 (в случае шестнадцатеричного представления). Например, определенное значение VESA 257 (0x101), представляющее 640x480 и 256 цветов, имеет эквивалентное значение видеорежима Linux 769 (0x301). [12]
Как указывалось ранее, стандарт VESA определяет ограниченный набор режимов; в частности, ни один из перечисленных выше1280 ×1024 охвачены, и вместо этого их реализация является полностью необязательной для производителей графических адаптеров. Поскольку поставщики вольны использовать любые дополнительные значения, которые им заблагорассудится, это означает, что в таблице ниже режимы, обозначенные красным (и выраженные в десятичной форме), могут не применяться к каждому графическому адаптеру !
1: 32-бит на самом деле (8:8:8:8), но последнее 8-битное число — это «пустой» альфа-канал. В остальном это эквивалентно 24-битному цвету. Многие графические процессоры используют 32-битный цветовой режим вместо 24-битного просто для более быстрого доступа к видеопамяти через 32-битное выравнивание памяти.
VGA= 864 [ 352 (0160h)] также, кажется, выбирает1280 × 800 (8 бит) для различных дисплеев ноутбуков.
VGA= 834 [ 322 (0142h)] - это1400 ×1050
Эмуляция VESA BIOS в виртуальной машине Parallels имеет другой набор нестандартных режимов VESA. Начиная с версии 3214, LRMI vbetest раскрывает следующие режимы:
Эмуляция VESA BIOS в виртуальной машине VirtualBox имеет другой набор нестандартных режимов VESA. Начиная с версии 6.1.38_Ubuntu build r153438, функция VESA BIOS AX=0x4F01 раскрывает эти режимы (см. также VBETables-gen.c):