Ru-Board.club
← Вернуться в раздел «Драйверы и прошивки BIOS»

» Универсальный видеодрайвер для Windows (9x, NT, 2K, XP, 2K3)

Автор: bearwindows
Дата сообщения: 12.07.2007 15:12
euheny

Цитата:
ладно , будем искать простые решения.

vbemp вообще-то не занимается фильтрацией режимов.
драйвер не умеет обрабатывать id монитора (только получает его от монитора).
от печки:
1) vbemp дает все возможные варианты сочетаний частот и разрешений, допустимых для данной карты и передает в Windows id монитора.
2) Windows получая id монитора САМ выкидывает все "лишние" режимы.
(т.е. те режимы которые монитор "не тянет". Иногда при этом выкидывает и нужные режимы).
Ручная фильтрация должна быть перед шагом 1).
как я считаю параметры фильтрации должны быть в реестре и при изменении настроек должна быть необходима перезагрузка для вступления их в силу.
по какому принципу она должна работать?
Автор: euheny
Дата сообщения: 13.07.2007 04:15

Цитата:
vbemp вообще-то не занимается фильтрацией режимов.

а кому нужна она - самому Windows чтол-ли ?
Цитата:
драйвер не умеет обрабатывать id монитора
вот эта возможность была бы крайне полезна.
Цитата:
передает в Windows id монитора.
ну ведь это утверждение не верно для legacy-версии.

поэтому что мне надо от legacy_vbemp в минимуме - это чтобы он куда-нибудь сбросил ID монитора.Желательно в реестр и в удобочитаем виде (как в device manager-е)

Цитата:
vbemp вообще-то не занимается фильтрацией режимов.

правда если бы это работало , то команда
vmctl --o (в MobileOS) привела бы к желаемому результату (проверено)





Автор: bearwindows
Дата сообщения: 13.07.2007 06:45

Цитата:
ну ведь это утверждение не верно для legacy-версии.

правильно. в legacy-версии не работает пункт 2) (см. выше).
да... не забывайте что есть еще и VBE20 версия legacy vbemp.
она не страдает проблемой нехватки PNP в силу того, что refresh менять не умеет, т.е. всегда по герцам ставит заводские параметры (default refresh).
а если карта не поддерживает VBE30 или поддерживает ее криво (а таких много) то VBE30 версия вообще не нужна.
и для владельцев LCD-моников поддержка VBE30 не нужна.
Автор: euheny
Дата сообщения: 13.07.2007 14:10
Плоские моники имеют два недостатка существенных лично для меня - портят цвета и стоят дороже.
Если этот моник где-нибудь завалялся - тогда да , а так ... Ждёмс нашествие OLED-технологии


Цитата:
написать процедуру полноценного декодирования EDID.

Это было было-бы желательно , а так пусть пока сбрасывает то , что есть ( в reg_binary ) - думаю разберусь.

Цитата:
VBEMP c фильтрацией режимов

видимо речь о pnp-версиии - опять мне вкусного ничего не достанется

Автор: bearwindows
Дата сообщения: 13.07.2007 15:07
euheny

Цитата:
Это было было-бы желательно , а так пусть пока сбрасывает то , что есть ( в reg_binary ) - думаю разберусь.

