Домой | EN-US Английский | RU Русский | Другие проекты (EN-US Английский)


Проект VBEMP x86
Универсальный VESA/VBE Видео Драйвер
(для архитектуры Windows NT x86)

Проект начат в Мае 2004 г.

Обзор


Ключевые возможности :

Планируемые возможности :


Загрузить драйверы


Этот драйвер рекомендуется использовать в том случае, когда у Вас имеются новые или неизвестные видеокарты и у Вас нет для них соответствующих драйверов. Лучше всего связаться с производителем Вашей видеокарты или найти драйверы в ИНТЕРНЕТЕ. ТОЛЬКО ЕСЛИ Вам ваще не удалось найти драйверы, Я рекомендую использовать мой (vbemp.sys). Мой драйвер прост и не обеспечивает аппаратного 3D ускорения (DirectX & OpenGL).

Если Ваша карта - продукт AMD-ATI Technologies и эта карта определяется двумя устройствами ("Radeon xxxx" и "Radeon xxxx Secondary") только "Ручная" или "legacy" версия может заработать с ней.

Мой драйвер НЕ поддерживает подключение нескольких видеокарт одновременно и эта опция НЕ планируется.

Мой драйвер НЕ поддерживает 64-битные версии Windows XP/2003 и Windows Vista.

Перед установкой VBEMP.SYS я настоятельно рекомендую удалить все драйверы видеокарт, включая любые версии драйвера VBEMP, установленные в системе и переключиться в стандартный VGA-режим 640x480x16цветов.

Системные требования :

!!! Версия для Windows 2003/Windows XP, в принципе ваще не нужна, потому что ее базовая функциональность уже включена в стандартный VGA.SYS. В отличие от моего драйвера, VGA.SYS поддерживает 4-бит (16 цветов) режимы, но не умеет работать с некоторыми картами корректно, не переключается в разрешения экрана меньше 640x480 и не может переключать частоту обновления экрана (refresh rate) по стандарту VBE 3.0.

ОС

Версия

Описание

Ссылка

Windows NT,
Windows 2000,
Windows XP,
Windows 2003,
Windows PE

Release version
бета
01.14.2009

Универсальные VBE30 и VBE20 версии.**

VbempI.zip

Windows NT,
Windows 2000,
Windows XP,
Windows 2003,
Windows PE

Release version
бета
04.26.2008

Универсальные VBE30 и VBE20 версии.**

VbempH.zip

Windows NT,
Windows 2000,
Windows XP,
Windows 2003,
Windows PE,
ReactOS***

"STABLE"
Release version
10.19.2007

Универсальные VBE30 и VBE20 версии.**

VbempG.zip

Windows NT клоны - ВСЕ из них

Release version
beta
01.08.2009

Специальная версия драйвера для чипов Cirrus Logic: CL-GD542x, CL-GD543x, CL-GD544x, CL-GD546x, CL-GD5480, включая CL-GD5446 который используется в qemu. В картах с 2Mb+ VRAM доступен 32-битный цвет.

Загрузить

Windows NT клоны - ВСЕ из них

Debug version * 01.03.2009

IBM Graphics driver работает на любых EGA/VGA-совместимых картах (моно, 16, 256 цветов).

Vga13h.zip

Windows NT 4.0

Release version
10.28.2007

VGAMONO USWC специальный драйвер, к-рый эмулирует truecolor в 1,2 или 4-битовых режимах, работает на любых VBE-совместимых картах.

VgaMono.zip

Windows NT 3.51,
Windows NT 4.0,
Windows 2000,
Windows XP,
Windows 2003

Release version
12.19.2008

Панель управления для VBEMP.

VbempCPL.rar

Windows NT 3.5x,
Windows NT 4.0

Release version
бета
11.30.2008

FRAMEVBE библиотека с поддержкой технологии теневого буфера.

framevbe.rar

Примечание 0: Если у Вас появляются проблемы с установкой VBEMP или любого другого драйвера в среде Windows NT 4.0 (и NT 3.5x) - гаснет экран, система "виснет" после перезагрузки - прочтите эту статью MS. Подробности здесь: MSKB: AGP Video Support for Windows NT 3.51 and 4.0 (Q174567) ).

Примечание 1: Если Ваша карта работает медленно с установленным VBEMP, особенно при перемещении больших окон, прокрутке текста и заметно мерцание экрана Вы можете улучшить ситуацию:

Примечание 2: Начиная с версии датированной 10.19.2007, vbemp?.zip содержит эти варианты драйвера VBEMP:

Примечание 3: Как Вы уже заметили, для Windows 2000/XP/2003/PE существуют две версии - PnP и LEGACY. А еще каждый подвид драйвера имеет VBE30 и VBE20 версии. Для чего это сделано:

