OcConsoleLib: Improve ASCII renderer performance and fix glitches

This commit is contained in:
vit9696 2020-02-02 05:28:56 +03:00
parent d24173b12b
commit 1cecf9d1d7

View File

@ -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
);