#include "Gop.h"\r
#include <Library/FrameBufferBltLib.h>\r
\r
+EFI_EVENT mGopScreenExitBootServicesEvent;\r
\r
-EFI_EVENT mGopScreenExitBootServicesEvent;\r
-\r
-GOP_MODE_DATA mGopModeData[] = {\r
- { 0, 0, 32, 0 }, // Filled in with user-spec'd resolution\r
- { 1024, 768, 32, 0 },\r
- { 800, 600, 32, 0 },\r
- { 640, 480, 32, 0 }\r
- };\r
+GOP_MODE_DATA mGopModeData[] = {\r
+ { 0, 0, 32, 0 }, // Filled in with user-spec'd resolution\r
+ { 1024, 768, 32, 0 },\r
+ { 800, 600, 32, 0 },\r
+ { 640, 480, 32, 0 }\r
+};\r
\r
STATIC\r
VOID\r
BhyveGopCompleteModeInfo (\r
- IN GOP_MODE_DATA *ModeData,\r
+ IN GOP_MODE_DATA *ModeData,\r
OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info\r
)\r
{\r
Info->Version = 0;\r
if (ModeData->ColorDepth == 8) {\r
- Info->PixelFormat = PixelBitMask;\r
- Info->PixelInformation.RedMask = PIXEL_RED_MASK;\r
- Info->PixelInformation.GreenMask = PIXEL_GREEN_MASK;\r
- Info->PixelInformation.BlueMask = PIXEL_BLUE_MASK;\r
+ Info->PixelFormat = PixelBitMask;\r
+ Info->PixelInformation.RedMask = PIXEL_RED_MASK;\r
+ Info->PixelInformation.GreenMask = PIXEL_GREEN_MASK;\r
+ Info->PixelInformation.BlueMask = PIXEL_BLUE_MASK;\r
Info->PixelInformation.ReservedMask = 0;\r
} else if (ModeData->ColorDepth == 24) {\r
- Info->PixelFormat = PixelBitMask;\r
- Info->PixelInformation.RedMask = PIXEL24_RED_MASK;\r
- Info->PixelInformation.GreenMask = PIXEL24_GREEN_MASK;\r
- Info->PixelInformation.BlueMask = PIXEL24_BLUE_MASK;\r
+ Info->PixelFormat = PixelBitMask;\r
+ Info->PixelInformation.RedMask = PIXEL24_RED_MASK;\r
+ Info->PixelInformation.GreenMask = PIXEL24_GREEN_MASK;\r
+ Info->PixelInformation.BlueMask = PIXEL24_BLUE_MASK;\r
Info->PixelInformation.ReservedMask = 0;\r
} else if (ModeData->ColorDepth == 32) {\r
- DEBUG ((DEBUG_INFO, "%dx%d PixelBlueGreenRedReserved8BitPerColor\n",\r
- ModeData->HorizontalResolution, ModeData->VerticalResolution));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%dx%d PixelBlueGreenRedReserved8BitPerColor\n",\r
+ ModeData->HorizontalResolution,\r
+ ModeData->VerticalResolution\r
+ ));\r
Info->PixelFormat = PixelBlueGreenRedReserved8BitPerColor;\r
}\r
+\r
Info->PixelsPerScanLine = Info->HorizontalResolution;\r
}\r
\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
Private = GOP_PRIVATE_DATA_FROM_THIS (This);\r
\r
- if (Info == NULL || SizeOfInfo == NULL || (UINTN) ModeNumber >= This->Mode->MaxMode) {\r
+ if ((Info == NULL) || (SizeOfInfo == NULL) || ((UINTN)ModeNumber >= This->Mode->MaxMode)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
*SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION);\r
\r
- ModeData = &Private->ModeData[ModeNumber];\r
- (*Info)->Version = 0;\r
+ ModeData = &Private->ModeData[ModeNumber];\r
+ (*Info)->Version = 0;\r
(*Info)->HorizontalResolution = ModeData->HorizontalResolution;\r
(*Info)->VerticalResolution = ModeData->VerticalResolution;\r
- (*Info)->PixelFormat = PixelBitMask;\r
- (*Info)->PixelsPerScanLine = (*Info)->HorizontalResolution;\r
- BhyveGopCompleteModeInfo(ModeData, *Info);\r
+ (*Info)->PixelFormat = PixelBitMask;\r
+ (*Info)->PixelsPerScanLine = (*Info)->HorizontalResolution;\r
+ BhyveGopCompleteModeInfo (ModeData, *Info);\r
return EFI_SUCCESS;\r
}\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
**/\r
\r
-FRAME_BUFFER_CONFIGURE *fbconf;\r
+FRAME_BUFFER_CONFIGURE *fbconf;\r
\r
EFI_STATUS\r
EFIAPI\r
IN UINT32 ModeNumber\r
)\r
{\r
- GOP_PRIVATE_DATA *Private;\r
- GOP_MODE_DATA *ModeData;\r
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL Fill;\r
+ GOP_PRIVATE_DATA *Private;\r
+ GOP_MODE_DATA *ModeData;\r
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL Fill;\r
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;\r
\r
- UINTN confsize = 0;\r
+ UINTN confsize = 0;\r
+\r
fbconf = NULL;\r
\r
Private = GOP_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (ModeNumber >= This->Mode->MaxMode) {\r
// Tell bhyve that we are switching out of vesa\r
- BhyveSetGraphicsMode(Private, 0, 0, 0);\r
+ BhyveSetGraphicsMode (Private, 0, 0, 0);\r
return EFI_UNSUPPORTED;\r
}\r
\r
DEBUG ((DEBUG_INFO, "BHYVE GopSetMode %d\n", ModeNumber));\r
\r
- ModeData = &Private->ModeData[ModeNumber];\r
- This->Mode->Mode = ModeNumber;\r
+ ModeData = &Private->ModeData[ModeNumber];\r
+ This->Mode->Mode = ModeNumber;\r
Private->GraphicsOutput.Mode->Info->HorizontalResolution = ModeData->HorizontalResolution;\r
- Private->GraphicsOutput.Mode->Info->VerticalResolution = ModeData->VerticalResolution;\r
- Private->GraphicsOutput.Mode->Info->PixelsPerScanLine = ModeData->HorizontalResolution;\r
+ Private->GraphicsOutput.Mode->Info->VerticalResolution = ModeData->VerticalResolution;\r
+ Private->GraphicsOutput.Mode->Info->PixelsPerScanLine = ModeData->HorizontalResolution;\r
\r
Info = This->Mode->Info;\r
- BhyveGopCompleteModeInfo(ModeData, Info);\r
+ BhyveGopCompleteModeInfo (ModeData, Info);\r
\r
This->Mode->Info->HorizontalResolution = ModeData->HorizontalResolution;\r
- This->Mode->Info->VerticalResolution = ModeData->VerticalResolution;\r
- This->Mode->SizeOfInfo = sizeof(EFI_GRAPHICS_OUTPUT_MODE_INFORMATION);\r
- This->Mode->FrameBufferBase = Private->GraphicsOutput.Mode->FrameBufferBase;\r
+ This->Mode->Info->VerticalResolution = ModeData->VerticalResolution;\r
+ This->Mode->SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION);\r
+ This->Mode->FrameBufferBase = Private->GraphicsOutput.Mode->FrameBufferBase;\r
\r
/*\r
This->Mode->FrameBufferSize = Info->HorizontalResolution * Info->VerticalResolution\r
This->Mode->FrameBufferSize = Private->FbSize;\r
DEBUG ((DEBUG_INFO, "BHYVE GOP FrameBufferBase: 0x%x, FrameBufferSize: 0x%x\n", This->Mode->FrameBufferBase, This->Mode->FrameBufferSize));\r
\r
- BhyveSetGraphicsMode(Private, (UINT16)ModeData->HorizontalResolution, (UINT16)ModeData->VerticalResolution, (UINT16)ModeData->ColorDepth);\r
-\r
- RETURN_STATUS ret = FrameBufferBltConfigure (\r
- (VOID*)(UINTN) This->Mode->FrameBufferBase,\r
- This->Mode->Info, fbconf, &confsize\r
- );\r
- if (ret == EFI_BUFFER_TOO_SMALL || ret == EFI_INVALID_PARAMETER) {\r
- fbconf = AllocatePool(confsize);\r
- ret = FrameBufferBltConfigure(\r
- (VOID*)(UINTN)This->Mode->FrameBufferBase,\r
- This->Mode->Info, fbconf, &confsize);\r
- ASSERT(ret == EFI_SUCCESS);\r
+ BhyveSetGraphicsMode (Private, (UINT16)ModeData->HorizontalResolution, (UINT16)ModeData->VerticalResolution, (UINT16)ModeData->ColorDepth);\r
+\r
+ RETURN_STATUS ret = FrameBufferBltConfigure (\r
+ (VOID *)(UINTN)This->Mode->FrameBufferBase,\r
+ This->Mode->Info,\r
+ fbconf,\r
+ &confsize\r
+ );\r
+\r
+ if ((ret == EFI_BUFFER_TOO_SMALL) || (ret == EFI_INVALID_PARAMETER)) {\r
+ fbconf = AllocatePool (confsize);\r
+ ret = FrameBufferBltConfigure (\r
+ (VOID *)(UINTN)This->Mode->FrameBufferBase,\r
+ This->Mode->Info,\r
+ fbconf,\r
+ &confsize\r
+ );\r
+ ASSERT (ret == EFI_SUCCESS);\r
}\r
\r
Fill.Red = 0;\r
return EFI_SUCCESS;\r
}\r
\r
-\r
-\r
/**\r
Blt a rectangle of pixels on the graphics screen. Blt stands for BLock Transfer.\r
\r
EFI_STATUS\r
EFIAPI\r
EmuGopBlt (\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
+ 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_TPL OriginalTPL;\r
- EFI_STATUS Status;\r
+ EFI_TPL OriginalTPL;\r
+ EFI_STATUS Status;\r
\r
if ((UINT32)BltOperation >= EfiGraphicsOutputBltOperationMax) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- if (Width == 0 || Height == 0) {\r
+ if ((Width == 0) || (Height == 0)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
OriginalTPL = gBS->RaiseTPL (TPL_NOTIFY);\r
\r
switch (BltOperation) {\r
- case EfiBltVideoToBltBuffer:\r
- case EfiBltBufferToVideo:\r
- case EfiBltVideoFill:\r
- case EfiBltVideoToVideo:\r
- Status = FrameBufferBlt (\r
- fbconf,\r
- BltBuffer,\r
- BltOperation,\r
- SourceX,\r
- SourceY,\r
- DestinationX,\r
- DestinationY,\r
- Width,\r
- Height,\r
- Delta\r
- );\r
- break;\r
-\r
- default:\r
- Status = EFI_INVALID_PARAMETER;\r
- ASSERT (FALSE);\r
+ case EfiBltVideoToBltBuffer:\r
+ case EfiBltBufferToVideo:\r
+ case EfiBltVideoFill:\r
+ case EfiBltVideoToVideo:\r
+ Status = FrameBufferBlt (\r
+ fbconf,\r
+ BltBuffer,\r
+ BltOperation,\r
+ SourceX,\r
+ SourceY,\r
+ DestinationX,\r
+ DestinationY,\r
+ Width,\r
+ Height,\r
+ Delta\r
+ );\r
+ break;\r
+\r
+ default:\r
+ Status = EFI_INVALID_PARAMETER;\r
+ ASSERT (FALSE);\r
}\r
\r
gBS->RestoreTPL (OriginalTPL);\r
return Status;\r
}\r
\r
-\r
//\r
// Construction and Destruction functions\r
//\r
\r
EFI_STATUS\r
EmuGopConstructor (\r
- GOP_PRIVATE_DATA *Private\r
+ GOP_PRIVATE_DATA *Private\r
)\r
{\r
// Set mode 0 to be the requested resolution\r
- mGopModeData[0].HorizontalResolution = PcdGet32 ( PcdVideoHorizontalResolution);\r
- mGopModeData[0].VerticalResolution = PcdGet32 ( PcdVideoVerticalResolution );\r
+ mGopModeData[0].HorizontalResolution = PcdGet32 (PcdVideoHorizontalResolution);\r
+ mGopModeData[0].VerticalResolution = PcdGet32 (PcdVideoVerticalResolution);\r
\r
Private->ModeData = mGopModeData;\r
\r
- Private->GraphicsOutput.QueryMode = EmuGopQuerytMode;\r
- Private->GraphicsOutput.SetMode = EmuGopSetMode;\r
- Private->GraphicsOutput.Blt = EmuGopBlt;\r
+ Private->GraphicsOutput.QueryMode = EmuGopQuerytMode;\r
+ Private->GraphicsOutput.SetMode = EmuGopSetMode;\r
+ Private->GraphicsOutput.Blt = EmuGopBlt;\r
\r
//\r
// Allocate buffer for Graphics Output Protocol mode information\r
if (Private->GraphicsOutput.Mode == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
Private->GraphicsOutput.Mode->Info = AllocatePool (sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION));\r
if (Private->GraphicsOutput.Mode->Info == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
-\r
DEBUG ((DEBUG_INFO, "BHYVE Gop Constructor\n"));\r
\r
- Private->GraphicsOutput.Mode->MaxMode = sizeof(mGopModeData) / sizeof(GOP_MODE_DATA);\r
+ Private->GraphicsOutput.Mode->MaxMode = sizeof (mGopModeData) / sizeof (GOP_MODE_DATA);\r
//\r
// Till now, we have no idea about the window size.\r
//\r
- Private->GraphicsOutput.Mode->Mode = GRAPHICS_OUTPUT_INVALID_MODE_NUMBER;\r
- Private->GraphicsOutput.Mode->Info->Version = 0;\r
+ Private->GraphicsOutput.Mode->Mode = GRAPHICS_OUTPUT_INVALID_MODE_NUMBER;\r
+ Private->GraphicsOutput.Mode->Info->Version = 0;\r
Private->GraphicsOutput.Mode->Info->HorizontalResolution = 0;\r
- Private->GraphicsOutput.Mode->Info->VerticalResolution = 0;\r
- Private->GraphicsOutput.Mode->Info->PixelFormat = PixelBitMask;\r
- Private->GraphicsOutput.Mode->SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION);\r
- Private->GraphicsOutput.Mode->FrameBufferBase = (EFI_PHYSICAL_ADDRESS) Private->FbAddr;\r
- Private->GraphicsOutput.Mode->FrameBufferSize = Private->FbSize;\r
+ Private->GraphicsOutput.Mode->Info->VerticalResolution = 0;\r
+ Private->GraphicsOutput.Mode->Info->PixelFormat = PixelBitMask;\r
+ Private->GraphicsOutput.Mode->SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION);\r
+ Private->GraphicsOutput.Mode->FrameBufferBase = (EFI_PHYSICAL_ADDRESS)Private->FbAddr;\r
+ Private->GraphicsOutput.Mode->FrameBufferSize = Private->FbSize;\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
-\r
EFI_STATUS\r
EmuGopDestructor (\r
- GOP_PRIVATE_DATA *Private\r
+ GOP_PRIVATE_DATA *Private\r
)\r
{\r
//\r
if (Private->GraphicsOutput.Mode->Info != NULL) {\r
FreePool (Private->GraphicsOutput.Mode->Info);\r
}\r
+\r
FreePool (Private->GraphicsOutput.Mode);\r
Private->GraphicsOutput.Mode = NULL;\r
}\r
return EFI_SUCCESS;\r
}\r
\r
-\r
VOID\r
EFIAPI\r
ShutdownGopEvent (\r
IN EFI_EVENT Event,\r
IN VOID *Context\r
)\r
+\r
/*++\r
\r
Routine Description:\r