Примечание 4: По умолчанию любые Plug'n'Play видеокарты определяются КОРРЕКТНО 2000/XP/2003 версией моего драйвера. Но если Вы хотите, Вы МОЖЕТЕ добавить PCI VENDOR/DEVICE ID Вашей видеокарты в vbemppnp.inf для того, чтобы Ваша карта определялась под своим именем или можете выбрать драйвер вручную, когда Windows впервые находит неизвестное устройство. Это необязательное действие!
Пример:

; vbemp5.inf
;
; Installation file (.inf) for the VBE Miniport device.
;
; (c) Copyright 2006 AnaPa Corp 
;
 . . . . . .

 . . . . . .
[AnaPa.Mfg]
VBE Минипорт = Vbemp, NOPNP
VBE Минипорт - Standard PCI Graphics Adapter (VGA) = Vbemp, PCI\CC_0300
VBE Минипорт - Standard PCI Graphics Adapter (XGA) = Vbemp, PCI\CC_0301
VBE Минипорт - Standard PCI Graphics Adapter = Vbemp, PCI\CC_0380
VBE Минипорт - Standard Graphics Adapter (VGA) = Vbemp, *PNP0900
VBE Минипорт - VGA = Vbemp, *PNP0917
VBE Минипорт - SVGA = Vbemp, NOPNP
VBE Минипорт - 1394 = Vbemp,1394\&
VBE Минипорт (ATI Rage 128PRO 4x pri) = Vbemp, PCI\VEN_1002&DEV_5046
VBE Минипорт (Intel D845G) = Vbemp, PCI\VEN_8086&DEV_2562&SUBSYS_52478086
Имя Вашей карты = Vbemp, PCI\VEN_xxxx&DEV_yyyy&SUBSYS_zzzzzzzz ; шаблон карты, смотри ниже
 . . . . . .

Чтобы вписать эту строку Вы можете использовать программу PCI32.EXE упомянутую ниже, вот пример отчета:

 . . . . . .
 Bus 1 (AGP), Device Number 0, Device Function 0
 Vendor 1002h ATI Technologies Inc
 Device 4966h Radeon 9000 Series (RV250)
 Command 0187h (I/O Access, Memory Access, BusMaster, Wait Cycles, System Errors)
 Status 02B0h (Has Capabilities List, Supports 66MHz, Supports Back-To-Back Trans., Medium Timing)
 Revision 01h, Header Type 80h, Bus Latency Timer FFh
 Minimum Bus Grant 08h, Maximum Bus Latency 00h
 Self test 00h (Self test not supported)
 Cache line size 32 Bytes (8 DWords)
 PCI Class Display, type VGA
 Subsystem ID 4F721002h Radeon 9000 Series (RV250)
 Subsystem Vendor 1002h ATI Technologies Inc
 . . . . . .

