Native VBT support
Hi there, i've used CSMWrap to install Windows Server 2008 R2 (not actually - Windows Server 2012 build 7788, but its so close to it that i'll just 2008 R2). Everything worked great, except for the fact that i'm stuck at 800x600 resolution. Attempting to set a higher resolution will cause the display to display, well, nothing until the change is automatically reverted.
The PC is a Surface Pro 1st gen. GPU is HD 4000.
Attempting to install HD 4000 drivers will just result in a 0x0000050 (0xFFFF88044E8E010, 0x0000000000000000, 0xFFFF880032D3F32, 0x0000000000000005) bugcheck in the middle of boot. The drivers did work fine on GPT though, and this is not only the case for this build - i got the same bugcheck on Vista.
TL;DR, i'm trying to install Server 2008 R2 under MBR mode (i wish i could do GPT mode, but it does not boot that and gets stuck at "Booting from Hard Disk...") but can't change the resolution nor install the HD 4000 driver.
Essentially, i want to ask if it would somehow be possible to either get native 1920x1080, or even better, the HD 4000 drivers properly running under CSMWrap. At least if someone knows.
The build im using is the latest compiled one as of writing this, build #163.
See this https://liujunming.top/2021/06/18/Video-BIOS-Table-VBT/
It's likely that the Windows Intel GPU driver loads VBT from legacy VBIOS region when booting in legacy, which isn't going to work with SeaVGABIOS.
Maybe if the offset it loads from is known could modify SeaVGABIOS to add the VBT table there ? Could look through Linux i915 driver to see how they load the VBT.
https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/i915/display/intel_bios.c#L3055
Seems like just extracting the VBT and placing it in an unused section of the SeaVGABIOS image should work.
Hmmm, how could i do that? (if i can even honestly)
Looks like adding VBT support to SeaVGABIOS has already been attempted though the patches weren't accepted.
https://patchew.org/Seabios/[email protected]/[email protected]/
Wouldn't be surprised if it needs a few changes to work on newer systems though, as Intel seems to have changed how the OpRegion works according to that blog post describing VBT.
Yeah, but this is an HD 4000, just i have no idea how to do any of this stuff, just want a premade EFI or something.
What about to extract VGA Video BIOS from firmware and use it as external at \EFI\CSMWrap\vgabios.bin?
How can i do that?
Not sure about Surface Pro (for getting firmware update), but it helped me with ordinary PC. You need UEFITool and binary firmware update file. Open it in UEFITool and go Action -> Search -> Text tab. Uncheck "Unicode" (search for plain ASCII text) and input "IBM VGA Compatible BIOS" for text as magic pattern for Intel VGA BIOS (ATI has "761295520", may be AMD too). Scope should be set to "Header and body" or "Body". Click OK and in the lower pane you will see results as link(-s) for founded modules. Click on founded line and module with pattern will be selected for you. Right click on it and select "Extract body..." to save founded binary. Hexview saved file to check if it is exactly the Video BIOS binary. It must have 0x55 0xAA at the beginning and "IBM VGA Compatible BIOS" string nearly. If success rename saved file to "vgabios.bin" and use it with CSMWrap 1.30 by placing in "\EFI\CSMWrap\vgabios.bin".
As alternative you can try a Video BIOS from other PC with same CPU/chipset.
Tried, gets stuck on the "CALL16 f000:d2da" something screen, doesn't even want to load it
Update, FINALLY found a working vBIOS. Will share it in a moment
https://pixeldrain.com/u/bXAZXBmC
FYI running the LCD with wrong timings like this can damage it, wouldn't really recommend using it like this.
I tried different versions and it sort of works as intended now, its just the low brightness and no flickering. Good enough
Still would say this is a valid issue though, that can be fixed with a patch to SeaVGABIOS so it can provide VBT to Intel driver.
Maybe reopen and change title to something which better describes that.