]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkNt32Pkg/Dxe/PlatformBds/Generic/MemoryTest.c
1) Use FeatureFlag PcdPciBusHotplugDeviceSupport to merge LightPciLib.c with PcdLib.c.
[mirror_edk2.git] / EdkNt32Pkg / Dxe / PlatformBds / Generic / MemoryTest.c
index f1fedf391ad3d7b43a5a5949377fdfd86911cc48..d4e5bc50efc0dad52310450c9e6271713ac9d756 100644 (file)
@@ -28,10 +28,10 @@ Abstract:
 //\r
 EFI_STATUS\r
 PlatformBdsShowProgress (\r
-  IN EFI_UGA_PIXEL TitleForeground,\r
-  IN EFI_UGA_PIXEL TitleBackground,\r
+  IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleForeground,\r
+  IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleBackground,\r
   IN CHAR16        *Title,\r
-  IN EFI_UGA_PIXEL ProgressColor,\r
+  IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL ProgressColor,\r
   IN UINTN         Progress,\r
   IN UINTN         PreviousValue\r
   )\r
@@ -56,12 +56,13 @@ Returns:
 --*/\r
 {\r
   EFI_STATUS            Status;\r
+  EFI_GRAPHICS_OUTPUT_PROTOCOL   *GraphicsOutput;\r
   EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
   UINT32                SizeOfX;\r
   UINT32                SizeOfY;\r
   UINT32                ColorDepth;\r
   UINT32                RefreshRate;\r
-  EFI_UGA_PIXEL         Color;\r
+  EFI_GRAPHICS_OUTPUT_BLT_PIXEL  Color;\r
   UINTN                 BlockHeight;\r
   UINTN                 BlockWidth;\r
   UINTN                 BlockNum;\r
@@ -73,24 +74,39 @@ Returns:
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
+  UgaDraw = NULL;\r
   Status = gBS->HandleProtocol (\r
                   gST->ConsoleOutHandle,\r
-                  &gEfiUgaDrawProtocolGuid,\r
-                  &UgaDraw\r
+                  &gEfiGraphicsOutputProtocolGuid,\r
+                  &GraphicsOutput\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
+    GraphicsOutput = NULL;\r
+\r
+    Status = gBS->HandleProtocol (\r
+                    gST->ConsoleOutHandle,\r
+                    &gEfiUgaDrawProtocolGuid,\r
+                    &UgaDraw\r
+                    );\r
+    if (EFI_ERROR (Status)) {\r
+      return EFI_UNSUPPORTED;\r
+    }\r
   }\r
 \r
-  Status = UgaDraw->GetMode (\r
-                      UgaDraw,\r
-                      &SizeOfX,\r
-                      &SizeOfY,\r
-                      &ColorDepth,\r
-                      &RefreshRate\r
-                      );\r
-  if (EFI_ERROR (Status)) {\r
-    return EFI_UNSUPPORTED;\r
+  if (GraphicsOutput != NULL) {\r
+    SizeOfX = GraphicsOutput->Mode->Info->HorizontalResolution;\r
+    SizeOfY = GraphicsOutput->Mode->Info->VerticalResolution;\r
+  } else {\r
+    Status = UgaDraw->GetMode (\r
+                        UgaDraw,\r
+                        &SizeOfX,\r
+                        &SizeOfY,\r
+                        &ColorDepth,\r
+                        &RefreshRate\r
+                        );\r
+    if (EFI_ERROR (Status)) {\r
+      return EFI_UNSUPPORTED;\r
+    }\r
   }\r
 \r
   BlockWidth  = SizeOfX / 100;\r
@@ -105,38 +121,68 @@ Returns:
     //\r
     // Clear progress area\r
     //\r
-    SetMem (&Color, sizeof (EFI_UGA_PIXEL), 0x0);\r
-\r
-    Status = UgaDraw->Blt (\r
-                        UgaDraw,\r
-                        &Color,\r
-                        EfiUgaVideoFill,\r
-                        0,\r
-                        0,\r
-                        0,\r
-                        PosY - GLYPH_HEIGHT - 1,\r
-                        SizeOfX,\r
-                        SizeOfY - (PosY - GLYPH_HEIGHT - 1),\r
-                        SizeOfX * sizeof (EFI_UGA_PIXEL)\r
-                        );\r
+    SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);\r
+\r
+    if (GraphicsOutput != NULL) {\r
+      Status = GraphicsOutput->Blt (\r
+                          GraphicsOutput,\r
+                          &Color,\r
+                          EfiBltVideoFill,\r
+                          0,\r
+                          0,\r
+                          0,\r
+                          PosY - GLYPH_HEIGHT - 1,\r
+                          SizeOfX,\r
+                          SizeOfY - (PosY - GLYPH_HEIGHT - 1),\r
+                          SizeOfX * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
+                          );\r
+    } else {\r
+      Status = UgaDraw->Blt (\r
+                          UgaDraw,\r
+                          (EFI_UGA_PIXEL *) &Color,\r
+                          EfiUgaVideoFill,\r
+                          0,\r
+                          0,\r
+                          0,\r
+                          PosY - GLYPH_HEIGHT - 1,\r
+                          SizeOfX,\r
+                          SizeOfY - (PosY - GLYPH_HEIGHT - 1),\r
+                          SizeOfX * sizeof (EFI_UGA_PIXEL)\r
+                          );\r
+    }\r
   }\r
   //\r
   // Show progress by drawing blocks\r
   //\r
   for (Index = PreviousValue; Index < BlockNum; Index++) {\r
     PosX = Index * BlockWidth;\r
-    Status = UgaDraw->Blt (\r
-                        UgaDraw,\r
-                        &ProgressColor,\r
-                        EfiUgaVideoFill,\r
-                        0,\r
-                        0,\r
-                        PosX,\r
-                        PosY,\r
-                        BlockWidth - 1,\r
-                        BlockHeight,\r
-                        (BlockWidth) * sizeof (EFI_UGA_PIXEL)\r
-                        );\r
+    if (GraphicsOutput != NULL) {\r
+      Status = GraphicsOutput->Blt (\r
+                          GraphicsOutput,\r
+                          &ProgressColor,\r
+                          EfiBltVideoFill,\r
+                          0,\r
+                          0,\r
+                          PosX,\r
+                          PosY,\r
+                          BlockWidth - 1,\r
+                          BlockHeight,\r
+                          (BlockWidth) * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
+                          );\r
+    } else {\r
+      Status = UgaDraw->Blt (\r
+                          UgaDraw,\r
+                          (EFI_UGA_PIXEL *) &ProgressColor,\r
+                          EfiUgaVideoFill,\r
+                          0,\r
+                          0,\r
+                          PosX,\r
+                          PosY,\r
+                          BlockWidth - 1,\r
+                          BlockHeight,\r
+                          (BlockWidth) * sizeof (EFI_UGA_PIXEL)\r
+                          );\r
+    }\r
   }\r
 \r
   PrintXY (\r
@@ -189,12 +235,11 @@ Returns:
   CHAR16                            *StrTotalMemory;\r
   CHAR16                            *Pos;\r
   CHAR16                            *TmpStr;\r
-  EFI_UGA_PIXEL                     Foreground;\r
-  EFI_UGA_PIXEL                     Background;\r
-  EFI_UGA_PIXEL                     Color;\r
+  EFI_GRAPHICS_OUTPUT_BLT_PIXEL     Foreground;\r
+  EFI_GRAPHICS_OUTPUT_BLT_PIXEL     Background;\r
+  EFI_GRAPHICS_OUTPUT_BLT_PIXEL     Color;\r
   UINT8                             Value;\r
   UINTN                             DataSize;\r
-  UINT32                            Attributes;\r
 \r
   ReturnStatus = EFI_SUCCESS;\r
   ZeroMem (&Key, sizeof (EFI_INPUT_KEY));\r
@@ -213,9 +258,9 @@ Returns:
   ErrorOut          = FALSE;\r
   TestAbort         = FALSE;\r
 \r
-  SetMem (&Foreground, sizeof (EFI_UGA_PIXEL), 0xff);\r
-  SetMem (&Background, sizeof (EFI_UGA_PIXEL), 0x0);\r
-  SetMem (&Color, sizeof (EFI_UGA_PIXEL), 0xff);\r
+  SetMem (&Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
+  SetMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);\r
+  SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
 \r
   RequireSoftECCInit = FALSE;\r
 \r
@@ -366,7 +411,7 @@ Done:
   Status = gRT->GetVariable (\r
                   L"BootState",\r
                   &gEfiBootStateGuid,\r
-                  &Attributes,\r
+                  NULL,\r
                   &DataSize,\r
                   &Value\r
                   );\r