]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Library/GraphicsLib/Graphics.c
add PCD PcdUgaConsumeSupport to switch on/off EFI UGA Draw Protocol's consuming,...
[mirror_edk2.git] / IntelFrameworkModulePkg / Library / GraphicsLib / Graphics.c
index 5ab779a6a3295d5e1f20a9202bddc6ef6d7f8fba..283d9be358da6ce386b9b2eba41dde0fa77183c2 100644 (file)
@@ -35,6 +35,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/DebugLib.h>\r
+#include <Library/PcdLib.h>\r
 \r
 EFI_STATUS\r
 GetGraphicsBitMapFromFV (\r
@@ -390,15 +391,15 @@ Returns:
   // Try to open GOP first\r
   //\r
   Status = gBS->HandleProtocol (gST->ConsoleOutHandle, &gEfiGraphicsOutputProtocolGuid, (VOID **) &GraphicsOutput);\r
-  if (EFI_ERROR(Status)) {\r
+  if (EFI_ERROR(Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
     GraphicsOutput = NULL;\r
     //\r
     // Open GOP failed, try to open UGA\r
     //\r
     Status = gBS->HandleProtocol (gST->ConsoleOutHandle, &gEfiUgaDrawProtocolGuid, (VOID **) &UgaDraw);\r
-    if (EFI_ERROR (Status)) {\r
-      return EFI_UNSUPPORTED;\r
-    }\r
+  }\r
+  if (EFI_ERROR (Status)) {\r
+    return EFI_UNSUPPORTED;\r
   }\r
 \r
   Badging = NULL;\r
@@ -409,7 +410,7 @@ Returns:
   if (GraphicsOutput != NULL) {\r
     SizeOfX = GraphicsOutput->Mode->Info->HorizontalResolution;\r
     SizeOfY = GraphicsOutput->Mode->Info->VerticalResolution;\r
-  } else {\r
+  } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
     Status = UgaDraw->GetMode (UgaDraw, &SizeOfX, &SizeOfY, &ColorDepth, &RefreshRate);\r
     if (EFI_ERROR (Status)) {\r
       return EFI_UNSUPPORTED;\r
@@ -539,7 +540,7 @@ Returns:
                             Height,\r
                             Width * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
                             );\r
-      } else {\r
+      } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
         Status = UgaDraw->Blt (\r
                             UgaDraw,\r
                             (EFI_UGA_PIXEL *) Blt,\r
@@ -552,6 +553,8 @@ Returns:
                             Height,\r
                             Width * sizeof (EFI_UGA_PIXEL)\r
                             );\r
+      } else {\r
+        Status = EFI_UNSUPPORTED;\r
       }\r
     }\r
 \r
@@ -696,7 +699,7 @@ Returns:
   if (GraphicsOutput != NULL) {\r
     HorizontalResolution = GraphicsOutput->Mode->Info->HorizontalResolution;\r
     VerticalResolution   = GraphicsOutput->Mode->Info->VerticalResolution;\r
-  } else {\r
+  } else if (FeaturePcdGet (PcdUgaConsumeSupport))  {\r
     //\r
     // Get the current mode information from the UGA Draw Protocol\r
     //\r
@@ -784,7 +787,7 @@ Returns:
                         GLYPH_HEIGHT,\r
                         BufferGlyphWidth * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
                         );\r
-  } else {\r
+  } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
     Status = UgaDraw->Blt (\r
                         UgaDraw,\r
                         (EFI_UGA_PIXEL *) (UINTN) LineBuffer,\r
@@ -797,6 +800,8 @@ Returns:
                         GLYPH_HEIGHT,\r
                         BufferGlyphWidth * sizeof (EFI_UGA_PIXEL)\r
                         );\r
+  } else {\r
+    Status = EFI_UNSUPPORTED;\r
   }\r
 \r
 Error:\r
@@ -861,7 +866,7 @@ Returns:
                   (VOID **) &GraphicsOutput\r
                   );\r
 \r
-  if (EFI_ERROR (Status)) {\r
+  if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
     GraphicsOutput = NULL;\r
 \r
     Status = gBS->HandleProtocol (\r
@@ -869,10 +874,10 @@ Returns:
                     &gEfiUgaDrawProtocolGuid,\r
                     (VOID **) &UgaDraw\r
                     );\r
+  }\r
 \r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
   }\r
 \r
   Status = gBS->HandleProtocol (\r