для этого есть и другие программы. :) вроде edidw2k.exe ( ftp://ftp.microsoft.com/Services/whql/Tools/NSTL/000316/HCT/Device/Monitor/i386/ ).
Автор: euheny
Дата сообщения: 14.07.2007 03:34

Цитата:
НОВАЯ ВЕРСИЯ с фильтрацией

Надо подумать как её применить

Цитата:
для этого есть и другие программы.

вот только чем она мне может помочь - а так прикольная (с legacy-версией всёравно не работает).

и всё-таки давай уточним - куда именно и в каком виде передаётся этот EDID.Может legacy-версия каким-нибудь левым путём запихнёт этот edid винде - а та уже его и декодирует.

тут ещё такой вопрос
можно-ли сделать так , что бы при определёнои ключе pnp-версия сообщала бы PNP-менеджеру что я тут не причём и загружатся не буду.
Автор: bearwindows
Дата сообщения: 14.07.2007 06:43

Цитата:
и всё-таки давай уточним

В PNP-версии есть функция, отдающая EDID в Windows ( HwGetVideoChildDescriptor() ).
Windows сама ее запускает из драйвера один раз в момент его первоначального старта.
А если PNP-драйвер запустить принудительно ( как legacy-драйвер ) - Windows откажется его загружать.
Поэтому данная функция ( HwGetVideoChildDescriptor() ) отстутствует в legacy-версии (и ВСЕГДА присутствует в PNP-версии VBEMP).
( собственно этим PNP- и legacy-версии VBEMP отличаются друг от друга. еще в legacy-версии не работает PowerManagement, т.е. suspend/resume/sleep. )

Цитата:
видимо речь о pnp-версиии - опять мне вкусного ничего не достанется

Фильтрация будет доступна для всех версий VBEMP.

Цитата:
можно-ли сделать так

Можно. Только зачем?
***********************
Если интересует как выглядит EDID-блок, то он находится (в "нормальной" Windows) в разделе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\<кодмонитора>\<бу-бу-бу>\Device Parameters
Ключ EDID (REG_BINARY). Размер - 256 байт.
***********************
A почему в MobileOS не работает PNP?
Автор: euheny
Дата сообщения: 16.07.2007 03:56

Цитата:
A почему в MobileOS не работает PNP?

всегда работает !

Цитата:
Windows сама ее запускает из драйвера один раз

получается , что если поменять монитор и пересканировать железо - то монитор останется тот же - противоречит механизму рnp.

не буду пока продолжать эту тему , поскольку

Цитата:
Можно.

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


Цитата:
2. АВТОМАТИЧЕСКАЯ фильтрация

а на каких правилах работает этот механизм ?

Автор: bearwindows
Дата сообщения: 16.07.2007 06:08
euheny

Цитата:
а на каких правилах работает этот механизм ?

берёт EDID монитора, обрабатывает его и выкидывает неподдерживаемые режимы ДО PNP-определения монитора средствами Windows.

Цитата:
противоречит механизму рnp

честно говоря, не думал об этом... а это надо? (чтобы монитор пере-определялся)
Автор: euheny
Дата сообщения: 16.07.2007 13:55

Цитата:
берёт EDID монитора, обрабатывает его и выкидывает БОЛЬШИНСТВО неподдерживаемых режимов ДО PNP-определения монитора.

ты меня радуешь
очень хорошо , что это стало возможным - осталось отладить.

тут по ходу ещё одна необходимость:
требуется собирать ключики управления не только в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VBEMP\Device0 , но и в
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VBEMP\Device0 с приоритетом последнего (для поддержки профилей).
Автор: euheny
Дата сообщения: 16.07.2007 17:33
запутался я что-то
почему-то винда не хочет ставить pnp-версию в автоматическом режиме - пишет что типа используется по-умолчанию драйвер , который достался от старой версии . Все режимы заблокированы. А vbenull работает.

вот мой [more=edid]Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\AOCA770\5&3198c283&0&11335577&01&00\Device Parameters]
"EDID"=hex:00,ff,ff,ff,ff,ff,ff,00,05,e3,70,a7,15,fc,c7,04,02,08,01,01,28,20,\
18,32,e8,46,c6,9f,57,48,99,25,10,47,4f,a4,42,00,31,59,45,59,61,59,01,01,01,\
01,01,01,01,01,01,01,10,0e,80,c0,20,e0,1d,10,38,38,13,00,36,f0,10,00,00,18,\
f9,15,20,f8,30,58,1f,20,20,40,13,00,36,f0,10,00,00,1e,30,2a,00,98,51,00,2a,\
40,30,70,13,00,36,f0,10,00,00,1e,c3,1e,00,20,41,00,20,30,10,60,13,00,36,f0,\
10,00,00,1e,00,f8,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00
[/more].
было бы неплохо чтоб vbemp переключал его сразу в 1024х768х85х32
Автор: euheny
Дата сообщения: 16.07.2007 22:00
результаты теста новой pre-pre-pre


