173 lines
7.5 KiB
Diff
173 lines
7.5 KiB
Diff
From cef6b69ea8f009aeba50b2f4b69889f9500fa585 Mon Sep 17 00:00:00 2001
|
|
From: Laszlo Ersek <lersek@redhat.com>
|
|
Date: Tue, 25 Feb 2014 18:40:35 +0100
|
|
Subject: MdeModulePkg: TerminalDxe: add other text resolutions (RHEL only)
|
|
|
|
Notes for rebase to edk2-stable202202:
|
|
|
|
- Minor context changes due to 1436aea4d MdeModulePkg: Apply uncrustify changes
|
|
|
|
Notes about the RHEL-8.3/20200603-ca407c7246bf [edk2-stable202005] ->
|
|
RHEL-8.5/20210520-e1999b264f1f [edk2-stable202105] rebase:
|
|
|
|
- no change
|
|
|
|
Notes about the RHEL-8.2/20190904-37eef91017ad [edk2-stable201908] ->
|
|
RHEL-8.3/20200603-ca407c7246bf [edk2-stable202005] rebase:
|
|
|
|
- no changes
|
|
|
|
Notes about the RHEL-8.1/20190308-89910a39dcfd [edk2-stable201903] ->
|
|
RHEL-8.2/20190904-37eef91017ad [edk2-stable201908] rebase:
|
|
|
|
- no changes
|
|
|
|
Notes about the RHEL-8.0/20180508-ee3198e672e2 ->
|
|
RHEL-8.1/20190308-89910a39dcfd rebase:
|
|
|
|
- no change
|
|
|
|
Notes about the RHEL-7.6/ovmf-20180508-2.gitee3198e672e2.el7 ->
|
|
RHEL-8.0/20180508-ee3198e672e2 rebase:
|
|
|
|
- reorder the rebase changelog in the commit message so that it reads like
|
|
a blog: place more recent entries near the top
|
|
- no changes to the patch body
|
|
|
|
Notes about the 20171011-92d07e48907f -> 20180508-ee3198e672e2 rebase:
|
|
|
|
- update commit message as requested in
|
|
<https://bugzilla.redhat.com/show_bug.cgi?id=1503316#c0>
|
|
|
|
Notes about the 20170228-c325e41585e3 -> 20171011-92d07e48907f rebase:
|
|
|
|
- no changes
|
|
|
|
Notes about the 20160608b-988715a -> 20170228-c325e41585e3 rebase:
|
|
|
|
- adapt commit 0bc77c63de03 (code and commit message) to upstream commit
|
|
390b95a49c14 ("MdeModulePkg/TerminalDxe: Refine
|
|
InitializeTerminalConsoleTextMode", 2017-01-10).
|
|
|
|
When the console output is multiplexed to several devices by
|
|
ConSplitterDxe, then ConSplitterDxe builds an intersection of text modes
|
|
supported by all console output devices.
|
|
|
|
Two notable output devices are provided by:
|
|
(1) MdeModulePkg/Universal/Console/GraphicsConsoleDxe,
|
|
(2) MdeModulePkg/Universal/Console/TerminalDxe.
|
|
|
|
GraphicsConsoleDxe supports four modes at most -- see
|
|
InitializeGraphicsConsoleTextMode() and "mGraphicsConsoleModeData":
|
|
|
|
(1a) 80x25 (required by the UEFI spec as mode 0),
|
|
(1b) 80x50 (not necessarily supported, but if it is, then the UEFI spec
|
|
requires the driver to provide it as mode 1),
|
|
(1c) 100x31 (corresponding to graphics resolution 800x600, which the UEFI
|
|
spec requires from all plug-in graphics devices),
|
|
(1d) "full screen" resolution, derived form the underlying GOP's
|
|
horizontal and vertical resolutions with division by EFI_GLYPH_WIDTH
|
|
(8) and EFI_GLYPH_HEIGHT (19), respectively.
|
|
|
|
The automatic "full screen resolution" makes GraphicsConsoleDxe's
|
|
character console very flexible. However, TerminalDxe (which runs on
|
|
serial ports) only provides the following fixed resolutions -- see
|
|
InitializeTerminalConsoleTextMode() and "mTerminalConsoleModeData":
|
|
|
|
(2a) 80x25 (required by the UEFI spec as mode 0),
|
|
(2b) 80x50 (since the character resolution of a serial device cannot be
|
|
interrogated easily, this is added unconditionally as mode 1),
|
|
(2c) 100x31 (since the character resolution of a serial device cannot be
|
|
interrogated easily, this is added unconditionally as mode 2).
|
|
|
|
When ConSplitterDxe combines (1) and (2), multiplexing console output to
|
|
both video output and serial terminal, the list of commonly supported text
|
|
modes (ie. the "intersection") comprises:
|
|
|
|
(3a) 80x25, unconditionally, from (1a) and (2a),
|
|
(3b) 80x50, if the graphics console provides at least 640x950 pixel
|
|
resolution, from (1b) and (2b)
|
|
(3c) 100x31, if the graphics device is a plug-in one (because in that case
|
|
800x600 is a mandated pixel resolution), from (1c) and (2c).
|
|
|
|
Unfortunately, the "full screen resolution" (1d) of the GOP-based text
|
|
console is not available in general.
|
|
|
|
Mitigate this problem by extending "mTerminalConsoleModeData" with a
|
|
handful of text resolutions that are derived from widespread maximal pixel
|
|
resolutions. This way TerminalDxe won't cause ConSplitterDxe to filter out
|
|
the most frequent (1d) values from the intersection, and eg. the MODE
|
|
command in the UEFI shell will offer the "best" (ie. full screen)
|
|
resolution too.
|
|
|
|
Upstreaming efforts for this patch have been discontinued; it was clear
|
|
from the off-list thread that consensus was impossible to reach.
|
|
|
|
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
|
(cherry picked from commit 99dc3720ac86059f60156197328cc433603c536e)
|
|
(cherry picked from commit d2066c1748f885043026c51dec1bc8d6d406ae8f)
|
|
(cherry picked from commit 1facdd58e946c584a3dc1e5be8f2f837b5a7c621)
|
|
(cherry picked from commit 28faeb5f94b4866b9da16cf2a1e4e0fc09a26e37)
|
|
(cherry picked from commit 4e4e15b80a5b2103eadd495ef4a830d46dd4ed51)
|
|
(cherry picked from commit 12cb13a1da913912bd9148ce8f2353a75be77f18)
|
|
(cherry picked from commit 82b9edc5fef3a07227a45059bbe821af7b9abd69)
|
|
---
|
|
.../Universal/Console/TerminalDxe/Terminal.c | 41 +++++++++++++++++--
|
|
1 file changed, 38 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
|
|
index e2d779c783..dfd9c96773 100644
|
|
--- a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
|
|
+++ b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.c
|
|
@@ -112,9 +112,44 @@ TERMINAL_DEV mTerminalDevTemplate = {
|
|
};
|
|
|
|
TERMINAL_CONSOLE_MODE_DATA mTerminalConsoleModeData[] = {
|
|
- { 80, 25 },
|
|
- { 80, 50 },
|
|
- { 100, 31 },
|
|
+ { 80, 25 }, // from graphics resolution 640 x 480
|
|
+ { 80, 50 }, // from graphics resolution 640 x 960
|
|
+ { 100, 25 }, // from graphics resolution 800 x 480
|
|
+ { 100, 31 }, // from graphics resolution 800 x 600
|
|
+ { 104, 32 }, // from graphics resolution 832 x 624
|
|
+ { 120, 33 }, // from graphics resolution 960 x 640
|
|
+ { 128, 31 }, // from graphics resolution 1024 x 600
|
|
+ { 128, 40 }, // from graphics resolution 1024 x 768
|
|
+ { 144, 45 }, // from graphics resolution 1152 x 864
|
|
+ { 144, 45 }, // from graphics resolution 1152 x 870
|
|
+ { 160, 37 }, // from graphics resolution 1280 x 720
|
|
+ { 160, 40 }, // from graphics resolution 1280 x 760
|
|
+ { 160, 40 }, // from graphics resolution 1280 x 768
|
|
+ { 160, 42 }, // from graphics resolution 1280 x 800
|
|
+ { 160, 50 }, // from graphics resolution 1280 x 960
|
|
+ { 160, 53 }, // from graphics resolution 1280 x 1024
|
|
+ { 170, 40 }, // from graphics resolution 1360 x 768
|
|
+ { 170, 40 }, // from graphics resolution 1366 x 768
|
|
+ { 175, 55 }, // from graphics resolution 1400 x 1050
|
|
+ { 180, 47 }, // from graphics resolution 1440 x 900
|
|
+ { 200, 47 }, // from graphics resolution 1600 x 900
|
|
+ { 200, 63 }, // from graphics resolution 1600 x 1200
|
|
+ { 210, 55 }, // from graphics resolution 1680 x 1050
|
|
+ { 240, 56 }, // from graphics resolution 1920 x 1080
|
|
+ { 240, 63 }, // from graphics resolution 1920 x 1200
|
|
+ { 240, 75 }, // from graphics resolution 1920 x 1440
|
|
+ { 250, 105 }, // from graphics resolution 2000 x 2000
|
|
+ { 256, 80 }, // from graphics resolution 2048 x 1536
|
|
+ { 256, 107 }, // from graphics resolution 2048 x 2048
|
|
+ { 320, 75 }, // from graphics resolution 2560 x 1440
|
|
+ { 320, 84 }, // from graphics resolution 2560 x 1600
|
|
+ { 320, 107 }, // from graphics resolution 2560 x 2048
|
|
+ { 350, 110 }, // from graphics resolution 2800 x 2100
|
|
+ { 400, 126 }, // from graphics resolution 3200 x 2400
|
|
+ { 480, 113 }, // from graphics resolution 3840 x 2160
|
|
+ { 512, 113 }, // from graphics resolution 4096 x 2160
|
|
+ { 960, 227 }, // from graphics resolution 7680 x 4320
|
|
+ { 1024, 227 }, // from graphics resolution 8192 x 4320
|
|
//
|
|
// New modes can be added here.
|
|
//
|
|
--
|
|
2.38.1
|
|
|