mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
OvmfPkg: simply use the Bochs interface for vmsvga
BAR | std vga | vmsvga --------------------------------- 0 | Framebuffer | I/O space 1 | Reserved | Framebuffer 2 | MMIO | FIFO - We cannot recognize VMW SVGA as BOCHS because that would confuse the IsQxl setting in QemuVideoControllerDriverStart(), - We cannot recognize VMW SVGA as BOCHS_MMIO because BAR2 on VMW SVGA is not the BOCHS MMIO BAR (we can only use port IO). Therefore the list of reasons for which we should introduce QEMU_VIDEO_VMWARE_SVGA should name three reasons: (1) Get framebuffer from correct PCI BAR (2) Prevent using BAR2 for MMIO (3) Prevent mis-recognizing VMW SVGA as QXL Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: yuchenlin <yuchenlin@synology.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Regression-tested-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
parent
330e18555c
commit
d021868ccf
@ -69,6 +69,12 @@ QEMU_VIDEO_CARD gQemuVideoCardList[] = {
|
||||
0x1050,
|
||||
QEMU_VIDEO_BOCHS_MMIO,
|
||||
L"QEMU VirtIO VGA"
|
||||
},{
|
||||
PCI_CLASS_DISPLAY_VGA,
|
||||
0x15ad,
|
||||
0x0405,
|
||||
QEMU_VIDEO_VMWARE_SVGA,
|
||||
L"QEMU VMWare SVGA"
|
||||
},{
|
||||
0 /* end of list */
|
||||
}
|
||||
@ -316,6 +322,14 @@ QemuVideoControllerDriverStart (
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// VMWare SVGA is handled like Bochs (with port IO only).
|
||||
//
|
||||
if (Private->Variant == QEMU_VIDEO_VMWARE_SVGA) {
|
||||
Private->Variant = QEMU_VIDEO_BOCHS;
|
||||
Private->FrameBufferVramBarIndex = PCI_BAR_IDX1;
|
||||
}
|
||||
|
||||
//
|
||||
// Check if accessing the bochs interface works.
|
||||
//
|
||||
@ -764,7 +778,7 @@ ClearScreen (
|
||||
Private->PciIo->Mem.Write (
|
||||
Private->PciIo,
|
||||
EfiPciIoWidthFillUint32,
|
||||
0,
|
||||
Private->FrameBufferVramBarIndex,
|
||||
0,
|
||||
0x400000 >> 2,
|
||||
&Color
|
||||
|
@ -60,7 +60,7 @@ QemuVideoCompleteModeData (
|
||||
|
||||
Private->PciIo->GetBarAttributes (
|
||||
Private->PciIo,
|
||||
0,
|
||||
Private->FrameBufferVramBarIndex,
|
||||
NULL,
|
||||
(VOID**) &FrameBufDesc
|
||||
);
|
||||
|
@ -92,6 +92,7 @@ typedef enum {
|
||||
QEMU_VIDEO_CIRRUS_5446,
|
||||
QEMU_VIDEO_BOCHS,
|
||||
QEMU_VIDEO_BOCHS_MMIO,
|
||||
QEMU_VIDEO_VMWARE_SVGA,
|
||||
} QEMU_VIDEO_VARIANT;
|
||||
|
||||
typedef struct {
|
||||
@ -120,6 +121,7 @@ typedef struct {
|
||||
QEMU_VIDEO_VARIANT Variant;
|
||||
FRAME_BUFFER_CONFIGURE *FrameBufferBltConfigure;
|
||||
UINTN FrameBufferBltConfigureSize;
|
||||
UINT8 FrameBufferVramBarIndex;
|
||||
} QEMU_VIDEO_PRIVATE_DATA;
|
||||
|
||||
///
|
||||
|
Loading…
x
Reference in New Issue
Block a user