Hi,
The existing code matches the original bochs vbe code and matches what the spec says. I'm surprised win8 would require such an odd value.
I'm surprised too, but that bit really makes the difference.
When reporting the number of pages fitting into memory win8 is fixed at 1024x748, when reporting a single page only win8 offers the whole range of vesa resolutions supported by the vesa bios ...
I have no idea why that is the case though, maybe the root cause it something different and this patch just papers over it.
FYI, I ran some tests on qemu and my e350m1 (with an AMD vgabios). Interestingly, it doesn't look like AMD ever reports a "pages=0".
Retested, figured with seavgabios win8 modeswitching works just fine, even without the patch. /me is puzzled, I'm sure I've tried that before and it didn't work.
dprintf(1, "mode=%02x x=%d y=%d d=%d pages=%d\n", videomode
, mode_info->xres, mode_info->yres, mode_info->bits_per_pixel
, mode_info->pages);
While wading through the source I've noticed mode_info has not only "pages", but also "linear_pages" and "bank_pages" fields (new for vbe3). seavgabios doesn't set them. Should it?
cheers, Gerd