Код: vmctl --o
Seting 1024x768 32bit 170Hz
Автор: bearwindows
Дата сообщения: 16.07.2007 23:31
euheny

Цитата:
было бы неплохо чтоб vbemp переключал его сразу в 1024х768х85х32

так есть же ручная фильтрация...

Цитата:
почему-то винда не хочет ставить pnp-версию

может где-то остались ссылки на "старый" драйвер... хотя вопроса я всё равно не понял...

Цитата:
вот мой edid .

мне бы лучше на ЛОГ посмотреть... там все детали будет видно...

Автор: euheny
Дата сообщения: 17.07.2007 03:27

Цитата:
так есть же ручная фильтрация...

не тот случай , поскольку другим моникам убудет

Цитата:
может где-то остались ссылки на "старый" драйвер...

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

а лог здесь
Автор: bearwindows
Дата сообщения: 17.07.2007 06:37
в логе все штатно. но в edid монитора нет той структуры, к-рая обрабатывается драйвером (начинается с 00,00,00,fd) а если воспользоваться т.н. VESA-списком (сделан утилитой infovbe - http://www.navozhdeniye.narod.ru/infovbe.zip)

Код:
dpms timings:
720x400 @ 70 Hz (VGA 640x400, IBM)    640x480 @ 60 Hz (VGA)
640x480 @ 72 Hz (VESA)    640x480 @ 75 Hz (VESA)
800x600 @ 56 Hz (VESA)
800x600 @ 72 Hz (VESA)    800x600 @ 75 Hz (VESA)
832x624 @ 75 Hz (MAC)        1024x768 @ 87i Hz (VESA)
1024x768 @ 70 Hz (VESA)
1024x768 @ 75 Hz (VESA)    1280x1024 @ 75 Hz (VESA)
reserved timings: 0x0080
STD: 640 x 480, 85 Hz    ...
Автор: euheny
Дата сообщения: 17.07.2007 16:51
лог

только сейчас заметил , что монитор не определился корректно
толку получается от pnp-версии почти никакого.
а edid я получил от оригинального драйвера

так всё-таки вопросик: VBEMP может создавать записи в реестре ?

я зацепился за edid только лиш потому что он должен быть у каждой модели свой.
т.е. я и хотел бы его использовать вместо inf-файла.

Автор: bearwindows
Дата сообщения: 17.07.2007 19:06
euhenio

Цитата:
монитор не определился корректно

а ключик VBE_DDC в реестре ставили в 1 ?
Автор: euheny
Дата сообщения: 18.07.2007 03:14

Цитата:
а ключик VBE_DDC в реестре ставили в 1 ?

пробовал - ничего не дало

по-поводу глюков , описанных выше (с pnp-версией)
делаем следующее:
1.ставим vbemp и перезагружаемся - убеждаемся , что всё работает.
2.удаляем из HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\PCI соответствующий ид видюхи
3.вместо него добавляем вот это :

Код: Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\sys\ControlSet001\Control\CriticalDeviceDatabase\pci#cc_0300]
"Service"="VBEMP"
"ClassGUID"="{4D36E968-E325-11CE-BFC1-08002BE10318}"
Автор: bearwindows
Дата сообщения: 18.07.2007 05:47

Цитата:
более удобное место ?

умеет только в "свой" раздел:

Код: Ветка : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vbemp\Device0
или HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vgasave\Device0 в legacy режиме
Ключ : VBE_EDID
Значение : (REG_BINARY)
Автор: euheny
Дата сообщения: 19.07.2007 00:14

Цитата:
умеет только в !"свой" раздел.

ну хоть какое-нибудь другое место - без <bla-bla-bla> , на худой конец в файл какой

а можно-ли "Stand By" для legacy ?


Цитата:
делаем следующее:

так пробовал это ?
Автор: bearwindows
Дата сообщения: 19.07.2007 06:52

Цитата:
так пробовал это ?

у меня и так все работает.

Цитата:
а можно-ли "Stand By" для legacy ?

PowerManagement пашет только для PNP-версий (только к PNP-драйверу Windows PNP-manger дает команды на standby/suspend/resume). Может Вам "упереться" и раскопать наконец почему нормальная PNP-версия не работает также корректно, как в WindowsXP/WinPE, а то бороться с внутренней организацией Windows как-то неохота (Драйвер ведь писался в строгом соответствии с документаций Microsoft). Тем более что PNP и PowerManagement давно и так замечательно отлажены. Помните что legacy-режим оставлен Microsoft ИСКЛЮЧИТЕЛЬНО для VGA.SYS и не-PNP карт ( вроде ISA/MCA/EISA/VLB ) которые вообще практически не встречаются в природе.

Кстати обычные драйвера видеокарт ( вроде Intel/ATI(AMD)/nVidia ) РАБОТАЮТ ПОД MobileOS ?
А корень проблем с PNP-версией ( как я думаю ) лежит в отсутствии каких-то нужных ключей в реестре или файлов в составе MobileOS.
Автор: euheny
Дата сообщения: 20.07.2007 00:49

Цитата:
у меня и так все работает.

да уж не сомневаюсь - но мне нужно чтобы работало именно так.
ведь универсальны драйвер (во всяком случае в моём понимании) - это тот который работает при смене железки(uniata).

Цитата:
Драйвер ведь писался в строгом соответствии с документаций Microsoft

вот как раз Vista и создаётся из этой идеологии (а ты думал откуда ?)

Цитата:
Кстати обычные драйвера видеокарт ( вроде Intel/ATI(AMD)/nVidia ) РАБОТАЮТ ПОД MobileOS ?

ну конечно же !

Цитата:
но мне нужна "на руки" сама MobileOS

она обычно собирается надеюсь достаточно хорошо описанными способами.

ещё лог - vbe3 не пашет.


Автор: bearwindows
Дата сообщения: 20.07.2007 06:37

Цитата:
vbe3 не пашет.


Код:
[9758:64:1920.0008] VESA/VBE BIOS Present (2.00, 32768 Kb)
[9758:64:1920.0009] OEM String: (0x20000100) ATI RADEON III
[9758:64:1920.0009] OEM VendorName: (0x2000010F) ATI Technologies Inc.
[9758:64:1920.0009] OEM ProductName: (0x20000125) R100
[9758:64:1920.0009] OEM OemProductRev: (0x2000012A) 01.00
[9758:64:1920.0009] Found 56 mode(s)
Автор: euheny
Дата сообщения: 21.07.2007 04:20

Цитата:
Эта карта VBE3 не умеет в принципе (см. первую строчку).

похоже VBE себя исжил...

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


Цитата:
А еще проблемы есть?

но ведь не возможно продолжать с морганием - скорее всего только это.


Цитата:
Автоматическая фильтрация (VBE_EDID=1) будет доведена до ума в ближайшие дни.

надеюсь на лучшее ... , но мне не даёт покоя pnp-версия.
Автор: bearwindows
Дата сообщения: 21.07.2007 15:39
euhenio

Цитата:
похоже VBE себя исжил...

На заметку напомню: нередко попадаются и НОВЫЕ карты с глюками.
1) Карты на базе GeForce 5xxx / 6xxx (7xxx 8xxx ?) имея на борту VBE30 BIOS не умеют частоты выше 60Hz.
Читал, что это сделано как раз из-за широкого распространения LCD-моников. Я, кстати, как и вы до сих пор LCD-шки совсем не уважаю. :|
2) Карты на базе Intel 8xx / 9xx имея на борту VBE30 BIOS определяют размер буфера кадра 832кб (при реальных 1mb...8mb) не позволяя поставить даже 800x600x16bit (800x600x2=960000 > 832kb).
На материнских платах от Intel я правда такого ещё не встречал. Но ведь не только Intel делает платы на Intel-чипсетах. :|
Автор: euheny
Дата сообщения: 22.07.2007 02:18

