MdeModulePkg/GraphicsConsoleDxe: Initialize the output mode
[mirror_edk2.git] / MdeModulePkg / Universal / Console / GraphicsConsoleDxe / GraphicsConsole.c
index 26ea19f..c042451 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   This is the main routine for initializing the Graphics Console support routines.\r
 \r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -384,6 +384,12 @@ GraphicsConsoleControllerDriverStart (
   EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE    *Mode;\r
   UINTN                                SizeOfInfo;\r
   EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;\r
+  INT32                                PreferMode;\r
+  INT32                                Index;\r
+  UINTN                                Column;\r
+  UINTN                                Row;\r
+  UINTN                                DefaultColumn;\r
+  UINTN                                DefaultRow;\r
 \r
   ModeNumber = 0;\r
 \r
@@ -567,16 +573,32 @@ GraphicsConsoleControllerDriverStart (
   //\r
   Private->SimpleTextOutputMode.MaxMode = (INT32) MaxMode;\r
 \r
-  DEBUG_CODE_BEGIN ();\r
-    Status = GraphicsConsoleConOutSetMode (&Private->SimpleTextOutput, 0);\r
-    if (EFI_ERROR (Status)) {\r
-      goto Error;\r
-    }\r
-    Status = GraphicsConsoleConOutOutputString (&Private->SimpleTextOutput, (CHAR16 *)L"Graphics Console Started\n\r");\r
-    if (EFI_ERROR (Status)) {\r
-      goto Error;\r
+  //\r
+  // Initialize the Mode of graphics console devices\r
+  //\r
+  PreferMode = -1;\r
+  DefaultColumn = PcdGet32 (PcdConOutColumn);\r
+  DefaultRow = PcdGet32 (PcdConOutRow);\r
+  Column = 0;\r
+  Row = 0;\r
+  for (Index = 0; Index < (INT32)MaxMode; Index++) {\r
+    if (DefaultColumn != 0 && DefaultRow != 0) {\r
+      if ((Private->ModeData[Index].Columns == DefaultColumn) &&\r
+          (Private->ModeData[Index].Rows == DefaultRow)) {\r
+        PreferMode = Index;\r
+        break;\r
+      }\r
+    } else {\r
+      if ((Private->ModeData[Index].Columns > Column) &&\r
+          (Private->ModeData[Index].Rows > Row)) {\r
+        Column = Private->ModeData[Index].Columns;\r
+        Row = Private->ModeData[Index].Rows;\r
+        PreferMode = Index;\r
+      }\r
     }\r
-  DEBUG_CODE_END ();\r
+  }\r
+  Private->SimpleTextOutput.Mode->Mode = (INT32)PreferMode;\r
+  DEBUG ((DEBUG_INFO, "Graphics Console Started, Mode: %d\n", PreferMode));\r
 \r
   //\r
   // Install protocol interfaces for the Graphics Console device.\r