Blame SOURCES/0003-MdeModulePkg-TerminalDxe-add-other-text-resolutions-.patch

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