mirror of https://github.com/acidanthera/audk.git
OvmfPkg: QemuVideoDxe uses MdeModulePkg/FrameBufferLib
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Laszlo Ersek <lersek at redhat.com> Cc: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
47e4bf71e3
commit
5b2291f956
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
Graphics Output Protocol functions for the QEMU video controller.
|
Graphics Output Protocol functions for the QEMU video controller.
|
||||||
|
|
||||||
Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -14,8 +14,6 @@
|
||||||
**/
|
**/
|
||||||
|
|
||||||
#include "Qemu.h"
|
#include "Qemu.h"
|
||||||
#include <IndustryStandard/Acpi.h>
|
|
||||||
#include <Library/BltLib.h>
|
|
||||||
|
|
||||||
STATIC
|
STATIC
|
||||||
VOID
|
VOID
|
||||||
|
@ -159,7 +157,7 @@ Routine Description:
|
||||||
{
|
{
|
||||||
QEMU_VIDEO_PRIVATE_DATA *Private;
|
QEMU_VIDEO_PRIVATE_DATA *Private;
|
||||||
QEMU_VIDEO_MODE_DATA *ModeData;
|
QEMU_VIDEO_MODE_DATA *ModeData;
|
||||||
// UINTN Count;
|
RETURN_STATUS Status;
|
||||||
|
|
||||||
Private = QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS (This);
|
Private = QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS (This);
|
||||||
|
|
||||||
|
@ -201,10 +199,32 @@ Routine Description:
|
||||||
|
|
||||||
QemuVideoCompleteModeData (Private, This->Mode);
|
QemuVideoCompleteModeData (Private, This->Mode);
|
||||||
|
|
||||||
BltLibConfigure (
|
//
|
||||||
(VOID*)(UINTN) This->Mode->FrameBufferBase,
|
// Allocate when using first time.
|
||||||
This->Mode->Info
|
//
|
||||||
|
if (Private->FrameBufferBltConfigure == NULL) {
|
||||||
|
Status = FrameBufferBltConfigure (
|
||||||
|
(VOID*) (UINTN) This->Mode->FrameBufferBase,
|
||||||
|
This->Mode->Info,
|
||||||
|
Private->FrameBufferBltConfigure,
|
||||||
|
&Private->FrameBufferBltConfigureSize
|
||||||
);
|
);
|
||||||
|
ASSERT (Status == RETURN_BUFFER_TOO_SMALL);
|
||||||
|
Private->FrameBufferBltConfigure =
|
||||||
|
AllocatePool (Private->FrameBufferBltConfigureSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Create the configuration for FrameBufferBltLib
|
||||||
|
//
|
||||||
|
ASSERT (Private->FrameBufferBltConfigure != NULL);
|
||||||
|
Status = FrameBufferBltConfigure (
|
||||||
|
(VOID*) (UINTN) This->Mode->FrameBufferBase,
|
||||||
|
This->Mode->Info,
|
||||||
|
Private->FrameBufferBltConfigure,
|
||||||
|
&Private->FrameBufferBltConfigureSize
|
||||||
|
);
|
||||||
|
ASSERT (Status == RETURN_SUCCESS);
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -254,7 +274,9 @@ Returns:
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_TPL OriginalTPL;
|
EFI_TPL OriginalTPL;
|
||||||
|
QEMU_VIDEO_PRIVATE_DATA *Private;
|
||||||
|
|
||||||
|
Private = QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS (This);
|
||||||
//
|
//
|
||||||
// We have to raise to TPL Notify, so we make an atomic write the frame buffer.
|
// We have to raise to TPL Notify, so we make an atomic write the frame buffer.
|
||||||
// We would not want a timer based event (Cursor, ...) to come in while we are
|
// We would not want a timer based event (Cursor, ...) to come in while we are
|
||||||
|
@ -267,7 +289,8 @@ Returns:
|
||||||
case EfiBltBufferToVideo:
|
case EfiBltBufferToVideo:
|
||||||
case EfiBltVideoFill:
|
case EfiBltVideoFill:
|
||||||
case EfiBltVideoToVideo:
|
case EfiBltVideoToVideo:
|
||||||
Status = BltLibGopBlt (
|
Status = FrameBufferBlt (
|
||||||
|
Private->FrameBufferBltConfigure,
|
||||||
BltBuffer,
|
BltBuffer,
|
||||||
BltOperation,
|
BltOperation,
|
||||||
SourceX,
|
SourceX,
|
||||||
|
@ -327,6 +350,8 @@ QemuVideoGraphicsOutputConstructor (
|
||||||
Private->GraphicsOutput.Mode->MaxMode = (UINT32) Private->MaxMode;
|
Private->GraphicsOutput.Mode->MaxMode = (UINT32) Private->MaxMode;
|
||||||
Private->GraphicsOutput.Mode->Mode = GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER;
|
Private->GraphicsOutput.Mode->Mode = GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER;
|
||||||
Private->LineBuffer = NULL;
|
Private->LineBuffer = NULL;
|
||||||
|
Private->FrameBufferBltConfigure = NULL;
|
||||||
|
Private->FrameBufferBltConfigureSize = 0;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Initialize the hardware
|
// Initialize the hardware
|
||||||
|
@ -374,6 +399,10 @@ Returns:
|
||||||
FreePool (Private->LineBuffer);
|
FreePool (Private->LineBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Private->FrameBufferBltConfigure != NULL) {
|
||||||
|
FreePool (Private->FrameBufferBltConfigure);
|
||||||
|
}
|
||||||
|
|
||||||
if (Private->GraphicsOutput.Mode != NULL) {
|
if (Private->GraphicsOutput.Mode != NULL) {
|
||||||
if (Private->GraphicsOutput.Mode->Info != NULL) {
|
if (Private->GraphicsOutput.Mode->Info != NULL) {
|
||||||
gBS->FreePool (Private->GraphicsOutput.Mode->Info);
|
gBS->FreePool (Private->GraphicsOutput.Mode->Info);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
QEMU Video Controller Driver
|
QEMU Video Controller Driver
|
||||||
|
|
||||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -35,8 +35,10 @@
|
||||||
#include <Library/BaseMemoryLib.h>
|
#include <Library/BaseMemoryLib.h>
|
||||||
#include <Library/DevicePathLib.h>
|
#include <Library/DevicePathLib.h>
|
||||||
#include <Library/TimerLib.h>
|
#include <Library/TimerLib.h>
|
||||||
|
#include <Library/FrameBufferBltLib.h>
|
||||||
|
|
||||||
#include <IndustryStandard/Pci.h>
|
#include <IndustryStandard/Pci.h>
|
||||||
|
#include <IndustryStandard/Acpi.h>
|
||||||
|
|
||||||
//
|
//
|
||||||
// QEMU Video PCI Configuration Header values
|
// QEMU Video PCI Configuration Header values
|
||||||
|
@ -119,6 +121,8 @@ typedef struct {
|
||||||
|
|
||||||
UINT8 *LineBuffer;
|
UINT8 *LineBuffer;
|
||||||
QEMU_VIDEO_VARIANT Variant;
|
QEMU_VIDEO_VARIANT Variant;
|
||||||
|
FRAME_BUFFER_CONFIGURE *FrameBufferBltConfigure;
|
||||||
|
UINTN FrameBufferBltConfigureSize;
|
||||||
} QEMU_VIDEO_PRIVATE_DATA;
|
} QEMU_VIDEO_PRIVATE_DATA;
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# This driver is a sample implementation of the Graphics Output Protocol for
|
# This driver is a sample implementation of the Graphics Output Protocol for
|
||||||
# the QEMU (Cirrus Logic 5446) video controller.
|
# the QEMU (Cirrus Logic 5446) video controller.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -44,12 +44,13 @@
|
||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
|
MdeModulePkg/MdeModulePkg.dec
|
||||||
OptionRomPkg/OptionRomPkg.dec
|
OptionRomPkg/OptionRomPkg.dec
|
||||||
OvmfPkg/OvmfPkg.dec
|
OvmfPkg/OvmfPkg.dec
|
||||||
|
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
BaseMemoryLib
|
BaseMemoryLib
|
||||||
BltLib
|
FrameBufferBltLib
|
||||||
DebugLib
|
DebugLib
|
||||||
DevicePathLib
|
DevicePathLib
|
||||||
MemoryAllocationLib
|
MemoryAllocationLib
|
||||||
|
|
Loading…
Reference in New Issue