Примечание 5: Мой драйвер не предоставляет никакой поддержки для корректного запуска полноэкранных DOS приложений в графических режимах VESA. Это контролирует VGA.SYS и в большинстве случаев он блокирует прямой доступ к портам ввода-вывода и препятствует запуску VESA программ. Существуют сторонние патчи - WinXPFix Utility (http://www.nomissoft.com/service.html#as2downloads) и 'Videoport driver patch for VESA in NTVDM' (http://www.volny.cz/martin.sulak/, прямая ссылка videoprt.zip) которые исправляет "поведение" VGA.SYS. Попробуйте их если Вам нужен запуск DOS программ в Windows. Я никаким образом не связан с разработчиком(-ами) данных программ.

* Для получения RELEASE-версии этого драйвера (которая более стабильна, вдвое меньше размером и работает быстрее DEBUG-версии) Вам нужно связаться со мной по e-mail и прислать мне отчет, сгенерированный утилитой INFOVBE.EXE, потом Я вышлю Вам RELEASE-версию драйвера по e-mail. Я рекомендую эту версию только после того, как Вы убедитесь в том, что DEBUG-версия работает с Вашей картой корректно.

** Если универсальная версия не работает с Вашей картой, Вы можете попробовать Ручную версию. Чтобы получить ее Вам нужно связаться со мной по e-mail и прислать мне отчет, сгенерированный INFOVBE.EXE, потом Я вышлю Вам перcональную версию драйвера для Вашей видеокарты по e-mail.

*** Как установить VBEMP драйвер в среде Windows PE:
  1. Для CD-инсталляции: поместите vbemp.sys в каталог \I386\SYSTEM32\DRIVERS, vbempnp.inf в каталог \I386\INF. Я очень рекомендую предварительно удалить display.inf из каталога \I386\INF.
  2. Для HDD-инсталляции: vbemp.sys в каталог \MININT\SYSTEM32\DRIVERS, vbempnp.inf в каталог \MININT\INF. Я очень рекомендую предварительно удалить display.inf из каталога \MININT\INF.
  3. После запуска WindowsPE выполните:
    factory.exe -winpe
    Эта строчка запустит драйвер.
Как установить legacy VBEMP драйвер в среде Windows PE:
  1. Заменить %SystemRoot%\SYSTEM32\DRIVERS\VGA.SYS моей версией и перезагрузиться.
Как установить VBEMP драйвер в среде ReactOS 0.3.x:
  1. Заменить \REACTOS\SYSTEM32\DRIVERS\VBEMP.SYS моей версией и перезагрузиться.

Настройки реестра


Для "тонкой" настройки драйвера Вы можете использовать Панель управления для VBEMP.
Ветка : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vbemp\Device0
или HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vgasave\Device0 в legacy режиме

Обратите внимание что HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
это виртуальная ветка и она соответствует одной иэ следующих веток:

Ветка : HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Services\Vbemp\Device0
или HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Services\Vgasave\Device0 в legacy режиме
где XXX принимает значения 001, 002, 003 ...
в зависимости от выбранной конфигурации оборудования
согласно значению "Current" отсюда: HKEY_LOCAL_MACHINE\SYSTEM\Select 

В Windows XP и далее эти ключи дублируются:

Ветка : HKLM\SYSTEM\CurrentControlSet\Control\Video\{yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}\XXXX
или HKLM\SYSTEM\CurrentControlSet\Control\Video\{23A77BF7-ED96-40EC-AF06-9B1F4867732A}\0000
в legacy режиме

Обратите внимание что HKLM\SYSTEM\CurrentControlSet\Control\Video
это "multi-device" ветка и она соответствует одной иэ следующих веток:
где XXXX принимает значения 0000, 0001, 0002, 0003 ... 
в зависимости от выбранного графического устройства вывода начиная с 0.

Значение {yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy} зависит от
соответствующей конфигурации оборудования согласно значению "Service" отсюда:
HKLM\SYSTEM\CurrentControlSet\Control\Video\{yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}\Video
где оно принимает значения "vbemp" или "Vgasave" в legacy режиме
Вот возможные параметры:
 
Ключ : Acceleration.Level
Значение : (REG_DWORD) уровень видео акселерации (0 - 5, 5 - наименьший уровень)
Пояснение : Если "0"-"4" или ключ отсутствует, теневой буфер отключен, а если "5" - включен. Эта установка имеет значение для всех версий VBEMP, работающих под Windows2000 и старше (XP/2003). Рекомендуемое значение - 5.
Необходима перезагрузка : Да.
 
Ключ : VBE_GREY
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, VBEMP в 256-цветных режимах использует стандартную палитру, а если "1" - полутоновую.
Необходима перезагрузка : Нет.
 
Ключ : VBE_VENDORID
Значение : (REG_DWORD) PCI идентификатор устройства, допустимы только следующие значения:

1. 0x100C (Tseng Labs Inc) 2. 0x1013 (Cirrus Logic) 3. 0x5333 (S3 Inc) 4. 0x1023 (Trident Microsystems Inc)
Пояснение : Значение играет роль только для ISA/VLB карт. (появилось в версии от мая2007!).
Необходима перезагрузка : Да.
 
Ключ : VBE_MEMBASE
Значение : (REG_DWORD) базовый адрес буфера кадра, к примеру:
1. 0x80000000 (для карт S3 Inc)
2. 0xD00000 (для карт Cirrus Logic)
3. 0xE00000 (для карт Cirrus Logic)
4. 0xF00000 (для карт Cirrus Logic)
5. 0x4D00000 (для карт Cirrus Logic)
6. 0x4E00000 (для карт Cirrus Logic)
7. 0x4F00000 (для карт Cirrus Logic)
8. 0xC00000 (для карт Tseng Labs)
9. 0x100000-0x3F00000 (для карт Trident)
Пояснение : Значение берется из документации на видеокарту, Вы должны знать его точно, у Вас есть варианты:
  1. Если это значение ниже линии 16Mb (< 0x1000000) и у Вас менее 16Mb системной памяти то Вы без проблем уcтановите VBEMP.
  2. Если это значение ниже линии 16Mb (< 0x1000000) и у Вас 16Mb или более системной памяти Вы должны включить опцию "Memory hole option" в BIOS Setup Program Вашего компьютера.
  3. Если это значение выше либо равно 16Mb (>= 0x1000000) и у Вас 16Mb или более системной памяти убедитесь что видео- и системная память не пересекаются. Если они пересекаются у Вас не будет возможности установить VBEMP на такой компьютер. В таком случае, Вы можете попытаться отключить или ограничить использование памяти выше адресов буфера кадра, используя ключи /MAXMEM или /BURNMEMORY в Вашем файле \boot.ini.
Буфер кадра НЕ МОЖЕТ перекрывать регион системной памяти!
Значение играет роль только для ISA/VLB карт. (появилось в версии от мая2007!).
Необходима перезагрузка : Да.
 
Ключ : VBE_USWC
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, Комбинированная запись (USWC) отключена, а если "1" - включена. (появилось в версии от июня2007!).
Необходима перезагрузка : Да.
 
Ключ : VBE_ALIGN
Значение : (REG_DWORD) 2, 1 или 0
Пояснение : Если "0" или ключ отсутствует, память буфера кадра выравнивается по границе 64Kb, если "1" - по границе 4Mb, если "2" - по размеру всей памяти адаптера. Установка "1" рекомендуется когда Комбинированная запись (USWC) включена. (появилось в версии от июня2007!).
Необходима перезагрузка : Нет.
 
Ключ : VBE_VSYNC
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, Полярность вертикальной синхронизации отрицательная, а если "1" - положительная. (появилось в VBE30 версии от июня2007!).
Необходима перезагрузка : Нет.
 
Ключ : VBE_HSYNC
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, Полярность горизонтальной синхронизации отрицательная, а если "1" - положительная. (появилось в VBE30 версии от июня2007!).
Необходима перезагрузка : Нет.

Значения параметров для полярности HSync и VSync берутся из документации на монитор. Обычно можно принять что режим 640 x 400 использует -Hsync и +Vsync, режимы 640 x 480, в основном, используют +Hsync и +Vsync и все высшие режимы (800 x 600 и более) используют -Hsync и -Vsync полярности.

Ключ : VBE_FILTER
Значение : (REG_BINARY) максимум 32 строчки по 8 байт = 256 байт
Примеры:
08,00,06,00,00,00,00,00 - выключает все 800x600 режимы 
08,00,06,00,00,00,00,56 - выключает все 800x600 режимы с частотой выше 56гц 
08,00,06,00,00,70,00,85 - выключает все 800x600 режимы с частотой выше 85гц и ниже 70гц 
00,00,00,00,00,00,01,00 - выключает все режимы с частотой выше 100гц
Пояснение : Если ключ отсутствует, VBEMP не осуществляет фильтрацию режимов. (появилось в версии от июля2007!).
Необходима перезагрузка : Да.
 
Ключ : VBE_DDC
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, VBEMP не определяет PNP монитор используя PNP-менеджер, а если "1" - определяет. (появилось в версии от июня2007! Не для legacy-mode драйверов!).
Необходима перезагрузка : Да.
 
Ключ : VBE_EDID
Значение : (REG_DWORD) 1 или 0
Пояснение : Если "0" или ключ отсутствует, VBEMP не определяет PNP монитор используя внутренние механизмы драйвера, а если "1" - определяет. (появилось в версии от июля2007!).
Необходима перезагрузка : Да.
 
Ключ : VBE_RAWEDID
Значение : (REG_BINARY)
Пояснение : Когда VBE_EDID = 1, EDID-блок пишется сюда. (появилось в версии от июля2007!).
 
Ключ : VBE_NVSCALE
Значение : (REG_DWORD) 2, 1 или 0
Пояснение : Если "0" или ключ отсутствует, масштабирование включено, если "1" - выключено и изображение центрировано, если "2" - выключено и изображение вверху слева. Значение играет роль только для карт nVidia, подключенных к LCD дисплею через DVI. (появилось в версии от января2009!).
Необходима перезагрузка : Да.

Скриншоты. Проект VBEMP x86 в работе :)


