mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-27 23:54:02 +02:00
OvmfPkg/QemuVideoDxe: factor out QemuVideoBochsAddMode
Add helper function to add a video mode to the list of modes. Move code. Minor debug logging tweaks, no other functional change. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Ard Biesheuvel <ardb@kernel.org>
This commit is contained in:
parent
336da55ca8
commit
55c05427b9
@ -245,16 +245,53 @@ STATIC QEMU_VIDEO_BOCHS_MODES QemuVideoBochsModes[] = {
|
|||||||
#define QEMU_VIDEO_BOCHS_MODE_COUNT \
|
#define QEMU_VIDEO_BOCHS_MODE_COUNT \
|
||||||
(ARRAY_SIZE (QemuVideoBochsModes))
|
(ARRAY_SIZE (QemuVideoBochsModes))
|
||||||
|
|
||||||
|
STATIC
|
||||||
|
VOID
|
||||||
|
QemuVideoBochsAddMode (
|
||||||
|
QEMU_VIDEO_PRIVATE_DATA *Private,
|
||||||
|
UINT32 AvailableFbSize,
|
||||||
|
UINT32 Width,
|
||||||
|
UINT32 Height
|
||||||
|
)
|
||||||
|
{
|
||||||
|
QEMU_VIDEO_MODE_DATA *ModeData = Private->ModeData + Private->MaxMode;
|
||||||
|
UINTN RequiredFbSize;
|
||||||
|
|
||||||
|
RequiredFbSize = (UINTN)Width * Height * 4;
|
||||||
|
if (RequiredFbSize > AvailableFbSize) {
|
||||||
|
DEBUG ((
|
||||||
|
DEBUG_INFO,
|
||||||
|
"Skipping Bochs Mode %dx%d, 32-bit (not enough vram)\n",
|
||||||
|
Width,
|
||||||
|
Height
|
||||||
|
));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ModeData->InternalModeIndex = (UINT32)Private->MaxMode;
|
||||||
|
ModeData->HorizontalResolution = Width;
|
||||||
|
ModeData->VerticalResolution = Height;
|
||||||
|
ModeData->ColorDepth = 32;
|
||||||
|
DEBUG ((
|
||||||
|
DEBUG_INFO,
|
||||||
|
"Adding Bochs Internal Mode %d: %dx%d, %d-bit\n",
|
||||||
|
ModeData->InternalModeIndex,
|
||||||
|
ModeData->HorizontalResolution,
|
||||||
|
ModeData->VerticalResolution,
|
||||||
|
ModeData->ColorDepth
|
||||||
|
));
|
||||||
|
|
||||||
|
Private->MaxMode++;
|
||||||
|
}
|
||||||
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
QemuVideoBochsModeSetup (
|
QemuVideoBochsModeSetup (
|
||||||
QEMU_VIDEO_PRIVATE_DATA *Private,
|
QEMU_VIDEO_PRIVATE_DATA *Private,
|
||||||
BOOLEAN IsQxl
|
BOOLEAN IsQxl
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UINT32 AvailableFbSize;
|
UINT32 AvailableFbSize;
|
||||||
UINT32 Index;
|
UINT32 Index;
|
||||||
QEMU_VIDEO_MODE_DATA *ModeData;
|
|
||||||
QEMU_VIDEO_BOCHS_MODES *VideoMode;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Fetch the available framebuffer size.
|
// Fetch the available framebuffer size.
|
||||||
@ -343,34 +380,14 @@ QemuVideoBochsModeSetup (
|
|||||||
return EFI_OUT_OF_RESOURCES;
|
return EFI_OUT_OF_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
ModeData = Private->ModeData;
|
|
||||||
VideoMode = &QemuVideoBochsModes[0];
|
|
||||||
for (Index = 0; Index < QEMU_VIDEO_BOCHS_MODE_COUNT; Index++) {
|
for (Index = 0; Index < QEMU_VIDEO_BOCHS_MODE_COUNT; Index++) {
|
||||||
UINTN RequiredFbSize;
|
QemuVideoBochsAddMode (
|
||||||
|
Private,
|
||||||
RequiredFbSize = (UINTN)VideoMode->Width * VideoMode->Height * 4;
|
AvailableFbSize,
|
||||||
if (RequiredFbSize <= AvailableFbSize) {
|
QemuVideoBochsModes[Index].Width,
|
||||||
ModeData->InternalModeIndex = Index;
|
QemuVideoBochsModes[Index].Height
|
||||||
ModeData->HorizontalResolution = VideoMode->Width;
|
);
|
||||||
ModeData->VerticalResolution = VideoMode->Height;
|
|
||||||
ModeData->ColorDepth = 32;
|
|
||||||
DEBUG ((
|
|
||||||
DEBUG_INFO,
|
|
||||||
"Adding Mode %d as Bochs Internal Mode %d: %dx%d, %d-bit\n",
|
|
||||||
(INT32)(ModeData - Private->ModeData),
|
|
||||||
ModeData->InternalModeIndex,
|
|
||||||
ModeData->HorizontalResolution,
|
|
||||||
ModeData->VerticalResolution,
|
|
||||||
ModeData->ColorDepth
|
|
||||||
));
|
|
||||||
|
|
||||||
ModeData++;
|
|
||||||
}
|
|
||||||
|
|
||||||
VideoMode++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Private->MaxMode = ModeData - Private->ModeData;
|
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user