mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
vgabios: Check if mode is currently supported as vesa specifications
Vesa specification require that mode information return if a given mode is supported or not so test if we can support it checking required memory and set correctly supported bit. Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com> Committed-by: Keir Fraser <keir@xen.org>
This commit is contained in:
1 parent
4da31be120
commit
e7ee11ad72
1 file changed
+12
@@ -928,10 +928,22 @@ Bit16u *AX;Bit16u CX; Bit16u ES;Bit16u DI;
|
||||
|
||||
if (cur_info != 0)
|
||||
{
|
||||
Bit16u max_bpp = dispi_get_max_bpp();
|
||||
Bit16u size_64k;
|
||||
Bit16u totalMemory;
|
||||
|
||||
outw(VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_VIDEO_MEMORY_64K);
|
||||
totalMemory = inw(VBE_DISPI_IOPORT_DATA);
|
||||
#ifdef DEBUG
|
||||
printf("VBE found mode %x\n",CX);
|
||||
#endif
|
||||
memcpyb(ss, &info, 0xc000, &(cur_info->info), sizeof(ModeInfoBlockCompact));
|
||||
size_64k = size64(info.XResolution, info.YResolution, info.BitsPerPixel);
|
||||
if ((info.XResolution > dispi_get_max_xres()) ||
|
||||
(info.BitsPerPixel > max_bpp) ||
|
||||
(size_64k > totalMemory))
|
||||
info.ModeAttributes &= ~VBE_MODE_ATTRIBUTE_SUPPORTED;
|
||||
|
||||
if (using_lfb) {
|
||||
info.NumberOfBanks = 1;
|
||||
}
|
||||
|
||||