Windows NT 3.51 Workstation SP5 NT3-1 | NT3-2 | NT3-3
Windows NT 4.00 Workstation SP6a NT4-1 | NT4-2 | NT4-3
Windows 2000 Professional SP4 NT5-1 | NT5-2 | NT5-3 | NT5-4 | NT5-5 | NT5-6 | NT5-7 | NT5-8 Windows XP Professional SP2 NT51-1 | NT51-2 | NT51-3 | NT51-4 | NT51-5 | NT51-6 | NT51-7 | NT51-8

Инструкция: Полное удаление драйвера VBEMP из системы WinNT/2K/XP/2K3


  1. Удалить файлы:
    \%WINDOWS_DIR%\SYSTEM32\DRIVERS\VBEMP.SYS 
    \%WINDOWS_DIR%\INF\oem?.inf
    \%WINDOWS_DIR%\INF\oem?.pnf
    где ? принимает значения 1,2,3,4.....
    содержимое oem?.inf должно соответствовать:
    vbemp4.inf (для Windows NT 4.0)
    vbempnp.inf (для Windows 2000/XP/2003)
    
    \%WINDOWS_DIR%\SYSTEM32\oemvio?.inf (для Windows NT 3.x)
    где ? принимает значения 1,2,3,4.....
    содержимое oemvio?.inf/ должно соответствовать:
    oemsetup.inf (для Windows NT 3.x)
    
  2. Удалить Вашу карту из Менеджера устройств или вычистить ветки реестра:
    Все: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vbemp
    Только для Windows XP/2003: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video\{yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}
    где расположение {yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy} описано выше в Настройках реестра
    

Функция Ke386CallBios()


Декларация функции, импорт NTOSKRNL.LIB

#define SIZE_OF_80387_REGISTERS      80
typedef struct _FLOATING_SAVE_AREA {
    ULONG   ControlWord;
    ULONG   StatusWord;
    ULONG   TagWord;
    ULONG   ErrorOffset;
    ULONG   ErrorSelector;
    ULONG   DataOffset;
    ULONG   DataSelector;
    UCHAR   RegisterArea[SIZE_OF_80387_REGISTERS];
    ULONG   Cr0NpxState;
} FLOATING_SAVE_AREA;

