[ros-dev] Livecd video regression

Timo Kreuzer timo.kreuzer at web.de
Mon Oct 17 12:49:52 UTC 2011


Since one of my recent video driver loading changes, livecd video is vga 
mode. The reson is:

When installing bootcd, there will be only 1 video driver installed: 
based on 1st stage selection, either vbe or vga will be installed the 
other one is deactivated (start mode = manual). When installing a 3rd 
party driver, that one used to be installed and loaded prior to VBE and 
thus became Device/Video0, which win32k happily used as primary adapter.
This behaviour changed with ACPI hal and VBE is loaded first, resulting 
is non functional VBox driver.
I fixed this, by having win32k decide which driver to use, by looking if 
its a vga compatible driver and use that one only as fallback, if no 
other is present. additionally the VBE was marked as VgaCompatible.
Now livecd behaves differently and simply installs both VGA and VBE. and 
since both are now marked as VgaCompatible, win32k doesn't know which 
one to use and currently uses VGA.

Now how does this work in Windows? Windows has only one Adapter 
installed for VGA and VBE (vga.sys + 
vga.dll/vga256.dll/vga64k.dll/framebuf.dll) This service is always 
loaded and marked as "VgaCompatible". It is also used when a 3rd party 
driver is installed, when you switch to fullscreen console mode.
This adapter is only replaced by a 3rd party adapter if that one is also 
vga compatible.
This way its easy for win32k to decide which one to use: based on 
whether /BASEVIDEO is passed, either the vga compatible one or the other 
one can be selected.

Possible solutions:
1) Add another workaround to win32k, checking if 2 VGA adapters are 
installed and then using the first one, instead of the second one as 
currently (because 1st is VGA, simply the second is used), but thats not 
a real solution.
2) Fix whatever is neccessary to have VBE be replaced by a 3rd party 
driver that is installed. (Cameron said it was related to VBE not being 
PNP ready.) This way we can stop marking it as VgaCompatible.
3) Combine VGA and VBE miniport into one vga compatible driver, like 
it's in windows. Alex mentioned that eVb has more or less finished that. 
Question is: whats missing to have the code comitted?

Comments and feedback appreciated,

More information about the Ros-dev mailing list