Hi,
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,
Timo