typedef struct _CONTEXT {
    ULONG ContextFlags;
    ULONG   Dr0;
    ULONG   Dr1;
    ULONG   Dr2;
    ULONG   Dr3;
    ULONG   Dr6;
    ULONG   Dr7;
    FLOATING_SAVE_AREA FloatSave;
    ULONG   SegGs;
    ULONG   SegFs;
    ULONG   SegEs;
    ULONG   SegDs;
    ULONG   Edi;
    ULONG   Esi;
    ULONG   Ebx;
    ULONG   Edx;
    ULONG   Ecx;
    ULONG   Eax;
    ULONG   Ebp;
    ULONG   Eip;
    ULONG   SegCs;              // НЕ ТРОЖЬ - ХУЖЕ БУДЕТ
    ULONG   EFlags;             // НЕ ТРОЖЬ - ХУЖЕ БУДЕТ
    ULONG   Esp;
    ULONG   SegSs;

} CONTEXT;
typedef CONTEXT *PCONTEXT;

NTSTATUS
Ke386CallBios (
    IN ULONG BiosCommand,
    IN OUT PCONTEXT BiosArguments
    );

Пример Вызова Ke386CallBios()

Важно!!! Вызывается из любой точки Windows 2000 (XP/2003 или NT) драйвера видео минипорта кроме DriverEntry() и HwFindAdapter(), кроме того еще нужно добавить след. строки в HwFindAdapter():
ConfigInfo->>VdmPhysicalVideoMemoryAddress.LowPart = 0x000A0000; 
ConfigInfo->>VdmPhysicalVideoMemoryAddress.HighPart = 0x00000000; 
ConfigInfo->>VdmPhysicalVideoMemoryLength = 0x00020000; 
ConfigInfo->>NumEmulatorAccessEntries = 0; 
ConfigInfo->>EmulatorAccessEntries = NULL; 
ConfigInfo->>EmulatorAccessEntriesContext = 0; 
ConfigInfo->>HardwareStateSize = 0; 
А вот сам вызов ф-ции ( при IRQL = 0!!! ):
VOID
Sample()
{
  CONTEXT BiosRegisters;
  NTSTATUS Status;

  ...
  VideoPortZeroMemory(&BiosRegisters, sizeof(BiosRegisters));
  BiosRegisters.Eax = 0x0F00;
  Status = Ke386CallBios(0x10, &BiosRegisters);
  ...
}
Windows NT 3.x особый случай, типа. Перед ПЕРВЫМ ВЫЗОВОМ Ke386CallBios() Вам нужно обратиться к VideoPortInt10() как-нибудь. Типа:
BOOLEAN 
Sample2(PVOID HwDeviceExtension)
{
  PVBE_DEVICE_EXTENSION VBEDeviceExtension = 
    (PVBE_DEVICE_EXTENSION)HwDeviceExtension;
  VIDEO_X86_BIOS_ARGUMENTS BiosRegs;
  CONTEXT BiosRegisters;
  NTSTATUS Status;

  ...
  VideoPortZeroMemory(&BiosRegs, sizeof(BiosRegs));
  BiosRegs.Eax = 0x0F00;
  VideoPortInt10(HwDeviceExtension, &BiosRegs);
  ...
  VideoPortZeroMemory(&BiosRegisters, sizeof(BiosRegisters));
  BiosRegisters.Eax = 0x0F00;
  Status = Ke386CallBios(0x10, &BiosRegisters);
  ...
}

Дополнительная информация


Официальная информация по стандарту VESA BIOS Extensions 3.0 - http://www.vesa.org/public/vbe/vbe3.pdf.

THE VESA GENERALIZED TIMING FORMULA (GTF) Excel™ spreadsheet - http://www.vesa.org/Public/GTF/GTF_V1R1.xls.

VESA COORDINATED VIDEO TIMING (CVT) GENERATOR Revision 1.1 Excel™ spreadsheet - http://www.vesa.org/Public/CVT/CVTd6r1.xls.

Файл справки "Дисплеи и устройства печати: Windows XP DDK" (Built on Friday, February 18, 2005) - g.zip.

Посетите ReactOS operating system 'tm subversion repository для обзора исходников последней версии оригинального vbemp.sys драйвера - http://svn.reactos.org/.../miniport/vbe/

Посетите VirtualBox 'tm subversion repository для обзора исходников последней версии драйвера для виртуального видеоадаптера - http://www.virtualbox.de/.../WINNT/Graphics?rev=1

