#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
// 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
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
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
Height,\r
Width * sizeof (EFI_UGA_PIXEL)\r
);\r
+ } else {\r
+ Status = EFI_UNSUPPORTED;\r
}\r
}\r
\r
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
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
GLYPH_HEIGHT,\r
BufferGlyphWidth * sizeof (EFI_UGA_PIXEL)\r
);\r
+ } else {\r
+ Status = EFI_UNSUPPORTED;\r
}\r
\r
Error:\r
(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
&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
gEfiFirmwareVolume2ProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
gEfiOEMBadgingProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
\r
+[FeaturePcd.common]\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdUgaConsumeSupport\r
#include <Library/DebugLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/DxePiLib.h>\r
+#include <Library/PcdLib.h>\r
\r
STATIC EFI_GRAPHICS_OUTPUT_BLT_PIXEL mEfiColors[16] = {\r
{ 0x00, 0x00, 0x00, 0x00 },\r
\r
ImageHandle - The driver image handle of the caller. The parameter is used to\r
optimize the loading of the image file so that the FV from which\r
- the driver image is loaded will be tried first. \r
+ the driver image is loaded will be tried first.\r
\r
FileNameGuid - File Name of graphics file in the FV(s).\r
\r
- Image - Pointer to pointer to return graphics image. If NULL, a \r
+ Image - Pointer to pointer to return graphics image. If NULL, a\r
buffer will be allocated.\r
\r
ImageSize - Size of the graphics Image in bytes. Zero if no image found.\r
\r
\r
-Returns: \r
+Returns:\r
\r
- EFI_SUCCESS - Image and ImageSize are valid. \r
+ EFI_SUCCESS - Image and ImageSize are valid.\r
EFI_BUFFER_TOO_SMALL - Image not big enough. ImageSize has required size\r
EFI_NOT_FOUND - FileNameGuid not found\r
\r
LogoFile - File name of logo to display on the center of the screen.\r
\r
\r
-Returns: \r
+Returns:\r
\r
EFI_SUCCESS - ConsoleControl has been flipped to graphics and logo\r
displayed.\r
the driver image is loaded will be tried first.\r
\r
\r
-Returns: \r
+Returns:\r
\r
EFI_SUCCESS - ConsoleControl has been flipped to graphics and logo\r
displayed.\r
// 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
+ // Open GOP failed, try to open UGwhA\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
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
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
_IPrint (\r
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
IN EFI_UGA_DRAW_PROTOCOL *UgaDraw,\r
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *Sto,\r
+ IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *Sto,\r
IN UINTN X,\r
IN UINTN Y,\r
IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Foreground,\r
GraphicsOutput - Graphics output protocol interface\r
\r
UgaDraw - UGA draw protocol interface\r
- \r
+\r
Sto - Simple text out protocol interface\r
- \r
+\r
X - X coordinate to start printing\r
- \r
+\r
Y - Y coordinate to start printing\r
- \r
+\r
Foreground - Foreground color\r
- \r
+\r
Background - Background color\r
- \r
+\r
fmt - Format string\r
- \r
+\r
args - Print arguments\r
\r
-Returns: \r
+Returns:\r
\r
EFI_SUCCESS - success\r
EFI_OUT_OF_RESOURCES - out of resources\r
UINTN LineBufferLen;\r
EFI_HII_FONT_PROTOCOL *HiiFont;\r
EFI_IMAGE_OUTPUT *Blt;\r
- EFI_FONT_DISPLAY_INFO *FontInfo; \r
+ EFI_FONT_DISPLAY_INFO *FontInfo;\r
\r
//\r
// For now, allocate an arbitrarily long buffer\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
+ HorizontalResolution = 0;\r
+ VerticalResolution = 0;\r
+ Blt = NULL;\r
+ FontInfo = NULL;\r
+\r
if (GraphicsOutput != NULL) {\r
HorizontalResolution = GraphicsOutput->Mode->Info->HorizontalResolution;\r
VerticalResolution = GraphicsOutput->Mode->Info->VerticalResolution;\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
UgaDraw->GetMode (UgaDraw, &HorizontalResolution, &VerticalResolution, &ColorDepth, &RefreshRate);\r
+ } else {\r
+ Status = EFI_UNSUPPORTED;\r
+ goto Error;\r
}\r
- ASSERT ((HorizontalResolution != 0) && (VerticalResolution !=0)); \r
\r
- Blt = NULL;\r
- FontInfo = NULL;\r
+ ASSERT ((HorizontalResolution != 0) && (VerticalResolution !=0));\r
+\r
ASSERT (GraphicsOutput != NULL);\r
Status = gBS->LocateProtocol (&gEfiHiiFontProtocolGuid, NULL, (VOID **) &HiiFont);\r
if (EFI_ERROR (Status)) {\r
goto Error;\r
- } \r
+ }\r
\r
UnicodeVSPrint (Buffer, 0x10000, fmt, args);\r
- \r
+\r
UnicodeWeight = (CHAR16 *) Buffer;\r
\r
for (Index = 0; UnicodeWeight[Index] != 0; Index++) {\r
}\r
\r
BufferLen = StrLen (Buffer);\r
- \r
+\r
\r
LineBufferLen = sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) * HorizontalResolution * EFI_GLYPH_HEIGHT;\r
if (EFI_GLYPH_WIDTH * EFI_GLYPH_HEIGHT * sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL) * BufferLen > LineBufferLen) {\r
Blt->Width = (UINT16) (HorizontalResolution);\r
Blt->Height = (UINT16) (VerticalResolution);\r
Blt->Image.Screen = GraphicsOutput;\r
- \r
+\r
FontInfo = (EFI_FONT_DISPLAY_INFO *) AllocateZeroPool (sizeof (EFI_FONT_DISPLAY_INFO));\r
if (FontInfo == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
CopyMem (&FontInfo->ForegroundColor, Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));\r
} else {\r
CopyMem (\r
- &FontInfo->ForegroundColor, \r
- &mEfiColors[Sto->Mode->Attribute & 0x0f], \r
+ &FontInfo->ForegroundColor,\r
+ &mEfiColors[Sto->Mode->Attribute & 0x0f],\r
sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
);\r
}\r
CopyMem (&FontInfo->BackgroundColor, Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));\r
} else {\r
CopyMem (\r
- &FontInfo->BackgroundColor, \r
- &mEfiColors[Sto->Mode->Attribute >> 4], \r
+ &FontInfo->BackgroundColor,\r
+ &mEfiColors[Sto->Mode->Attribute >> 4],\r
sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
);\r
}\r
NULL,\r
NULL\r
);\r
- \r
+\r
\r
Error:\r
SafeFreePool (Blt);\r
Arguments:\r
\r
X - X coordinate to start printing\r
- \r
+\r
Y - Y coordinate to start printing\r
- \r
+\r
ForeGround - Foreground color\r
- \r
+\r
BackGround - Background color\r
\r
Fmt - Format string\r
);\r
\r
UgaDraw = NULL;\r
- if (EFI_ERROR (Status)) {\r
+ if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
GraphicsOutput = NULL;\r
\r
Status = gBS->HandleProtocol (\r
&gEfiUgaDrawProtocolGuid,\r
(VOID**)&UgaDraw\r
);\r
-\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
+ }\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
}\r
\r
Status = gBS->HandleProtocol (\r
gEfiGraphicsOutputProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
gEfiUgaDrawProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
gEfiConsoleControlProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
- gEfiFirmwareVolume2ProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
+ gEfiFirmwareVolume2ProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
gEfiOEMBadgingProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
- gEfiHiiFontProtocolGuid # PROTOCOL ALWAYS_CONSUMED
\ No newline at end of file
+ gEfiHiiFontProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
+\r
+[FeaturePcd.common]\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdUgaConsumeSupport
\ No newline at end of file
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE|BOOLEAN|0x00010042\r
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|TRUE|BOOLEAN|0x00010043\r
gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSectionFirst|TRUE|BOOLEAN|0x00010044\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdSupportHardwareErrorRecord|FALSE|BOOLEAN|0x00010044\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSupportHardwareErrorRecord|FALSE|BOOLEAN|0x00010045\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdUgaConsumeSupport|TRUE|BOOLEAN|0x00010046\r
\r
[PcdsFixedAtBuild.common]\r
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPcdCallBackNumberPerPcdEntry|0x08|UINT32|0x0001000f\r
# N/A\r
# Copyright (c) 2008, Intel Corporation\r
#\r
-# All rights reserved. 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
+# All rights reserved. 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
gEfiMemorySubClassGuid\r
gEfiProcessorSubClassGuid\r
gEfiCapsuleVendorGuid\r
- \r
+\r
[Protocols]\r
gEfiHiiStringProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
gEfiSimpleFileSystemProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
gEfiSerialIoProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
gEfiDevicePathProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
gEfiAcpiS3SaveProtocolGuid\r
- \r
+\r
[FeaturePcd.common]\r
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDepricate\r
gEfiMdeModulePkgTokenSpaceGuid.PcdSupportHardwareErrorRecord\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdUgaConsumeSupport\r
\r
[Pcd.common]\r
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangCodes\r
&gEfiGraphicsOutputProtocolGuid,\r
(VOID **) &GraphicsOutput\r
);\r
- if (EFI_ERROR (Status)) {\r
+ if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
GraphicsOutput = NULL;\r
\r
Status = gBS->HandleProtocol (\r
&gEfiUgaDrawProtocolGuid,\r
(VOID **) &UgaDraw\r
);\r
- if (EFI_ERROR (Status)) {\r
- return EFI_UNSUPPORTED;\r
- }\r
+ }\r
+ if (EFI_ERROR (Status)) {\r
+ return EFI_UNSUPPORTED;\r
}\r
\r
+ SizeOfX = 0;\r
+ SizeOfY = 0;\r
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 (\r
UgaDraw,\r
&SizeOfX,\r
if (EFI_ERROR (Status)) {\r
return EFI_UNSUPPORTED;\r
}\r
+ } else {\r
+ return EFI_UNSUPPORTED;\r
}\r
\r
BlockWidth = SizeOfX / 100;\r
SizeOfY - (PosY - GLYPH_HEIGHT - 1),\r
SizeOfX * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
);\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Status = UgaDraw->Blt (\r
UgaDraw,\r
(EFI_UGA_PIXEL *) &Color,\r
BlockHeight,\r
(BlockWidth) * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
);\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Status = UgaDraw->Blt (\r
UgaDraw,\r
(EFI_UGA_PIXEL *) &ProgressColor,\r
//\r
// When new console device is added, the new mode will be set later,\r
// so put current mode back to init state.\r
- // \r
+ //\r
ConOutPrivate->TextOutMode.Mode = 0xFF;\r
\r
Status = ConSplitterGrowBuffer (\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
+ GraphicsOutput = NULL;\r
+ UgaDraw = NULL;\r
//\r
// Try to Open Graphics Output protocol\r
//\r
mConOut.VirtualHandle,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
);\r
- if (EFI_ERROR (Status)) {\r
- GraphicsOutput = NULL;\r
- }\r
- //\r
- // Open UGA_DRAW protocol\r
- //\r
- Status = gBS->OpenProtocol (\r
- ControllerHandle,\r
- &gEfiUgaDrawProtocolGuid,\r
- (VOID **) &UgaDraw,\r
- This->DriverBindingHandle,\r
- mConOut.VirtualHandle,\r
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
- if (EFI_ERROR (Status)) {\r
- UgaDraw = NULL;\r
+\r
+ if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
+ //\r
+ // Open UGA_DRAW protocol\r
+ //\r
+ Status = gBS->OpenProtocol (\r
+ ControllerHandle,\r
+ &gEfiUgaDrawProtocolGuid,\r
+ (VOID **) &UgaDraw,\r
+ This->DriverBindingHandle,\r
+ mConOut.VirtualHandle,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
}\r
\r
//\r
// so put current mode back to init state.\r
//\r
mConOut.TextOutMode.Mode = 0xFF;\r
- \r
+\r
//\r
// If both ConOut and StdErr incorporate the same Text Out device,\r
// their MaxMode and QueryData should be the intersection of both.\r
Status = ConSplitterTextOutAddDevice (&mConOut, TextOut, GraphicsOutput, UgaDraw);\r
ConSplitterTextOutSetAttribute (&mConOut.TextOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));\r
\r
- if (FeaturePcdGet (PcdConOutUgaSupport)) {\r
+ if (FeaturePcdGet (PcdConOutUgaSupport) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
//\r
// Match the UGA mode data of ConOut with the current mode\r
//\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
- \r
+\r
//\r
// When new console device is added, the new mode will be set later,\r
// so put current mode back to init state.\r
//\r
mStdErr.TextOutMode.Mode = 0xFF;\r
- \r
+\r
//\r
// If both ConOut and StdErr incorporate the same Text Out device,\r
// their MaxMode and QueryData should be the intersection of both.\r
}\r
}\r
}\r
- if (UgaDraw != NULL) {\r
+ if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
//\r
// Graphics console driver can ensure the same mode for all GOP devices\r
// so we can get the current mode from this video device\r
if (GraphicsOutput != NULL) {\r
Private->CurrentNumberOfGraphicsOutput++;\r
}\r
- if (UgaDraw != NULL) {\r
+ if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Private->CurrentNumberOfUgaDraw++;\r
}\r
\r
\r
None\r
\r
---*/ \r
+--*/\r
{\r
UINTN Col;\r
UINTN Row;\r
EFI_STATUS Status;\r
CONSOLE_OUT_MODE *ModeInfo;\r
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;\r
- \r
+\r
PreferMode = 0xFF;\r
BaseMode = 0xFF;\r
TextOut = &Private->TextOut;\r
);\r
\r
//\r
- // Set to the default mode 80 x 25 required by EFI/UEFI spec; \r
+ // Set to the default mode 80 x 25 required by EFI/UEFI spec;\r
// user can also define other valid default console mode here.\r
- // \r
+ //\r
if (EFI_ERROR(Status)) {\r
ModeInfo->Column = 80;\r
ModeInfo->Row = 25;\r
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
sizeof (CONSOLE_OUT_MODE),\r
ModeInfo\r
- ); \r
+ );\r
}\r
- \r
+\r
for (Mode = 0; Mode < MaxMode; Mode++) {\r
Status = TextOut->QueryMode (TextOut, Mode, &Col, &Row);\r
if (!EFI_ERROR(Status)) {\r
}\r
}\r
}\r
- \r
+\r
Status = TextOut->SetMode (TextOut, PreferMode);\r
- \r
+\r
//\r
// if current mode setting is failed, default 80x25 mode will be set.\r
//\r
if (EFI_ERROR(Status)) {\r
Status = TextOut->SetMode (TextOut, BaseMode);\r
ASSERT(!EFI_ERROR(Status));\r
- \r
+\r
ModeInfo->Column = 80;\r
ModeInfo->Row = 25;\r
- \r
+\r
//\r
// Update ConOutMode variable\r
//\r
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,\r
sizeof (CONSOLE_OUT_MODE),\r
ModeInfo\r
- ); \r
+ );\r
}\r
\r
gBS->FreePool (ModeInfo);\r
}\r
}\r
if (FeaturePcdGet (PcdConOutUgaSupport)) {\r
- if (UgaDraw != NULL) {\r
+ if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Status = UgaDraw->GetMode (\r
UgaDraw,\r
&UgaHorizontalResolution,\r
}\r
\r
//\r
- // After adding new console device, all existing console devices should be \r
+ // After adding new console device, all existing console devices should be\r
// synced to the current shared mode.\r
//\r
ConsplitterSetConsoleOutMode (Private);\r
if (TextOutList->TextOut == TextOut) {\r
CopyMem (TextOutList, TextOutList + 1, sizeof (TEXT_OUT_AND_GOP_DATA) * Index);\r
CurrentNumOfConsoles--;\r
- if (TextOutList->UgaDraw != NULL) {\r
+ if (TextOutList->UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Private->CurrentNumberOfUgaDraw--;\r
}\r
if (TextOutList->GraphicsOutput != NULL) {\r
[FeaturePcd.common]\r
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport\r
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdUgaConsumeSupport\r
}\r
}\r
\r
- if (EFI_ERROR (ReturnStatus)) {\r
+ if (EFI_ERROR (ReturnStatus) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
UgaDraw = Private->TextOutList[Index].UgaDraw;\r
if (UgaDraw != NULL) {\r
Status = UgaDraw->SetMode (\r
}\r
\r
UgaDraw = Private->TextOutList[Index].UgaDraw;\r
- if (UgaDraw != NULL) {\r
+ if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Status = UgaDraw->Blt (\r
UgaDraw,\r
(EFI_UGA_PIXEL *) BltBuffer,\r
Private->GraphicsOutput.Mode->Info->VerticalResolution,\r
0\r
);\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
return UgaDraw->Blt (\r
UgaDraw,\r
(EFI_UGA_PIXEL *) Private->GraphicsOutputBlt,\r
Private->GraphicsOutput.Mode->Info->VerticalResolution,\r
0\r
);\r
+ } else {\r
+ return EFI_UNSUPPORTED;\r
}\r
}\r
\r
// return the worst status met\r
//\r
for (Index = 0; Index < Private->CurrentNumberOfConsoles; Index++) {\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
+ ReturnStatus = EFI_UNSUPPORTED;\r
+\r
+ if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
+ UgaDraw = Private->TextOutList[Index].UgaDraw;\r
+ if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\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
}\r
\r
- if (Private->TextOutList[Index].UgaDraw != NULL) {\r
+ if (Private->TextOutList[Index].UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Status = Private->TextOutList[Index].UgaDraw->Blt (\r
Private->TextOutList[Index].UgaDraw,\r
BltBuffer,\r
IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
)\r
{\r
- if (UgaDraw != NULL) {\r
+ if (UgaDraw != NULL && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
return UgaDraw->Blt (\r
UgaDraw,\r
Private->UgaBlt,\r
Private->UgaVerticalResolution,\r
Private->UgaHorizontalResolution * sizeof (EFI_UGA_PIXEL)\r
);\r
- } else {\r
+ } else if (GraphicsOutput != NULL) {\r
return GraphicsOutput->Blt (\r
GraphicsOutput,\r
(EFI_GRAPHICS_OUTPUT_BLT_PIXEL *) Private->UgaBlt,\r
Private->UgaVerticalResolution,\r
0\r
);\r
+ } else {\r
+ return EFI_UNSUPPORTED;\r
}\r
}\r
\r
Implement optimal automatic Mode creation algorithm\r
Solve palette issues for mixed graphics and text\r
When does this protocol reset the palette?\r
- \r
+\r
Copyright (c) 2006 - 2007 Intel Corporation. <BR>\r
-All rights reserved. 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
+All rights reserved. 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
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
- EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
\r
- UgaDraw = NULL;\r
+ GraphicsOutput = NULL;\r
+ UgaDraw = NULL;\r
//\r
// Open the IO Abstraction(s) needed to perform the supported test\r
//\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
);\r
- \r
- if (EFI_ERROR (Status)) {\r
- GraphicsOutput = NULL;\r
+\r
+ if (EFI_ERROR (Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
//\r
// Open Graphics Output Protocol failed, try to open UGA Draw Protocol\r
//\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
+ }\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
}\r
\r
//\r
This->DriverBindingHandle,\r
Controller\r
);\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
gBS->CloseProtocol (\r
Controller,\r
&gEfiUgaDrawProtocolGuid,\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
);\r
- if (EFI_ERROR(Status)) {\r
- Private->GraphicsOutput = NULL;\r
\r
+ if (EFI_ERROR(Status) && FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiUgaDrawProtocolGuid,\r
Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
);\r
- if (EFI_ERROR (Status)) {\r
- goto Error;\r
- }\r
+ }\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ goto Error;\r
}\r
\r
NarrowFontSize = ReturnNarrowFontSize ();\r
SimplifiedFont->Header.Length = (UINT32) (PackageLength - 4);\r
SimplifiedFont->Header.Type = EFI_HII_PACKAGE_SIMPLE_FONTS;\r
SimplifiedFont->NumberOfNarrowGlyphs = (UINT16) (NarrowFontSize / sizeof (EFI_NARROW_GLYPH));\r
- \r
+\r
Location = (UINT8 *) (&SimplifiedFont->NumberOfWideGlyphs + 1);\r
CopyMem (Location, UsStdNarrowGlyphData, NarrowFontSize);\r
- \r
+\r
//\r
// Add this simplified font package to a package list then install it.\r
//\r
Status = mHiiDatabase->NewPackageList (mHiiDatabase, PackageList, NULL, &(Private->HiiHandle));\r
ASSERT_EFI_ERROR (Status);\r
SafeFreePool (PackageList);\r
- SafeFreePool (Package); \r
+ SafeFreePool (Package);\r
\r
mFirstAccessFlag = FALSE;\r
}\r
\r
if (Private->GraphicsOutput != NULL) {\r
//\r
- // The console is build on top of Graphics Output Protocol, find the mode number \r
+ // The console is build on top of Graphics Output Protocol, find the mode number\r
// for the user-defined mode; if there are multiple video devices,\r
// graphic console driver will set all the video devices to the same mode.\r
//\r
Status = CheckModeSupported (\r
- Private->GraphicsOutput, \r
- CURRENT_HORIZONTAL_RESOLUTION, \r
+ Private->GraphicsOutput,\r
+ CURRENT_HORIZONTAL_RESOLUTION,\r
CURRENT_VERTICAL_RESOLUTION,\r
&ModeNumber\r
);\r
// if not supporting current mode, try 800x600 which is required by UEFI/EFI spec\r
//\r
Status = CheckModeSupported (\r
- Private->GraphicsOutput, \r
- 800, \r
- 600, \r
+ Private->GraphicsOutput,\r
+ 800,\r
+ 600,\r
&ModeNumber\r
);\r
}\r
VerticalResolution = Private->GraphicsOutput->Mode->Info->VerticalResolution;\r
ModeNumber = Private->GraphicsOutput->Mode->Mode;\r
}\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
//\r
// At first try to set user-defined resolution\r
//\r
if (!EFI_ERROR (Status)) {\r
HorizontalResolution = CURRENT_HORIZONTAL_RESOLUTION;\r
VerticalResolution = CURRENT_VERTICAL_RESOLUTION;\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
//\r
// Try to set 800*600 which is required by UEFI/EFI spec\r
//\r
Private->ModeData[MaxMode].DeltaY = 0;\r
MaxMode++;\r
}\r
- \r
+\r
//\r
// Add Mode #2 that must be 100x31 (graphic mode >= 800x600)\r
//\r
- if (Columns >= 100 && Rows >= 31) { \r
+ if (Columns >= 100 && Rows >= 31) {\r
Private->ModeData[MaxMode].GopWidth = HorizontalResolution;\r
Private->ModeData[MaxMode].GopHeight = VerticalResolution;\r
Private->ModeData[MaxMode].GopModeNumber = ModeNumber;\r
//\r
if (HorizontalResolution > 800 && VerticalResolution > 600) {\r
Private->ModeData[MaxMode].Columns = HorizontalResolution/GLYPH_WIDTH;\r
- Private->ModeData[MaxMode].Rows = VerticalResolution/GLYPH_HEIGHT; \r
+ Private->ModeData[MaxMode].Rows = VerticalResolution/GLYPH_HEIGHT;\r
Private->ModeData[MaxMode].GopWidth = HorizontalResolution;\r
Private->ModeData[MaxMode].GopHeight = VerticalResolution;\r
Private->ModeData[MaxMode].GopModeNumber = ModeNumber;\r
Private->ModeData[MaxMode].DeltaY = (VerticalResolution % GLYPH_HEIGHT) >> 1;\r
MaxMode++;\r
}\r
- \r
+\r
//\r
// Update the maximum number of modes\r
//\r
This->DriverBindingHandle,\r
Controller\r
);\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
gBS->CloseProtocol (\r
Controller,\r
&gEfiUgaDrawProtocolGuid,\r
This->DriverBindingHandle,\r
Controller\r
);\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
gBS->CloseProtocol (\r
Controller,\r
&gEfiUgaDrawProtocolGuid,\r
{\r
UINT32 ModeNumber;\r
EFI_STATUS Status;\r
- UINTN SizeOfInfo; \r
+ UINTN SizeOfInfo;\r
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;\r
- \r
+\r
Status = EFI_SUCCESS;\r
- \r
+\r
for (ModeNumber = 0; ModeNumber < GraphicsOutput->Mode->MaxMode; ModeNumber++) {\r
Status = GraphicsOutput->QueryMode (\r
GraphicsOutput,\r
gBS->FreePool (Info);\r
}\r
}\r
- \r
+\r
if (ModeNumber == GraphicsOutput->Mode->MaxMode) {\r
Status = EFI_UNSUPPORTED;\r
}\r
- \r
+\r
*CurrentModeNumber = ModeNumber;\r
- return Status; \r
+ return Status;\r
}\r
\r
EFI_STATUS\r
)\r
/*++\r
Routine Description:\r
- \r
+\r
Implements SIMPLE_TEXT_OUTPUT.Reset().\r
- If ExtendeVerification is TRUE, then perform dependent Graphics Console \r
+ If ExtendeVerification is TRUE, then perform dependent Graphics Console\r
device reset, and set display mode to mode 0.\r
If ExtendedVerification is FALSE, only set display mode to mode 0.\r
- \r
+\r
Arguments:\r
- \r
+\r
This - Indicates the calling context.\r
- \r
+\r
ExtendedVerification - Indicates that the driver may perform a more exhaustive\r
verification operation of the device during reset.\r
- \r
+\r
Returns:\r
- \r
+\r
EFI_SUCCESS\r
- The reset operation succeeds. \r
- \r
+ The reset operation succeeds.\r
+\r
EFI_DEVICE_ERROR\r
- The Graphics Console is not functioning correctly \r
- \r
+ The Graphics Console is not functioning correctly\r
+\r
--*/\r
{\r
This->SetAttribute (This, EFI_TEXT_ATTR (This->Mode->Attribute & 0x0F, EFI_BACKGROUND_BLACK));\r
)\r
/*++\r
Routine Description:\r
- \r
+\r
Implements SIMPLE_TEXT_OUTPUT.OutputString().\r
- The Unicode string will be converted to Glyphs and will be \r
+ The Unicode string will be converted to Glyphs and will be\r
sent to the Graphics Console.\r
- \r
- \r
+\r
+\r
Arguments:\r
- \r
+\r
This - Indicates the calling context.\r
- \r
- WString - The Null-terminated Unicode string to be displayed on \r
+\r
+ WString - The Null-terminated Unicode string to be displayed on\r
the Graphics Console.\r
- \r
+\r
Returns:\r
- \r
+\r
EFI_SUCCESS\r
- The string is output successfully. \r
- \r
+ The string is output successfully.\r
+\r
EFI_DEVICE_ERROR\r
The Graphics Console failed to send the string out.\r
- \r
+\r
EFI_WARN_UNKNOWN_GLYPH\r
- Indicates that some of the characters in the Unicode string could not \r
- be rendered and are skipped. \r
- \r
+ Indicates that some of the characters in the Unicode string could not\r
+ be rendered and are skipped.\r
+\r
--*/\r
{\r
GRAPHICS_CONSOLE_DEV *Private;\r
GLYPH_HEIGHT,\r
Delta\r
);\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
//\r
// Scroll Screen Up One Row\r
//\r
)\r
/*++\r
Routine Description:\r
- \r
+\r
Implements SIMPLE_TEXT_OUTPUT.TestString().\r
If one of the characters in the *Wstring is\r
neither valid valid Unicode drawing characters,\r
not ASCII code, then this function will return\r
EFI_UNSUPPORTED.\r
- \r
- \r
+\r
+\r
Arguments:\r
- \r
+\r
This - Indicates the calling context.\r
- \r
+\r
WString - The Null-terminated Unicode string to be tested.\r
- \r
+\r
Returns:\r
- \r
+\r
EFI_SUCCESS\r
- The Graphics Console is capable of rendering the output string. \r
- \r
+ The Graphics Console is capable of rendering the output string.\r
+\r
EFI_UNSUPPORTED\r
- Some of the characters in the Unicode string cannot be rendered. \r
- \r
+ Some of the characters in the Unicode string cannot be rendered.\r
+\r
--*/\r
{\r
EFI_STATUS Status;\r
)\r
/*++\r
Routine Description:\r
- \r
+\r
Implements SIMPLE_TEXT_OUTPUT.QueryMode().\r
It returnes information for an available text mode\r
that the Graphics Console supports.\r
In this driver,we only support text mode 80x25, which is\r
defined as mode 0.\r
- \r
- \r
+\r
+\r
Arguments:\r
- \r
+\r
This - Indicates the calling context.\r
- \r
+\r
ModeNumber - The mode number to return information on.\r
- \r
+\r
Columns - The returned columns of the requested mode.\r
- \r
- Rows - The returned rows of the requested mode. \r
- \r
+\r
+ Rows - The returned rows of the requested mode.\r
+\r
Returns:\r
- \r
+\r
EFI_SUCCESS\r
- The requested mode information is returned. \r
- \r
+ The requested mode information is returned.\r
+\r
EFI_UNSUPPORTED\r
- The mode number is not valid. \r
- \r
+ The mode number is not valid.\r
+\r
--*/\r
{\r
GRAPHICS_CONSOLE_DEV *Private;\r
EFI_STATUS Status;\r
EFI_TPL OldTpl;\r
- \r
+\r
if (ModeNumber >= (UINTN) This->Mode->MaxMode) {\r
return EFI_UNSUPPORTED;\r
}\r
\r
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
Status = EFI_SUCCESS;\r
- \r
+\r
Private = GRAPHICS_CONSOLE_CON_OUT_DEV_FROM_THIS (This);\r
\r
*Columns = Private->ModeData[ModeNumber].Columns;\r
)\r
/*++\r
Routine Description:\r
- \r
+\r
Implements SIMPLE_TEXT_OUTPUT.SetMode().\r
Set the Graphics Console to a specified mode.\r
- In this driver, we only support mode 0. \r
- \r
+ In this driver, we only support mode 0.\r
+\r
Arguments:\r
- \r
+\r
This - Indicates the calling context.\r
- \r
+\r
ModeNumber - The text mode to set.\r
- \r
+\r
Returns:\r
- \r
+\r
EFI_SUCCESS\r
The requested text mode is set.\r
- \r
+\r
EFI_DEVICE_ERROR\r
The requested text mode cannot be set because of Graphics Console device error.\r
- \r
+\r
EFI_UNSUPPORTED\r
- The text mode number is not valid. \r
- \r
+ The text mode number is not valid.\r
+\r
--*/\r
{\r
EFI_STATUS Status;\r
0\r
);\r
}\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
//\r
// Get the current UGA Draw mode information\r
//\r
)\r
/*++\r
Routine Description:\r
- \r
- Implements SIMPLE_TEXT_OUTPUT.SetAttribute(). \r
- \r
+\r
+ Implements SIMPLE_TEXT_OUTPUT.SetAttribute().\r
+\r
Arguments:\r
- \r
+\r
This - Indicates the calling context.\r
- \r
+\r
Attrubute - The attribute to set. Only bit0..6 are valid, all other bits\r
are undefined and must be zero.\r
- \r
+\r
Returns:\r
- \r
+\r
EFI_SUCCESS\r
- The requested attribute is set. \r
- \r
+ The requested attribute is set.\r
+\r
EFI_DEVICE_ERROR\r
The requested attribute cannot be set due to Graphics Console port error.\r
- \r
+\r
EFI_UNSUPPORTED\r
- The attribute requested is not defined by EFI spec. \r
- \r
+ The attribute requested is not defined by EFI spec.\r
+\r
--*/\r
{\r
EFI_TPL OldTpl;\r
- \r
+\r
if ((Attribute | 0xFF) != 0xFF) {\r
return EFI_UNSUPPORTED;\r
}\r
)\r
/*++\r
Routine Description:\r
- \r
+\r
Implements SIMPLE_TEXT_OUTPUT.ClearScreen().\r
- It clears the Graphics Console's display to the \r
+ It clears the Graphics Console's display to the\r
currently selected background color.\r
- \r
- \r
+\r
+\r
Arguments:\r
- \r
+\r
This - Indicates the calling context.\r
\r
Returns:\r
- \r
+\r
EFI_SUCCESS\r
The operation completed successfully.\r
- \r
+\r
EFI_DEVICE_ERROR\r
- The Graphics Console cannot be cleared due to Graphics Console device error. \r
- \r
+ The Graphics Console cannot be cleared due to Graphics Console device error.\r
+\r
EFI_UNSUPPORTED\r
- The Graphics Console is not in a valid text mode. \r
- \r
+ The Graphics Console is not in a valid text mode.\r
+\r
--*/\r
{\r
EFI_STATUS Status;\r
ModeData->GopHeight,\r
0\r
);\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
Status = UgaDraw->Blt (\r
UgaDraw,\r
(EFI_UGA_PIXEL *) (UINTN) &Background,\r
ModeData->GopHeight,\r
0\r
);\r
+ } else {\r
+ Status = EFI_UNSUPPORTED;\r
}\r
\r
This->Mode->CursorColumn = 0;\r
)\r
/*++\r
Routine Description:\r
- \r
- Implements SIMPLE_TEXT_OUTPUT.SetCursorPosition(). \r
- \r
+\r
+ Implements SIMPLE_TEXT_OUTPUT.SetCursorPosition().\r
+\r
Arguments:\r
- \r
+\r
This - Indicates the calling context.\r
- \r
+\r
Column - The row to set cursor to.\r
- \r
- Row - The column to set cursor to. \r
+\r
+ Row - The column to set cursor to.\r
\r
Returns:\r
- \r
+\r
EFI_SUCCESS\r
The operation completed successfully.\r
- \r
+\r
EFI_DEVICE_ERROR\r
- The request fails due to Graphics Console device error. \r
- \r
+ The request fails due to Graphics Console device error.\r
+\r
EFI_UNSUPPORTED\r
The Graphics Console is not in a valid text mode, or the cursor position\r
- is invalid for current mode. \r
- \r
+ is invalid for current mode.\r
+\r
--*/\r
{\r
GRAPHICS_CONSOLE_DEV *Private;\r
)\r
/*++\r
Routine Description:\r
- \r
+\r
Implements SIMPLE_TEXT_OUTPUT.EnableCursor().\r
- In this driver, the cursor cannot be hidden. \r
- \r
+ In this driver, the cursor cannot be hidden.\r
+\r
Arguments:\r
- \r
+\r
This - Indicates the calling context.\r
- \r
+\r
Visible - If TRUE, the cursor is set to be visible,\r
- If FALSE, the cursor is set to be invisible. \r
+ If FALSE, the cursor is set to be invisible.\r
\r
Returns:\r
- \r
+\r
EFI_SUCCESS\r
The request is valid.\r
- \r
+\r
EFI_UNSUPPORTED\r
- The Graphics Console does not support a hidden cursor. \r
- \r
+ The Graphics Console does not support a hidden cursor.\r
+\r
--*/\r
{\r
EFI_TPL OldTpl;\r
- \r
+\r
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
- \r
+\r
EraseCursor (This);\r
\r
This->Mode->CursorVisible = Visible;\r
NULL\r
);\r
\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
ASSERT (Private->UgaDraw!= NULL);\r
\r
UgaDraw = Private->UgaDraw;\r
// always be 1. ASSERT here to make sure.\r
//\r
ASSERT (RowInfoArraySize == 1);\r
- \r
+\r
Status = UgaDraw->Blt (\r
UgaDraw,\r
(EFI_UGA_PIXEL *) Blt->Image.Bitmap,\r
\r
SafeFreePool (RowInfoArray);\r
SafeFreePool (Blt->Image.Bitmap);\r
+ } else {\r
+ Status = EFI_UNSUPPORTED;\r
}\r
\r
SafeFreePool (Blt);\r
GLYPH_HEIGHT,\r
GLYPH_WIDTH * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
);\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
UgaDraw->Blt (\r
UgaDraw,\r
(EFI_UGA_PIXEL *) (UINTN) BltChar,\r
GLYPH_HEIGHT,\r
GLYPH_WIDTH * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
);\r
- } else {\r
+ } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
UgaDraw->Blt (\r
UgaDraw,\r
(EFI_UGA_PIXEL *) (UINTN) BltChar,\r
/**\r
The user Entry Point for module GraphicsConsole. The user code starts with this function.\r
\r
- @param[in] ImageHandle The firmware allocated handle for the EFI image. \r
+ @param[in] ImageHandle The firmware allocated handle for the EFI image.\r
@param[in] SystemTable A pointer to the EFI System Table.\r
- \r
+\r
@retval EFI_SUCCESS The entry point is executed successfully.\r
@retval other Some error occurs when executing this entry point.\r
\r
/*++\r
\r
-Copyright (c) 2006 - 2008, Intel Corporation \r
-All rights reserved. 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
+Copyright (c) 2006 - 2008, Intel Corporation\r
+All rights reserved. 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
Module Name:\r
\r
\r
Abstract:\r
\r
- \r
+\r
Revision History\r
\r
--*/\r
#define _GRAPHICS_CONSOLE_H\r
\r
#include <PiDxe.h>\r
-//#include <Protocol/FrameworkHii.h>\r
#include <Protocol/SimpleTextOut.h>\r
#include <Protocol/GraphicsOutput.h>\r
#include <Protocol/UgaDraw.h>\r
#include <Library/DebugLib.h>\r
#include <Library/UefiDriverEntryPoint.h>\r
#include <Library/UefiLib.h>\r
-//#include <Library/FrameworkHiiLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/MemoryAllocationLib.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
#include <Library/HiiLib.h>\r
#include <Library/BaseLib.h>\r
+#include <Library/PcdLib.h>\r
\r
#include <MdeModuleHii.h>\r
\r
gEfiUgaDrawProtocolGuid # PROTOCOL TO_START\r
gEfiHiiFontProtocolGuid\r
gEfiHiiDatabaseProtocolGuid\r
-
\ No newline at end of file
+\r
+[FeaturePcd.common]\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdUgaConsumeSupport
\ No newline at end of file