From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=fail (domain: intel.com, ip: , mailfrom: zhichao.gao@intel.com) Received: from mga01.intel.com (mga01.intel.com []) by groups.io with SMTP; Thu, 11 Apr 2019 20:15:15 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Apr 2019 20:15:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,339,1549958400"; d="scan'208";a="315263356" Received: from gaozhic-mobl.ccr.corp.intel.com ([10.239.198.173]) by orsmga005.jf.intel.com with ESMTP; 11 Apr 2019 20:15:12 -0700 From: "Gao, Zhichao" To: devel@edk2.groups.io Cc: Aaron Antone , Jian J Wang , Hao Wu , Ray Ni , Star Zeng , Liming Gao , Sean Brogan , Michael Turner , Bret Barkelew Subject: [PATCH 2/2] MdeModulePkg/GraphicsConsoleDxe: Do not clean the screen Date: Fri, 12 Apr 2019 11:14:36 +0800 Message-Id: <20190412031436.19088-3-zhichao.gao@intel.com> X-Mailer: git-send-email 2.16.2.windows.1 In-Reply-To: <20190412031436.19088-1-zhichao.gao@intel.com> References: <20190412031436.19088-1-zhichao.gao@intel.com> From: Aaron Antone REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1412 For now, most platform support to display during PEIM. It means the logo can show at PEI phase. But the screen would be cleared at BDS connect console phase. That may make the screen flush and turn into black screen. So do not clear the screen while set the text mode for graphics console device. Also replace the debug code in GraphicsConsoleControllerDriverStart. The origin one would set a basic mode and then print the text info to graphic console device. Then the conspliter would set a best mode for graphics console device. If the best mode is different with the basic one, the screen would be cleared. So use the debug output instead. Cc: Jian J Wang Cc: Hao Wu Cc: Ray Ni Cc: Star Zeng Cc: Liming Gao Cc: Sean Brogan Cc: Michael Turner Cc: Bret Barkelew Signed-off-by: Zhichao Gao --- .../GraphicsConsoleDxe/GraphicsConsole.c | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c index 26ea19f300..0a35b59d64 100644 --- a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c +++ b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c @@ -1,7 +1,7 @@ /** @file This is the main routine for initializing the Graphics Console support routines. -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -567,16 +567,7 @@ GraphicsConsoleControllerDriverStart ( // Private->SimpleTextOutputMode.MaxMode = (INT32) MaxMode; - DEBUG_CODE_BEGIN (); - Status = GraphicsConsoleConOutSetMode (&Private->SimpleTextOutput, 0); - if (EFI_ERROR (Status)) { - goto Error; - } - Status = GraphicsConsoleConOutOutputString (&Private->SimpleTextOutput, (CHAR16 *)L"Graphics Console Started\n\r"); - if (EFI_ERROR (Status)) { - goto Error; - } - DEBUG_CODE_END (); + DEBUG ((DEBUG_INFO, "Graphics Console Started!\n\r")); // // Install protocol interfaces for the Graphics Console device. @@ -1366,18 +1357,26 @@ GraphicsConsoleConOutSetMode ( // // The current graphics mode is correct, so simply clear the entire display // - Status = GraphicsOutput->Blt ( - GraphicsOutput, - &mGraphicsEfiColors[0], - EfiBltVideoFill, - 0, - 0, - 0, - 0, - ModeData->GopWidth, - ModeData->GopHeight, - 0 - ); + // + // For the first time set the mode, do not clear the display. + // Some platform would show logo at PEIM and this would clear + // the whole screen. So for first time set mode, do not clear + // the screen. + // + if (This->Mode->Mode != -1) { + Status = GraphicsOutput->Blt ( + GraphicsOutput, + &mGraphicsEfiColors[0], + EfiBltVideoFill, + 0, + 0, + 0, + 0, + ModeData->GopWidth, + ModeData->GopHeight, + 0 + ); + } } } else if (FeaturePcdGet (PcdUgaConsumeSupport)) { // -- 2.21.0.windows.1