]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Set video resolution to highest when PcdVideoHorizontalResolution or PcdVideoVertical...
authorli-elvin <li-elvin@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 28 Oct 2011 08:25:18 +0000 (08:25 +0000)
committerli-elvin <li-elvin@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 28 Oct 2011 08:25:18 +0000 (08:25 +0000)
Signed-off-by: li-elvin
Reviewed-by: niruiyu, hhtian
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12596 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Csm/BiosThunk/VideoDxe/BiosVideo.c
IntelFrameworkModulePkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf

index f8830b1763c38f22c8b7ccad694c4295462035a1..ceb362798ca4ec5e0d7ab68bfe6b9768579619e9 100644 (file)
@@ -1225,12 +1225,18 @@ BiosVideoCheckForVbe (
   UINT8                                  *EdidOverrideDataBlock;\r
   UINTN                                  EdidActiveDataSize;\r
   UINT8                                  *EdidActiveDataBlock;\r
+  UINT32                                 HighestHorizontalResolution;\r
+  UINT32                                 HighestVerticalResolution;\r
+  UINTN                                  HighestResolutionMode;\r
 \r
   EdidFound             = TRUE;\r
   EdidOverrideFound     = FALSE;\r
   EdidOverrideDataBlock = NULL;\r
   EdidActiveDataSize    = 0;\r
   EdidActiveDataBlock   = NULL;\r
+  HighestHorizontalResolution = 0;\r
+  HighestVerticalResolution   = 0;\r
+  HighestResolutionMode       = 0;\r
 \r
   //\r
   // Allocate buffer under 1MB for VBE data structures\r
@@ -1526,6 +1532,16 @@ BiosVideoCheckForVbe (
       continue;\r
     }\r
 \r
+    //\r
+    // Record the highest resolution mode to set later\r
+    //\r
+    if ((BiosVideoPrivate->VbeModeInformationBlock->XResolution >= HighestHorizontalResolution) &&\r
+        (BiosVideoPrivate->VbeModeInformationBlock->YResolution >= HighestVerticalResolution)) {\r
+      HighestHorizontalResolution = BiosVideoPrivate->VbeModeInformationBlock->XResolution;\r
+      HighestVerticalResolution = BiosVideoPrivate->VbeModeInformationBlock->YResolution;\r
+      HighestResolutionMode = ModeNumber;\r
+    }\r
+\r
     //\r
     // Add mode to the list of available modes\r
     //\r
@@ -1620,6 +1636,15 @@ BiosVideoCheckForVbe (
   //\r
   // Find the best mode to initialize\r
   //\r
+  if ((PcdGet32 (PcdVideoHorizontalResolution) == 0x0) || (PcdGet32 (PcdVideoVerticalResolution) == 0x0)) {\r
+    DEBUG_CODE (\r
+      BIOS_VIDEO_MODE_DATA    *ModeData;\r
+      ModeData = &BiosVideoPrivate->ModeData[HighestResolutionMode];\r
+      DEBUG ((EFI_D_INFO, "BiosVideo set highest resolution %d x %d\n",\r
+              ModeData->HorizontalResolution, ModeData->VerticalResolution));\r
+    );\r
+    PreferMode = HighestResolutionMode;\r
+  }\r
   Status = BiosVideoGraphicsOutputSetMode (&BiosVideoPrivate->GraphicsOutput, (UINT32) PreferMode);\r
   if (EFI_ERROR (Status)) {\r
     for (PreferMode = 0; PreferMode < ModeNumber; PreferMode ++) {\r
index bf5f255dcf475b143b0bf1722b83bc42d3d6d462..33dad82109ede3f3fab66dee4c2efc9dced711a4 100644 (file)
@@ -78,3 +78,5 @@
   gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBiosVideoSetTextVgaModeEnable\r
   gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBiosVideoCheckVbeEnable\r
   gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBiosVideoCheckVgaEnable\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution  \r