summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--OvmfPkg/QemuVideoDxe/Gop.c4
-rw-r--r--OvmfPkg/QemuVideoDxe/Initialize.c14
-rw-r--r--OvmfPkg/QemuVideoDxe/Qemu.h11
3 files changed, 19 insertions, 10 deletions
diff --git a/OvmfPkg/QemuVideoDxe/Gop.c b/OvmfPkg/QemuVideoDxe/Gop.c
index 912947c2ff..2ff4bcfeba 100644
--- a/OvmfPkg/QemuVideoDxe/Gop.c
+++ b/OvmfPkg/QemuVideoDxe/Gop.c
@@ -180,11 +180,11 @@ Routine Description:
switch (Private->Variant) {
case QEMU_VIDEO_CIRRUS_5430:
case QEMU_VIDEO_CIRRUS_5446:
- InitializeCirrusGraphicsMode (Private, &QemuVideoCirrusModes[ModeData->ModeNumber]);
+ InitializeCirrusGraphicsMode (Private, &QemuVideoCirrusModes[ModeData->InternalModeIndex]);
break;
case QEMU_VIDEO_BOCHS_MMIO:
case QEMU_VIDEO_BOCHS:
- InitializeBochsGraphicsMode (Private, &QemuVideoBochsModes[ModeData->ModeNumber]);
+ InitializeBochsGraphicsMode (Private, &QemuVideoBochsModes[ModeData->InternalModeIndex]);
break;
default:
ASSERT (FALSE);
diff --git a/OvmfPkg/QemuVideoDxe/Initialize.c b/OvmfPkg/QemuVideoDxe/Initialize.c
index 37744786cb..af3b6af47c 100644
--- a/OvmfPkg/QemuVideoDxe/Initialize.c
+++ b/OvmfPkg/QemuVideoDxe/Initialize.c
@@ -182,14 +182,15 @@ QemuVideoCirrusModeSetup (
ModeData = Private->ModeData;
VideoMode = &QemuVideoCirrusModes[0];
for (Index = 0; Index < QEMU_VIDEO_CIRRUS_MODE_COUNT; Index ++) {
- ModeData->ModeNumber = Index;
+ ModeData->InternalModeIndex = Index;
ModeData->HorizontalResolution = VideoMode->Width;
ModeData->VerticalResolution = VideoMode->Height;
ModeData->ColorDepth = VideoMode->ColorDepth;
ModeData->RefreshRate = VideoMode->RefreshRate;
DEBUG ((EFI_D_INFO,
- "Adding Cirrus Video Mode %d: %dx%d, %d-bit, %d Hz\n",
- ModeData->ModeNumber,
+ "Adding Mode %d as Cirrus Internal Mode %d: %dx%d, %d-bit, %d Hz\n",
+ (INT32) (ModeData - Private->ModeData),
+ ModeData->InternalModeIndex,
ModeData->HorizontalResolution,
ModeData->VerticalResolution,
ModeData->ColorDepth,
@@ -237,14 +238,15 @@ QemuVideoBochsModeSetup (
ModeData = Private->ModeData;
VideoMode = &QemuVideoBochsModes[0];
for (Index = 0; Index < QEMU_VIDEO_BOCHS_MODE_COUNT; Index ++) {
- ModeData->ModeNumber = Index;
+ ModeData->InternalModeIndex = Index;
ModeData->HorizontalResolution = VideoMode->Width;
ModeData->VerticalResolution = VideoMode->Height;
ModeData->ColorDepth = VideoMode->ColorDepth;
ModeData->RefreshRate = 60;
DEBUG ((EFI_D_INFO,
- "Adding Bochs Video Mode %d: %dx%d, %d-bit, %d Hz\n",
- ModeData->ModeNumber,
+ "Adding Mode %d as Bochs Internal Mode %d: %dx%d, %d-bit, %d Hz\n",
+ (INT32) (ModeData - Private->ModeData),
+ ModeData->InternalModeIndex,
ModeData->HorizontalResolution,
ModeData->VerticalResolution,
ModeData->ColorDepth,
diff --git a/OvmfPkg/QemuVideoDxe/Qemu.h b/OvmfPkg/QemuVideoDxe/Qemu.h
index 78e182e6bf..098ee774e0 100644
--- a/OvmfPkg/QemuVideoDxe/Qemu.h
+++ b/OvmfPkg/QemuVideoDxe/Qemu.h
@@ -50,7 +50,7 @@
// QEMU Vide Graphical Mode Data
//
typedef struct {
- UINT32 ModeNumber;
+ UINT32 InternalModeIndex; // points into card-specific mode table
UINT32 HorizontalResolution;
UINT32 VerticalResolution;
UINT32 ColorDepth;
@@ -107,15 +107,22 @@ typedef struct {
UINT64 OriginalPciAttributes;
EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
EFI_DEVICE_PATH_PROTOCOL *GopDevicePath;
+
+ //
+ // The next three fields match the client-visible
+ // EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE.Mode and
+ // EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE.MaxMode fields.
+ //
UINTN CurrentMode;
UINTN MaxMode;
QEMU_VIDEO_MODE_DATA *ModeData;
+
UINT8 *LineBuffer;
QEMU_VIDEO_VARIANT Variant;
} QEMU_VIDEO_PRIVATE_DATA;
///
-/// Video Mode structure
+/// Card-specific Video Mode structures
///
typedef struct {
UINT32 Width;