SciTech Software Inc выпустила коммерческую версию аналогичного драйвера (SciTech SNAP Graphics changelog) для Windows, OS/2, QNX & Linux. Эти версии пробные на 21 день.

  1. Скачать Windows 2000/XP Version 3.1.4 DPVL beta2 [dpvlbeta2.zip].
  2. Скачать Windows NT 4.0 Версия 3.1.1 [snap-winnt-3.1.1.exe]. Поддерживаемое оборудование.
  3. Скачать Windows NT 4.0 Версия 3.1.3 beta 1284 [snap-winnt-3.1.3-1284.exe].
  4. Скачать DOS Версия 3.1.1 [snap-dos-3.1.1.exe]. Поддерживаемое оборудование.
  5. Скачать IBM OS/2 (eCS) Версия 3.1.8 [snap-os2-3.1.8.exe]. Поддерживаемое оборудование.

Более новую Персональную версию (пробную на 6 месяцев) можно скачать БЕСПЛАТНО зарегистрировавшись на http://my.scitechsoft.com/navigate.php.

Посетите сайт http://et6000.narod.ru/ который содержит драйвер и исходный код к нему для видеокарт Tseng Labs ET6000, ET6100 и ET6300 PCI для Windows 2000/XP.

VIDEOSIM.SYS frame buffer simulator пример видеодрайвера (исходный код) из комплекта разработчика устройств (DDK) Windows NT 4.0 videosim.zip.

MIRROR.SYS frame buffer mirror пример видеодрайвера (исходный код) из комплекта разработчика устройств (DDK) Windows 2000 mirror.zip.

Здесь Вы можете найти некоторые тесты и бенчмарки, которые я использовал для тестирования производительности моего драйвера - benches.rar


Протестированные видеокарты/чипсеты


  1. VBE 3.00 INTERNAL Intel G33 (GMA 3100) Graphics
  2. VBE 3.00 INTERNAL Intel Q963 (GMA 3000) Graphics
  3. VBE 3.00 INTERNAL Intel 915G Graphics
  4. VBE 3.00 INTERNAL Intel 910G Graphics
  5. VBE 3.00 INTERNAL Intel 865G Graphics
  6. VBE 3.00 INTERNAL Intel 845G Graphics
  7. VBE 3.00 INTERNAL Intel 815G Graphics
  8. VBE 3.00 INTERNAL Intel 810G Graphics
  9. VBE 2.00 AGP 8Mb ATI Rage 3D Pro AGP 2x (BGA Package)
  10. VBE 2.00 AGP 8Mb ATI Rage P/M Mobility AGP 2x
  11. VBE 2.00 AGP 32Mb ATI Rage128 PF/Pro AGP 4x (TMDS)
  12. VBE 2.00 AGP 64Mb ATI Radeon 9000 Series (RV250)
  13. VBE 2.00 INTERNAL ATI Radeon Xpress 200M Series
  14. VBE 3.00 16Mb? ATI Radeon X1650 Series (RV530 LE)
  15. VBE 3.00 16Mb? ATI Radeon X1950 GT [RV570]
  16. VBE 3.00 AGP 16Mb 3Dfx Interactive Voodoo3 2000
  17. VBE 3.00 PCI 4Mb nVidia RIVA 128 2D/3D Gui Accelerator
  18. VBE 3.00 AGP 4Mb nVidia RIVA 128 2D/3D Gui Accelerator
  19. VBE 3.00 AGP 16Mb nVidia RIVA TNT GUI+3D Accelerator [NV4]
  20. VBE 3.00 AGP 16Mb nVidia RIVA TNT2 Model 64 [NVM64]
  21. VBE 3.00 AGP 32Mb nVidia GeForce2 MX/MX400 [NV11]
  22. VBE 3.00 AGP 64Mb nVidia GeForce2 GTS/PRO [NV15]
  23. VBE 3.00 AGP 64Mb nVidia Geforce3 Ti 200 [NV20]
  24. VBE 3.00 AGP 128Mb nVidia GeForce FX 5200 [NV34.3]
  25. VBE 3.00 INTERNAL nVidia GeForce 6100 nForce 430
  26. VBE 3.00 nVidia GeForce 7600GS
  27. VBE 2.00 PCI 4Mb Matrox MGA-2164W Millenium II PCI
  28. VBE 2.00 AGP 4Mb Matrox MGA-G100 AGP
  29. VBE 1.32 INTERNAL 1Mb TSENG LABS Inc ET4000
  30. VBE 2.00 PCI 4Mb TSENG LABS Inc ET6000
  31. VBE 2.00 VLB 2Mb S3 Inc Vision964
  32. VBE 2.00 PCI 2Mb S3 Inc 86C375 ViRGE/DX
  33. VBE 2.00 AGP 4Mb S3 Inc 86C368 Trio3D/2X
  34. VBE 1.02 INTERNAL 1Mb Cirrus Logic CL-GD5428
  35. VBE 1.02 INTERNAL 512Kb Cirrus Logic CL-GD5424
  36. VBE 1.02 VLB 1Mb Cirrus Logic CL-GD5428
  37. VBE 1.02 PCI 1Mb Cirrus Logic CL-GD5446 PCI
  38. VBE 2.00 INTERNAL Trident CyberBlade i7
  39. VBE 1.02 ISA 1Mb Trident 8900
  40. VBE 1.02 ISA 512Kb Trident 9000i [TrueColor DAC]
  41. VBE 1.02 ISA 256Kb Realtek 3106 [RTG3106]
  42. без VBE ISA 256KB Cirrus Logic CL-GD5401 - Acumos VGA (AVGA1)
  43. VBE 2.00 PCI 8Mb? VirtualBox VBE Adapter (Innotek VirtualBox)
  44. VBE 2.00 PCI 16Mb VMware SVGA II (VMware)
  45. VBE 2.00 PCI 4Mb Cirrus Logic CL-GD5446 PCI (QEMU)
  46. VBE 2.00 PCI 4Mb Plex86 VBE Adapter (QEMU/Bochs)
  47. без VBE ISA 256KB Elpin VGABIOS (Bochs)

