/** @file\r
QEMU Video Controller Driver\r
\r
- Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/DevicePathLib.h>\r
#include <Library/TimerLib.h>\r
+#include <Library/FrameBufferBltLib.h>\r
\r
#include <IndustryStandard/Pci.h>\r
+#include <IndustryStandard/Acpi.h>\r
\r
//\r
// QEMU Video PCI Configuration Header values\r
// QEMU Vide Graphical Mode Data\r
//\r
typedef struct {\r
- UINT32 ModeNumber;\r
+ UINT32 InternalModeIndex; // points into card-specific mode table\r
UINT32 HorizontalResolution;\r
UINT32 VerticalResolution;\r
UINT32 ColorDepth;\r
- UINT32 RefreshRate;\r
} QEMU_VIDEO_MODE_DATA;\r
\r
#define PIXEL_RED_SHIFT 0\r
QEMU_VIDEO_CIRRUS_5446,\r
QEMU_VIDEO_BOCHS,\r
QEMU_VIDEO_BOCHS_MMIO,\r
+ QEMU_VIDEO_VMWARE_SVGA,\r
} QEMU_VIDEO_VARIANT;\r
\r
typedef struct {\r
+ UINT8 SubClass;\r
UINT16 VendorId;\r
UINT16 DeviceId;\r
QEMU_VIDEO_VARIANT Variant;\r
UINT64 OriginalPciAttributes;\r
EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
EFI_DEVICE_PATH_PROTOCOL *GopDevicePath;\r
- UINTN CurrentMode;\r
+\r
+ //\r
+ // The next two fields match the client-visible\r
+ // EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE.MaxMode field.\r
+ //\r
UINTN MaxMode;\r
QEMU_VIDEO_MODE_DATA *ModeData;\r
- UINT8 *LineBuffer;\r
- BOOLEAN HardwareNeedsStarting;\r
+\r
QEMU_VIDEO_VARIANT Variant;\r
+ FRAME_BUFFER_CONFIGURE *FrameBufferBltConfigure;\r
+ UINTN FrameBufferBltConfigureSize;\r
+ UINT8 FrameBufferVramBarIndex;\r
} QEMU_VIDEO_PRIVATE_DATA;\r
\r
///\r
-/// Video Mode structure\r
+/// Card-specific Video Mode structures\r
///\r
typedef struct {\r
UINT32 Width;\r
UINT32 Height;\r
UINT32 ColorDepth;\r
- UINT32 RefreshRate;\r
UINT8 *CrtcSettings;\r
UINT16 *SeqSettings;\r
UINT8 MiscSetting;\r
extern EFI_DRIVER_BINDING_PROTOCOL gQemuVideoDriverBinding;\r
extern EFI_COMPONENT_NAME_PROTOCOL gQemuVideoComponentName;\r
extern EFI_COMPONENT_NAME2_PROTOCOL gQemuVideoComponentName2;\r
-extern EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL gQemuVideoDriverSupportedEfiVersion;\r
\r
//\r
// Io Registers defined by VGA\r
\r
EFI_STATUS\r
QemuVideoBochsModeSetup (\r
- QEMU_VIDEO_PRIVATE_DATA *Private\r
+ QEMU_VIDEO_PRIVATE_DATA *Private,\r
+ BOOLEAN IsQxl\r
);\r
\r
+VOID\r
+InstallVbeShim (\r
+ IN CONST CHAR16 *CardName,\r
+ IN EFI_PHYSICAL_ADDRESS FrameBufferBase\r
+ );\r
#endif\r