]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Vlv2TbltDevicePkg/Override/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c
Remove override to ConSplitter
[mirror_edk2.git] / Vlv2TbltDevicePkg / Override / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitterGraphics.c
diff --git a/Vlv2TbltDevicePkg/Override/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c b/Vlv2TbltDevicePkg/Override/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c
deleted file mode 100644 (file)
index b7cdd7a..0000000
+++ /dev/null
@@ -1,628 +0,0 @@
-/** @file\r
-  Support for Graphics output spliter.\r
-  \r
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-\r
-**/\r
-\r
-#include "ConSplitter.h"\r
-\r
-\r
-CHAR16 mCrLfString[3] = { CHAR_CARRIAGE_RETURN, CHAR_LINEFEED, CHAR_NULL };\r
-\r
-/**\r
-  Returns information for an available graphics mode that the graphics device\r
-  and the set of active video output devices supports.\r
-\r
-  @param  This                  The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.\r
-  @param  ModeNumber            The mode number to return information on.\r
-  @param  SizeOfInfo            A pointer to the size, in bytes, of the Info buffer.\r
-  @param  Info                  A pointer to callee allocated buffer that returns information about ModeNumber.\r
-\r
-  @retval EFI_SUCCESS           Mode information returned.\r
-  @retval EFI_BUFFER_TOO_SMALL  The Info buffer was too small.\r
-  @retval EFI_DEVICE_ERROR      A hardware error occurred trying to retrieve the video mode.\r
-  @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
-  @retval EFI_OUT_OF_RESOURCES  No resource available.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConSplitterGraphicsOutputQueryMode (\r
-  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL          *This,\r
-  IN  UINT32                                ModeNumber,\r
-  OUT UINTN                                 *SizeOfInfo,\r
-  OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  **Info\r
-  )\r
-{\r
-  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private;\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput;\r
-  EFI_STATUS                      Status;\r
-  UINTN                           Index;\r
-\r
-  if (This == NULL || Info == NULL || SizeOfInfo == NULL || ModeNumber >= This->Mode->MaxMode) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // retrieve private data\r
-  //\r
-  Private = GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
-\r
-  GraphicsOutput = NULL;\r
-  \r
-  if (Private->CurrentNumberOfGraphicsOutput == 1) {\r
-    //\r
-    // Find the only one GraphicsOutput.\r
-    //\r
-    for (Index = 0; Index < Private->CurrentNumberOfConsoles; Index++) {\r
-      GraphicsOutput = Private->TextOutList[Index].GraphicsOutput;\r
-      if (GraphicsOutput != NULL) {\r
-        break;\r
-      }\r
-    }\r
-  }\r
-  \r
-  if (GraphicsOutput != NULL) {\r
-    //\r
-    // If only one physical GOP device exist, return its information.\r
-    //\r
-    Status = GraphicsOutput->QueryMode (GraphicsOutput, (UINT32) ModeNumber, SizeOfInfo, Info);\r
-    return Status;\r
-  } else {\r
-    //\r
-    // If 2 more phyiscal GOP device exist or GOP protocol does not exist, \r
-    // return GOP information (PixelFormat is PixelBltOnly) created in ConSplitterAddGraphicsOutputMode ().\r
-    //\r
-    *Info = AllocatePool (sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION));\r
-    if (*Info == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-    }\r
-    *SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION);\r
-    CopyMem (*Info, &Private->GraphicsOutputModeBuffer[ModeNumber], *SizeOfInfo);\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-/**\r
-  Set the video device into the specified mode and clears the visible portions of\r
-  the output display to black.\r
-\r
-  @param  This                  The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.\r
-  @param  ModeNumber            Abstraction that defines the current video mode.\r
-\r
-  @retval EFI_SUCCESS           The graphics mode specified by ModeNumber was selected.\r
-  @retval EFI_DEVICE_ERROR      The device had an error and could not complete the request.\r
-  @retval EFI_UNSUPPORTED       ModeNumber is not supported by this device.\r
-  @retval EFI_OUT_OF_RESOURCES  No resource available.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConSplitterGraphicsOutputSetMode (\r
-  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
-  IN  UINT32                       ModeNumber\r
-  )\r
-{\r
-  EFI_STATUS                             Status;\r
-  TEXT_OUT_SPLITTER_PRIVATE_DATA         *Private;\r
-  UINTN                                  Index;\r
-  EFI_STATUS                             ReturnStatus;\r
-  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION   *Mode;\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL           *GraphicsOutput;\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL           *PhysicalGraphicsOutput;\r
-  UINTN                                  NumberIndex;\r
-  UINTN                                  SizeOfInfo;\r
-  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION   *Info;\r
-  EFI_UGA_DRAW_PROTOCOL                  *UgaDraw;\r
-\r
-  if (ModeNumber >= This->Mode->MaxMode) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  Private = GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
-  Mode = &Private->GraphicsOutputModeBuffer[ModeNumber];\r
-\r
-  ReturnStatus = EFI_SUCCESS;\r
-  GraphicsOutput = NULL;\r
-  PhysicalGraphicsOutput = NULL;\r
-  //\r
-  // return the worst status met\r
-  //\r
-  for (Index = 0; Index < Private->CurrentNumberOfConsoles; Index++) {\r
-    GraphicsOutput = Private->TextOutList[Index].GraphicsOutput;\r
-    if (GraphicsOutput != NULL) {\r
-      PhysicalGraphicsOutput = GraphicsOutput;\r
-      //\r
-      // Find corresponding ModeNumber of this GraphicsOutput instance\r
-      //\r
-      for (NumberIndex = 0; NumberIndex < GraphicsOutput->Mode->MaxMode; NumberIndex ++) {\r
-        Status = GraphicsOutput->QueryMode (GraphicsOutput, (UINT32) NumberIndex, &SizeOfInfo, &Info);\r
-        if (EFI_ERROR (Status)) {\r
-          return Status;\r
-        }\r
-        if ((Info->HorizontalResolution == Mode->HorizontalResolution) && (Info->VerticalResolution == Mode->VerticalResolution)) {\r
-          FreePool (Info);\r
-          break;\r
-        }\r
-        FreePool (Info);\r
-      }\r
-\r
-      Status = GraphicsOutput->SetMode (GraphicsOutput, (UINT32) NumberIndex);\r
-      if (EFI_ERROR (Status)) {\r
-        ReturnStatus = Status;\r
-      }\r
-    } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
-      UgaDraw = Private->TextOutList[Index].UgaDraw;\r
-      if (UgaDraw != NULL) {\r
-        Status = UgaDraw->SetMode (\r
-                            UgaDraw,\r
-                            Mode->HorizontalResolution,\r
-                            Mode->VerticalResolution,\r
-                            32,\r
-                            60\r
-                            );\r
-        if (EFI_ERROR (Status)) {\r
-          ReturnStatus = Status;\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  This->Mode->Mode = ModeNumber;\r
-\r
-  if ((Private->CurrentNumberOfGraphicsOutput == 1) && (PhysicalGraphicsOutput != NULL)) {\r
-    //\r
-    // If only one physical GOP device exist, copy physical information to consplitter.\r
-    //\r
-    CopyMem (This->Mode->Info, PhysicalGraphicsOutput->Mode->Info, PhysicalGraphicsOutput->Mode->SizeOfInfo);\r
-    This->Mode->SizeOfInfo = PhysicalGraphicsOutput->Mode->SizeOfInfo;\r
-    This->Mode->FrameBufferBase = PhysicalGraphicsOutput->Mode->FrameBufferBase;\r
-    This->Mode->FrameBufferSize = PhysicalGraphicsOutput->Mode->FrameBufferSize;\r
-  } else {\r
-    //\r
-    // If 2 more phyiscal GOP device exist or GOP protocol does not exist, \r
-    // return GOP information (PixelFormat is PixelBltOnly) created in ConSplitterAddGraphicsOutputMode ().\r
-    //\r
-    CopyMem (This->Mode->Info, &Private->GraphicsOutputModeBuffer[ModeNumber], This->Mode->SizeOfInfo);\r
-  }\r
-\r
-  return ReturnStatus;\r
-}\r
-\r
-\r
-\r
-/**\r
-  The following table defines actions for BltOperations.\r
-\r
-  EfiBltVideoFill - Write data from the  BltBuffer pixel (SourceX, SourceY)\r
-  directly to every pixel of the video display rectangle\r
-  (DestinationX, DestinationY)\r
-  (DestinationX + Width, DestinationY + Height).\r
-  Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
-  EfiBltVideoToBltBuffer - Read data from the video display rectangle\r
-  (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
-  the BltBuffer rectangle (DestinationX, DestinationY )\r
-  (DestinationX + Width, DestinationY + Height). If DestinationX or\r
-  DestinationY is not zero then Delta must be set to the length in bytes\r
-  of a row in the BltBuffer.\r
-  EfiBltBufferToVideo - Write data from the  BltBuffer rectangle\r
-  (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
-  video display rectangle (DestinationX, DestinationY)\r
-  (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
-  not zero then Delta must be set to the length in bytes of a row in the\r
-  BltBuffer.\r
-  EfiBltVideoToVideo - Copy from the video display rectangle\r
-  (SourceX, SourceY) (SourceX + Width, SourceY + Height) .\r
-  to the video display rectangle (DestinationX, DestinationY)\r
-  (DestinationX + Width, DestinationY + Height).\r
-  The BltBuffer and Delta  are not used in this mode.\r
-\r
-  @param  This                    Protocol instance pointer.\r
-  @param  BltBuffer               Buffer containing data to blit into video buffer.\r
-                                  This buffer has a size of\r
-                                  Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
-  @param  BltOperation            Operation to perform on BlitBuffer and video\r
-                                  memory\r
-  @param  SourceX                 X coordinate of source for the BltBuffer.\r
-  @param  SourceY                 Y coordinate of source for the BltBuffer.\r
-  @param  DestinationX            X coordinate of destination for the BltBuffer.\r
-  @param  DestinationY            Y coordinate of destination for the BltBuffer.\r
-  @param  Width                   Width of rectangle in BltBuffer in pixels.\r
-  @param  Height                  Hight of rectangle in BltBuffer in pixels.\r
-  @param  Delta                   OPTIONAL.\r
-\r
-  @retval EFI_SUCCESS             The Blt operation completed.\r
-  @retval EFI_INVALID_PARAMETER   BltOperation is not valid.\r
-  @retval EFI_DEVICE_ERROR        A hardware error occured writting to the video\r
-                                  buffer.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConSplitterGraphicsOutputBlt (\r
-  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL                  *This,\r
-  IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL                 *BltBuffer, OPTIONAL\r
-  IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION             BltOperation,\r
-  IN  UINTN                                         SourceX,\r
-  IN  UINTN                                         SourceY,\r
-  IN  UINTN                                         DestinationX,\r
-  IN  UINTN                                         DestinationY,\r
-  IN  UINTN                                         Width,\r
-  IN  UINTN                                         Height,\r
-  IN  UINTN                                         Delta         OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS                      Status;\r
-  EFI_STATUS                      ReturnStatus;\r
-  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private;\r
-  UINTN                           Index;\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput;\r
-  EFI_UGA_DRAW_PROTOCOL           *UgaDraw;\r
-\r
-  if (This == NULL || ((UINTN) BltOperation) >= EfiGraphicsOutputBltOperationMax) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-  \r
-  Private = GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
-\r
-  ReturnStatus = EFI_SUCCESS;\r
-\r
-  //\r
-  // return the worst status met\r
-  //\r
-  for (Index = 0; Index < Private->CurrentNumberOfConsoles; Index++) {\r
-    GraphicsOutput = Private->TextOutList[Index].GraphicsOutput;\r
-    if (GraphicsOutput != NULL) {\r
-      Status = GraphicsOutput->Blt (\r
-                              GraphicsOutput,\r
-                              BltBuffer,\r
-                              BltOperation,\r
-                              SourceX,\r
-                              SourceY,\r
-                              DestinationX,\r
-                              DestinationY,\r
-                              Width,\r
-                              Height,\r
-                              Delta\r
-                              );\r
-      if (EFI_ERROR (Status)) {\r
-        ReturnStatus = Status;\r
-      } else if (BltOperation == EfiBltVideoToBltBuffer) {\r
-        //\r
-        // Only need to read the data into buffer one time\r
-        //\r
-        return EFI_SUCCESS;\r
-      }\r
-    }\r
-\r
-    UgaDraw = Private->TextOutList[Index].UgaDraw;\r
-    if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
-      Status = UgaDraw->Blt (\r
-                              UgaDraw,\r
-                              (EFI_UGA_PIXEL *) BltBuffer,\r
-                              (EFI_UGA_BLT_OPERATION) BltOperation,\r
-                              SourceX,\r
-                              SourceY,\r
-                              DestinationX,\r
-                              DestinationY,\r
-                              Width,\r
-                              Height,\r
-                              Delta\r
-                              );\r
-      if (EFI_ERROR (Status)) {\r
-        ReturnStatus = Status;\r
-      } else if (BltOperation == EfiBltVideoToBltBuffer) {\r
-        //\r
-        // Only need to read the data into buffer one time\r
-        //\r
-        return EFI_SUCCESS;\r
-      }\r
-    }\r
-  }\r
-\r
-  return ReturnStatus;\r
-}\r
-\r
-/**\r
-  Return the current video mode information.\r
-\r
-  @param  This                  The EFI_UGA_DRAW_PROTOCOL instance.\r
-  @param  HorizontalResolution  The size of video screen in pixels in the X dimension.\r
-  @param  VerticalResolution    The size of video screen in pixels in the Y dimension.\r
-  @param  ColorDepth            Number of bits per pixel, currently defined to be 32.\r
-  @param  RefreshRate           The refresh rate of the monitor in Hertz.\r
-\r
-  @retval EFI_SUCCESS           Mode information returned.\r
-  @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()\r
-  @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConSplitterUgaDrawGetMode (\r
-  IN  EFI_UGA_DRAW_PROTOCOL           *This,\r
-  OUT UINT32                          *HorizontalResolution,\r
-  OUT UINT32                          *VerticalResolution,\r
-  OUT UINT32                          *ColorDepth,\r
-  OUT UINT32                          *RefreshRate\r
-  )\r
-{\r
-  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private;\r
-\r
-  if ((HorizontalResolution == NULL) ||\r
-      (VerticalResolution   == NULL) ||\r
-      (RefreshRate          == NULL) ||\r
-      (ColorDepth           == NULL)) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-  //\r
-  // retrieve private data\r
-  //\r
-  Private               = UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
-\r
-  *HorizontalResolution = Private->UgaHorizontalResolution;\r
-  *VerticalResolution   = Private->UgaVerticalResolution;\r
-  *ColorDepth           = Private->UgaColorDepth;\r
-  *RefreshRate          = Private->UgaRefreshRate;\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-/**\r
-  Set the current video mode information.\r
-\r
-  @param  This                 The EFI_UGA_DRAW_PROTOCOL instance.\r
-  @param  HorizontalResolution The size of video screen in pixels in the X dimension.\r
-  @param  VerticalResolution   The size of video screen in pixels in the Y dimension.\r
-  @param  ColorDepth           Number of bits per pixel, currently defined to be 32.\r
-  @param  RefreshRate          The refresh rate of the monitor in Hertz.\r
-\r
-  @retval EFI_SUCCESS          Mode information returned.\r
-  @retval EFI_NOT_STARTED      Video display is not initialized. Call SetMode ()\r
-  @retval EFI_OUT_OF_RESOURCES Out of resources.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConSplitterUgaDrawSetMode (\r
-  IN  EFI_UGA_DRAW_PROTOCOL           *This,\r
-  IN UINT32                           HorizontalResolution,\r
-  IN UINT32                           VerticalResolution,\r
-  IN UINT32                           ColorDepth,\r
-  IN UINT32                           RefreshRate\r
-  )\r
-{\r
-  EFI_STATUS                             Status;\r
-  TEXT_OUT_SPLITTER_PRIVATE_DATA         *Private;\r
-  UINTN                                  Index;\r
-  EFI_STATUS                             ReturnStatus;\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL           *GraphicsOutput;\r
-  UINTN                                  NumberIndex;\r
-  UINTN                                  SizeOfInfo;\r
-  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION   *Info;\r
-  EFI_UGA_DRAW_PROTOCOL                  *UgaDraw;\r
-\r
-  Private = UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
-\r
-  ReturnStatus = EFI_SUCCESS;\r
-\r
-  //\r
-  // Update the Mode data\r
-  //\r
-  Private->UgaHorizontalResolution  = HorizontalResolution;\r
-  Private->UgaVerticalResolution    = VerticalResolution;\r
-  Private->UgaColorDepth            = ColorDepth;\r
-  Private->UgaRefreshRate           = RefreshRate;\r
-\r
-  //\r
-  // return the worst status met\r
-  //\r
-  for (Index = 0; Index < Private->CurrentNumberOfConsoles; Index++) {\r
-\r
-    GraphicsOutput = Private->TextOutList[Index].GraphicsOutput;\r
-    if (GraphicsOutput != NULL) {\r
-      //\r
-      // Find corresponding ModeNumber of this GraphicsOutput instance\r
-      //\r
-      for (NumberIndex = 0; NumberIndex < GraphicsOutput->Mode->MaxMode; NumberIndex ++) {\r
-        Status = GraphicsOutput->QueryMode (GraphicsOutput, (UINT32) NumberIndex, &SizeOfInfo, &Info);\r
-        if (EFI_ERROR (Status)) {\r
-          return Status;\r
-        }\r
-        if ((Info->HorizontalResolution == HorizontalResolution) && (Info->VerticalResolution == VerticalResolution)) {\r
-          FreePool (Info);\r
-          break;\r
-        }\r
-        FreePool (Info);\r
-      }\r
-\r
-      Status = GraphicsOutput->SetMode (GraphicsOutput, (UINT32) NumberIndex);\r
-      if (EFI_ERROR (Status)) {\r
-        ReturnStatus = Status;\r
-      }\r
-    } else if (FeaturePcdGet (PcdUgaConsumeSupport)){\r
-      UgaDraw = Private->TextOutList[Index].UgaDraw;\r
-      if (UgaDraw != NULL) {\r
-        Status = UgaDraw->SetMode (\r
-                          UgaDraw,\r
-                          HorizontalResolution,\r
-                          VerticalResolution,\r
-                          ColorDepth,\r
-                          RefreshRate\r
-                          );\r
-        if (EFI_ERROR (Status)) {\r
-          ReturnStatus = Status;\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  return ReturnStatus;\r
-}\r
-\r
-\r
-/**\r
-  Blt a rectangle of pixels on the graphics screen.\r
-\r
-  The following table defines actions for BltOperations.\r
-\r
-  EfiUgaVideoFill:\r
-    Write data from the  BltBuffer pixel (SourceX, SourceY)\r
-    directly to every pixel of the video display rectangle\r
-    (DestinationX, DestinationY)\r
-    (DestinationX + Width, DestinationY + Height).\r
-    Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
-  EfiUgaVideoToBltBuffer:\r
-    Read data from the video display rectangle\r
-    (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
-    the BltBuffer rectangle (DestinationX, DestinationY )\r
-    (DestinationX + Width, DestinationY + Height). If DestinationX or\r
-    DestinationY is not zero then Delta must be set to the length in bytes\r
-    of a row in the BltBuffer.\r
-  EfiUgaBltBufferToVideo:\r
-    Write data from the  BltBuffer rectangle\r
-    (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
-    video display rectangle (DestinationX, DestinationY)\r
-    (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
-    not zero then Delta must be set to the length in bytes of a row in the\r
-    BltBuffer.\r
-  EfiUgaVideoToVideo:\r
-    Copy from the video display rectangle\r
-    (SourceX, SourceY) (SourceX + Width, SourceY + Height) .\r
-    to the video display rectangle (DestinationX, DestinationY)\r
-    (DestinationX + Width, DestinationY + Height).\r
-    The BltBuffer and Delta  are not used in this mode.\r
-\r
-  @param  This           Protocol instance pointer.\r
-  @param  BltBuffer      Buffer containing data to blit into video buffer. This\r
-                         buffer has a size of Width*Height*sizeof(EFI_UGA_PIXEL)\r
-  @param  BltOperation   Operation to perform on BlitBuffer and video memory\r
-  @param  SourceX        X coordinate of source for the BltBuffer.\r
-  @param  SourceY        Y coordinate of source for the BltBuffer.\r
-  @param  DestinationX   X coordinate of destination for the BltBuffer.\r
-  @param  DestinationY   Y coordinate of destination for the BltBuffer.\r
-  @param  Width          Width of rectangle in BltBuffer in pixels.\r
-  @param  Height         Hight of rectangle in BltBuffer in pixels.\r
-  @param  Delta          OPTIONAL\r
-\r
-  @retval EFI_SUCCESS            The Blt operation completed.\r
-  @retval EFI_INVALID_PARAMETER  BltOperation is not valid.\r
-  @retval EFI_DEVICE_ERROR       A hardware error occured writting to the video buffer.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-ConSplitterUgaDrawBlt (\r
-  IN  EFI_UGA_DRAW_PROTOCOL                         *This,\r
-  IN  EFI_UGA_PIXEL                                 *BltBuffer, OPTIONAL\r
-  IN  EFI_UGA_BLT_OPERATION                         BltOperation,\r
-  IN  UINTN                                         SourceX,\r
-  IN  UINTN                                         SourceY,\r
-  IN  UINTN                                         DestinationX,\r
-  IN  UINTN                                         DestinationY,\r
-  IN  UINTN                                         Width,\r
-  IN  UINTN                                         Height,\r
-  IN  UINTN                                         Delta         OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS                      Status;\r
-  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private;\r
-  UINTN                           Index;\r
-  EFI_STATUS                      ReturnStatus;\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput;\r
-\r
-  Private = UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS (This);\r
-\r
-  ReturnStatus = EFI_SUCCESS;\r
-  //\r
-  // return the worst status met\r
-  //\r
-  for (Index = 0; Index < Private->CurrentNumberOfConsoles; Index++) {\r
-    GraphicsOutput = Private->TextOutList[Index].GraphicsOutput;\r
-    if (GraphicsOutput != NULL) {\r
-      Status = GraphicsOutput->Blt (\r
-                              GraphicsOutput,\r
-                              (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *) BltBuffer,\r
-                              (EFI_GRAPHICS_OUTPUT_BLT_OPERATION) BltOperation,\r
-                              SourceX,\r
-                              SourceY,\r
-                              DestinationX,\r
-                              DestinationY,\r
-                              Width,\r
-                              Height,\r
-                              Delta\r
-                              );\r
-      if (EFI_ERROR (Status)) {\r
-        ReturnStatus = Status;\r
-      } else if (BltOperation == EfiUgaVideoToBltBuffer) {\r
-        //\r
-        // Only need to read the data into buffer one time\r
-        //\r
-        return EFI_SUCCESS;\r
-      }\r
-    }\r
-\r
-    if (Private->TextOutList[Index].UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
-      Status = Private->TextOutList[Index].UgaDraw->Blt (\r
-                                                      Private->TextOutList[Index].UgaDraw,\r
-                                                      BltBuffer,\r
-                                                      BltOperation,\r
-                                                      SourceX,\r
-                                                      SourceY,\r
-                                                      DestinationX,\r
-                                                      DestinationY,\r
-                                                      Width,\r
-                                                      Height,\r
-                                                      Delta\r
-                                                      );\r
-      if (EFI_ERROR (Status)) {\r
-        ReturnStatus = Status;\r
-      } else if (BltOperation == EfiUgaVideoToBltBuffer) {\r
-        //\r
-        // Only need to read the data into buffer one time\r
-        //\r
-        return EFI_SUCCESS;\r
-      }\r
-    }\r
-  }\r
-\r
-  return ReturnStatus;\r
-}\r
-\r
-/**\r
-  Sets the output device(s) to a specified mode.\r
-\r
-  @param  Private                 Text Out Splitter pointer.\r
-  @param  ModeNumber              The mode number to set.\r
-\r
-**/\r
-VOID\r
-TextOutSetMode (\r
-  IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
-  IN  UINTN                           ModeNumber\r
-  )\r
-{\r
-  //\r
-  // No need to do extra check here as whether (Column, Row) is valid has\r
-  // been checked in ConSplitterTextOutSetCursorPosition. And (0, 0) should\r
-  // always be supported.\r
-  //\r
-  Private->TextOutMode.Mode          = (INT32) ModeNumber;\r
-  Private->TextOutMode.CursorColumn  = 0;\r
-  Private->TextOutMode.CursorRow     = 0;\r
-  Private->TextOutMode.CursorVisible = TRUE;\r
-\r
-  return;\r
-}\r