Решение проблем с драйвером


Когда у Вас возникают проблемы с VBEMP, обычно существуют два базовых сценария:

  1. Компьютер стартует, но драйвер работает неправильно.
  2. Компьютер не стартует, т.е. "падает", показывает BSOD или "зависает".

Перед отладкой попробуйте эти операции, указанные ниже:

  1. Физически удалите чипы памяти или используйте опцию /MAXMEM в boot.ini для этого по образцу (например если у Вас 1024 Mb RAM): 512 -> 256 -> 128 -> 64 -> 32 -> 16 -> 8.
  2. Обновите BIOS материнской платы до последней версии.
  3. Очистите настройки CMOS до безопасных или по умолчанию.
  4. Уменьшите AGP Aperture в BIOS т.к. она не используется VBEMP.
  5. Временно удалите внешние контроллеры как то: usb, sound, hdd, lan и пр.
  6. Попробуйте использовать видеокарту с другой шиной: AGP, PCIe, PCI, набортную.

Для начала процесса отладки Вы ДОЛЖНЫ запросить у меня LOGGED-версию (для метода 1) или DEBUG-версию (для методов 2,3) драйвера по e-mail. Для методов 2,3 Вы ДОЛЖНЫ ПРОЧЕСТЬ эту статью Отладка в WinDbg пособие для тестировщика чтобы понять какая методика отладки наиболее подходит в Вашем случае. Вот возможные шаги, кратко:

После того как Вы получили логи от драйвера Вы можете предоставить мне дополнительную информацию по системе и видеокарте. Это необязательный шаг!!! Без логов от драйвера эта информация бессмысленна для меня!!!

  1. Собрать информацию о VESA BIOS и о системе :

  2. Для владельцев ISA/VLB карт: Выпущены новые утилиты - lfb_det.exe/lfb.exe, которые умеют автоматически определять адрес буфера кадра в системном адресном пространстве. Они распространяются только по запросу по e-mail. Прочтите пп. 1 ("Собрать информацию о системе"), сделайте логи и я пришлю Вам эти утилиты.


VBE ЧАВО: Список отклонений от стандарта VESA Видео BIOS Расширений

Карты (чипы) affected

Описание

Intel 845G, 855G, 865G, 915G и далее

PRB: Не удается установить "родные" разрешения вроде 1024x600, 800x480, 1280x800, в основном на ноутбуках с встроенной графикой Intel.
DETAILS: В таблицах режимов Video BIOS эти режимы отсутствуют или фильтруются. Когда Вы пытаетесь через BIOS установить эти разрешения, BIOS немедленно возвращает ошибку.
FIX: Обновите Ваш BIOS последней версией или самостоятельно сделайте патч. В DOS/Windows9x возможно использование программного Intel TSR VBIOS VESA-драйвера.

Intel 845G, 855G, 865G, 915G и далее

PRB: Не удается установить разрешение выше 800x600x8бит и 640x480x16бит.
DETAILS: В Video BIOS размер буфера кадра жестко ограничен 832 Кбайт, а этого недостаточно даже для 1024x768x16бит = 1024*768*2 = 1572864, 1572864 > 832K.
FIX: Обновите Ваш BIOS последней версией или самостоятельно сделайте патч. В DOS/Windows9x возможно использование программного Intel TSR VBIOS VESA-драйвера.

Intel 810E, 815E series

PRB: Не удается использовать линейный буфер кадра, хотя карта идентифицирует себя как VBE 3.0 совместимая.
DETAILS: В Video BIOS поддержка линейного буфера кадра отсутствует, а сама карта поддерживает линейный буфер кадра.
FIX: Не известно.

ATI Radeon Xkkkk series (начиная с X700)

PRB: Не удается использовать пользовательские частоты обновления экрана, хотя карта идентифицирует себя как VBE 3.0 совместимая.
DETAILS: В Video BIOS код переключения пользовательских частот обновления экрана отсутствует. Когда Вы пытаетесь через BIOS установить эти разрешения, BIOS немедленно возвращает ошибку VBE 0x34F.
FIX: Не известно.

nVidia GeForce 5xxx/6xxx/7xxx (и более новые)