Цитата:
На заметку напомню: нередко попадаются и НОВЫЕ карты с глюками.

так я как раз о том же :

1.детектим карту
2.выбираем механизм управления
3....

1.механизм управления должен быть один и тот же для одного производителя
2.механизм управления получаем у производителя (надеюсь это не проблема)


Цитата:
Давно хотел спросить

сюда


Цитата:
вот очередная бета:

стало чуть лучше , а можеш с высокой вероятность определить тип моника ?


а что с продвинутой pnp-версией ?
Автор: bearwindows
Дата сообщения: 22.07.2007 06:56

Цитата:
а что с продвинутой pnp-версией ?

Попробуйте новую версию. дайте лог и укажите какие VBE_??? ключи в реестре использовались. в прошлый раз когда давали лог ключ VBE_DDC ЖЕЛЕЗНО не был установлен в 1 - это видно в логе:

Код:
Used command line:
DbgPrintLog.exe --run:user --nowait VBEMP.log
----- End of Log header -----
[00:00:00.0015] VBEMP VESA/VBE USWC VBE30 driver build 15jul2007 (NT51/NT52).
[9758:64:1920.0005] .DriverEntry() called
[9758:64:1920.0005] .VideoPortInitialize().BusType(0x0F) init...
[9758:64:1920.0005] .VideoPortInitialize().BusType(0x0F): OK (0x0000)
[9758:64:1920.0002] .VBEFindAdapter(Bustype: 0x05, BusNo: 0x01) called
[9758:64:1920.0003] Bus 01 Dev 00 Fun 00 03 - 10DE:0110 -> VGA Adapter
...
...
[9758:64:1920.0006] .VBEGetChildDescriptor() called, ChildIndex = 0x00000001, Size = 0x00000100
!!! если здесь пусто, значит VBE_DDC=0 или нет такого ключа в реестре.
[9758:64:1920.0006] .VBEGetChildDescriptor(): found a non-DDC monitor (0xFFFFFFFF)
[9758:64:1920.0007] .VBEGetChildDescriptor() called, ChildIndex = 0x00000002, Size = 0x00000100
Автор: euheny
Дата сообщения: 22.07.2007 20:38

