]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Csm/BiosThunk/VideoDxe/BiosVideo.c
Fix a bug about the iSCSI DHCP dependency issue.
[mirror_edk2.git] / IntelFrameworkModulePkg / Csm / BiosThunk / VideoDxe / BiosVideo.c
index f38c968943d0d043cee1783982c2a82edd877712..7c718ba423d750031989c6f659c98c39d6cb9f80 100644 (file)
@@ -1580,6 +1580,9 @@ BiosVideoCheckForVbe (
       continue;\r
     }\r
 \r
+    DEBUG ((EFI_D_INFO, "Video Controller Mode 0x%x: %d x %d\n",\r
+            VbeModeNumber, BiosVideoPrivate->VbeModeInformationBlock->XResolution, BiosVideoPrivate->VbeModeInformationBlock->YResolution));\r
+\r
     if (EdidFound && (ValidEdidTiming.ValidNumber > 0)) {\r
       //\r
       // EDID exist, check whether this mode match with any mode in EDID\r
@@ -1587,7 +1590,16 @@ BiosVideoCheckForVbe (
       Timing.HorizontalResolution = BiosVideoPrivate->VbeModeInformationBlock->XResolution;\r
       Timing.VerticalResolution = BiosVideoPrivate->VbeModeInformationBlock->YResolution;\r
       if (!SearchEdidTiming (&ValidEdidTiming, &Timing)) {\r
+        //\r
+        // When EDID comes from INT10 call, EDID does not include 800x600, 640x480 and 1024x768,\r
+        // but INT10 can support these modes, we add them into GOP mode.\r
+        //\r
+        if ((BiosVideoPrivate->EdidDiscovered.SizeOfEdid != 0) &&\r
+            !((Timing.HorizontalResolution) == 1024 && (Timing.VerticalResolution == 768)) &&\r
+            !((Timing.HorizontalResolution) == 800 && (Timing.VerticalResolution == 600)) &&\r
+            !((Timing.HorizontalResolution) == 640 && (Timing.VerticalResolution == 480))) {\r
         continue;\r
+        }\r
       }\r
     }\r
 \r
@@ -1623,8 +1635,9 @@ BiosVideoCheckForVbe (
     //\r
     // Record the highest resolution mode to set later\r
     //\r
-    if ((BiosVideoPrivate->VbeModeInformationBlock->XResolution >= HighestHorizontalResolution) &&\r
-        (BiosVideoPrivate->VbeModeInformationBlock->YResolution >= HighestVerticalResolution)) {\r
+    if ((BiosVideoPrivate->VbeModeInformationBlock->XResolution > HighestHorizontalResolution) ||\r
+        ((BiosVideoPrivate->VbeModeInformationBlock->XResolution == HighestHorizontalResolution) && \r
+         (BiosVideoPrivate->VbeModeInformationBlock->YResolution > HighestVerticalResolution))) {\r
       HighestHorizontalResolution = BiosVideoPrivate->VbeModeInformationBlock->XResolution;\r
       HighestVerticalResolution = BiosVideoPrivate->VbeModeInformationBlock->YResolution;\r
       HighestResolutionMode = ModeNumber;\r