PRB: Не удается использовать пользовательские частоты обновления экрана, хотя карта идентифицирует себя как VBE 3.0 совместимая.
DETAILS: В Video BIOS код переключения пользовательских частот обновления экрана изменен. Когда Вы пытаетесь через BIOS установить эти разрешения, BIOS всегда использует разрешение по умолчанию (60 Hz).
FIX: Не известно.

nVidia GeForce 5xxx/6xxx/7xxx (и более новые)

PRB: Не удается установить разрешение выше 800x600.
DETAILS: В таблицах режимов Video BIOS режимы 1024x768 и выше отсутствуют или фильтруются. Когда Вы пытаетесь через BIOS установить эти разрешения, BIOS немедленно возвращает ошибку.
FIX: Обновите Ваш BIOS последней версией или самостоятельно сделайте патч.

Карты VESA 1.x

PRB: Когда переключаемся в полноэкранный текстовой режим, компьютер "зависает".
DETAILS: В коде Video BIOS подпрограммы установки режимов "коряво" написаны и некорректно отрабатываются в 32 бит защищённом режиме.
FIX: Не известно. В DOS/Windows9x возможно использование программного VESA-драйвера.

Разнообразные VESA карты

PRB: Прт вызове VBE функций, старшее слово EAX и возможно других регистров (т.е. 0x????0000) може содержать "мусор".
DETAILS: В коде Video BIOS VESA подпрограммы "коряво" написаны и некорректно отрабатывают использование 32 бит регистров.
FIX: Фильтровать старшее слово в EAX.




История проекта



Лог разработчика


[!] Важно
[+] Новое
[-] Исправлена ошибка
[*] Изменения
[?] Комментарии

Лог разработчика представлен только в английском варианте. Сорри. :)

Лицензия


Проект VBEMP x86 драйвер *
Лицензия на использование и распространение

* далее по тексту - VBEMP.

  1. Все авторские права на VBEMP принадлежат только авторам - Bearwindows и Корпорации АнаПа.
  2. Любой пользователь имеет право использовать VBEMP в некоммерческих целях бесплатно.
  3. VBEMP распространяется свободно, при условии того, что настоящий дистрибутив не изменен. Ни одно частное лицо или организация не может брать плату за распространение VBEMP без письменного разрешения автора. Распространение любой версии VBEMP датированной до 19/10/2007 или создание "зеркал" содержимого сайта VBEMP категорически запрещено.
  4. VBEMP ПОСТАВЛЯЕТСЯ ПО ПРИНЦИПУ "AS IS". НИКАКИХ ГАРАНТИЙ НЕ ПРИЛАГАЕТСЯ И НЕ ПРЕДУСМАТРИВАЕТСЯ. ВЫ ИСПОЛЬЗУЕТЕ ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ НА СВОЙ РИСК. АВТОР НЕ БУДЕТ ОТВЕЧАТЬ НИ ЗА КАКИЕ ПОТЕРИ ИЛИ ИСКАЖЕНИЯ ДАННЫХ, ЛЮБУЮ УПУЩЕННУЮ ВЫГОДУ В ПРОЦЕССЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕПРАВИЛЬНОГО ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. УСЛОВИЯ ЛИЦЕНЗИИ, СОДЕРЖАЩИЕСЯ В ЭТОМ ДОКУМЕНТЕ МОГУТ БЫТЬ ИЗМЕНЕНЫ БЕЗ ПРЕДВАРИТЕЛЬНОГО УВЕДОМЛЕНИЯ, В БУДУЮЩИХ ИЗДАНИЯХ.
  5. Вы не можете использовать, копировать, эмулировать, создавать новые версии, сдавать в наем или аренду, продавать, изменять, декомпилировать, дизассемблировать, изучать код программы другими способами, передавать зарегистрированную программу или любые из ее составляющих, иначе, чем определено настоящим лицензионным соглашением. Любое такое нелегальное использование означает автоматическое и немедленное прекращение действия настоящего соглашения и может преследоваться по закону.
  6. Все права, не предоставленные здесь явно, сохраняются за Bearwindows и Корпорацией АнаПа.
  7. Установка и использование VBEMP означает, что Вы понимаете положения настоящего лицензионного соглашения и согласны с ними.
  8. Если почему-либо вы не согласны с этим лицензионным соглашением, вам необходимо удалить файлы дистрибутива VBEMP с ваших устройств хранения информации и прекратить использование VBEMP.

Благодарим за использование VBEMP.

Bearwindows и Корпорация АнаПа


Direct3D, DirectDraw, DirectShow, DirectSound, DirectX, Microsoft, MS-DOS, Visual C++, Win32, Win32s, Windows, Windows XP, Windows 2003 Server и Windows NT это либо зарегистрированные торговые марки или торговые марки Корпорации Майкрософт в США и/или других странах/регионах.

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

© Корпорация АнаПа 1988 – 2009. Все права защищены.

E-Mail: bearwindows_at_operamail_dot_com | Последнее обновление: 12 февраля 2009

1