Цитата:
то есть LCD или CRT ?

ну точнее плоский (корпус) или CRT


Цитата:
Тем более есть разные ситуации...

ну я вобщем предложил только

чем плоха идея "умного управления" картой - в обход int10
snap варезный и мёртвый , оригинальные уж больно тяжелы и не универсальны

я вообще не понимаю как до сих пор существует такая огромная ниша в этой области
хотя конечно виновата идеология $MS$


Цитата:
Попробуйте новую версию...

Я не о DDC , а о том что pnpmgr не может установить VBEMP. Предположу , что виноват desk.cpl , который соглашается работать только при ручной установке. Я конечно помню , что vbemp-pnp это ручная версия , однако этого недостатка лишён vbemp-legacy

а можно-ли из edid вытащить блок модели , а то весь он великоват ?

установив ручной фильтр (85Hz) c последней версией наконец-то получил работающий vmctl --o

Автор: bearwindows
Дата сообщения: 22.07.2007 23:03
1. РУЧНАЯ фильтрация управляется ключом VBE_FILTER (REG_BINARY), примеры:

Код:
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гц
Автор: euheny
Дата сообщения: 23.07.2007 00:54

Цитата:
вот очередная бета

а изменения какие ?

Цитата:
desk.cpl от Windows2000.

попробую конечно , но это не выход

Цитата:
Это чё - под каждую карту свою отдельную механизьму писать. А как же принцип универсальности?

так это и есть принцип универсальности драйвера - под каждую железку умеет самостоятельно подстраиваться (опять упомяну uniata)

Цитата:
да и карты одного семейства в прямом программировании могут сильно отличаться между собой. я в этом убедился на примере карт от intel.

а я убедился что с этим нет проблем для x и y , ну конечно я предполагаю что значения , кот вносятся в реестр из inf не влияют на это дело и карта не слишком древняя.

это направление (направление для развития - если оно предполагается ) в любом случае единствеено правильное.



Страницы: 12345

Предыдущая тема: Acer OrbiCam


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.