From 1cecf9d1d7cf275e43f585f5e1547bfb03e270ec Mon Sep 17 00:00:00 2001 From: vit9696 Date: Sun, 2 Feb 2020 05:28:56 +0300 Subject: [PATCH] OcConsoleLib: Improve ASCII renderer performance and fix glitches --- Library/OcConsoleLib/AsciiTextOutput.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Library/OcConsoleLib/AsciiTextOutput.c b/Library/OcConsoleLib/AsciiTextOutput.c index 8ab7994f..7ca30e0c 100644 --- a/Library/OcConsoleLib/AsciiTextOutput.c +++ b/Library/OcConsoleLib/AsciiTextOutput.c @@ -382,18 +382,31 @@ AsciiTextOutputString ( if ((UINTN) This->Mode->CursorRow >= mConsoleHeight) { // - // TODO: Some GOP implementations (e.g. NVIDIA) cannot perform such operations. + // TODO: Many GOP implementations (e.g. NVIDIA) fail to perform overlapping operations. // mGraphicsOutput->Blt ( mGraphicsOutput, NULL, EfiBltVideoToVideo, - TGT_CHAR_WIDTH, + 0, TGT_CHAR_HEIGHT * 2, - TGT_CHAR_WIDTH, + 0, + TGT_CHAR_HEIGHT, + mGraphicsOutput->Mode->Info->HorizontalResolution, + TGT_CHAR_HEIGHT * (mConsoleHeight - 1), + 0 + ); + + mGraphicsOutput->Blt ( + mGraphicsOutput, + &mBackgroundColor.Pixel, + EfiBltVideoFill, + 0, + 0, + 0, + TGT_CHAR_HEIGHT * mConsoleHeight, + mGraphicsOutput->Mode->Info->HorizontalResolution, TGT_CHAR_HEIGHT, - MIN (mConsoleMaxPosX * TGT_CHAR_WIDTH, mGraphicsOutput->Mode->Info->HorizontalResolution - TGT_CHAR_WIDTH), - MIN ((mConsoleMaxPosY + 1) * TGT_CHAR_HEIGHT, mGraphicsOutput->Mode->Info->VerticalResolution - TGT_CHAR_HEIGHT), 0 );