+/**\r
+ Function to dump information about GOP.\r
+\r
+ This will allocate the return buffer from boot services pool.\r
+\r
+ @param[in] TheHandle The handle that has LoadedImage installed.\r
+ @param[in] Verbose TRUE for additional information, FALSE otherwise.\r
+\r
+ @retval A poitner to a string containing the information.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+GraphicsOutputProtocolDumpInformation(\r
+ IN CONST EFI_HANDLE TheHandle,\r
+ IN CONST BOOLEAN Verbose\r
+ )\r
+{\r
+ EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
+ EFI_STATUS Status;\r
+ CHAR16 *RetVal;\r
+ CHAR16 *Temp;\r
+ CHAR16 *Fmt;\r
+\r
+ if (!Verbose) {\r
+ return (CatSPrint(NULL, L"GraphicsOutput"));\r
+ }\r
+\r
+ Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_GOP_DUMP_MAIN), NULL);\r
+ RetVal = AllocateZeroPool (PcdGet16 (PcdShellPrintBufferSize));\r
+ if (Temp == NULL || RetVal == NULL) {\r
+ SHELL_FREE_NON_NULL(Temp);\r
+ SHELL_FREE_NON_NULL(RetVal);\r
+ return NULL;\r
+ }\r
+\r
+ Status = gBS->OpenProtocol (\r
+ TheHandle,\r
+ &gEfiGraphicsOutputProtocolGuid,\r
+ (VOID**)&GraphicsOutput,\r
+ gImageHandle,\r
+ NULL,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ SHELL_FREE_NON_NULL (Temp);\r
+ SHELL_FREE_NON_NULL (RetVal);\r
+ return NULL;\r
+ }\r
+\r
+ Fmt = ConvertPixelFormat(GraphicsOutput->Mode->Info->PixelFormat);\r
+\r
+ RetVal = CatSPrint(RetVal,\r
+ Temp,\r
+ GraphicsOutput->Mode->MaxMode,\r
+ GraphicsOutput->Mode->Mode,\r
+ GraphicsOutput->Mode->FrameBufferBase,\r
+ (UINT64)GraphicsOutput->Mode->FrameBufferSize,\r
+ (UINT64)GraphicsOutput->Mode->SizeOfInfo,\r
+ GraphicsOutput->Mode->Info->Version,\r
+ GraphicsOutput->Mode->Info->HorizontalResolution,\r
+ GraphicsOutput->Mode->Info->VerticalResolution,\r
+ Fmt,\r
+ GraphicsOutput->Mode->Info->PixelsPerScanLine,\r
+ GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.RedMask,\r
+ GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.GreenMask,\r
+ GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.BlueMask\r
+ );\r
+ \r
+ SHELL_FREE_NON_NULL(Temp);\r
+ SHELL_FREE_NON_NULL(Fmt);\r
+\r
+ return RetVal;\r
+}\r
+\r