From: Ruiyu Ni Date: Tue, 13 Mar 2018 10:05:16 +0000 (+0800) Subject: OvmfPkg/Gop: clear the screen to black in SetMode() X-Git-Tag: edk2-stable201903~2150 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=81feb6d3059d6dfdfecd47f6b1f0c7d2b9f66e65;hp=9384e1c011a7d5ad1eb9c6d09c0014f42fab574d OvmfPkg/Gop: clear the screen to black in SetMode() Today's implementation forgot to clear the screen to black in SetMode(). It causes SCT SetMode() test fails. The patch adds the clear screen operation in SetMode() to fix the SCT failure. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ruiyu Ni Cc: Jordan Justen Reviewed-by: Laszlo Ersek Cc: Ard Biesheuvel --- diff --git a/OvmfPkg/QemuVideoDxe/Gop.c b/OvmfPkg/QemuVideoDxe/Gop.c index 512fd27acb..b479d24a87 100644 --- a/OvmfPkg/QemuVideoDxe/Gop.c +++ b/OvmfPkg/QemuVideoDxe/Gop.c @@ -1,7 +1,7 @@ /** @file Graphics Output Protocol functions for the QEMU video controller. - Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.
+ Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -196,9 +196,10 @@ Routine Description: --*/ { - QEMU_VIDEO_PRIVATE_DATA *Private; - QEMU_VIDEO_MODE_DATA *ModeData; - RETURN_STATUS Status; + QEMU_VIDEO_PRIVATE_DATA *Private; + QEMU_VIDEO_MODE_DATA *ModeData; + RETURN_STATUS Status; + EFI_GRAPHICS_OUTPUT_BLT_PIXEL Black; Private = QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS (This); @@ -271,6 +272,21 @@ Routine Description: } ASSERT (Status == RETURN_SUCCESS); + // + // Per UEFI Spec, need to clear the visible portions of the output display to black. + // + ZeroMem (&Black, sizeof (Black)); + Status = FrameBufferBlt ( + Private->FrameBufferBltConfigure, + &Black, + EfiBltVideoFill, + 0, 0, + 0, 0, + This->Mode->Info->HorizontalResolution, This->Mode->Info->VerticalResolution, + 0 + ); + ASSERT_RETURN_ERROR (Status); + return EFI_SUCCESS; }